briard 2.8.2 → 2.9.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/Gemfile.lock +30 -20
- data/briard.gemspec +1 -0
- data/lib/briard/metadata.rb +4 -2
- data/lib/briard/metadata_utils.rb +2 -0
- data/lib/briard/readers/datacite_reader.rb +1 -1
- data/lib/briard/readers/schema_org_reader.rb +24 -7
- data/lib/briard/schema_utils.rb +15 -0
- data/lib/briard/version.rb +1 -1
- data/resources/json-schema/briard_schema.json +462 -0
- data/spec/fixtures/crosscite.json +1 -1
- data/spec/fixtures/datacite.json +1 -1
- data/spec/fixtures/datacite_software.json +1 -1
- data/spec/fixtures/datacite_software_version.json +1 -1
- data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_schema_org_metadata/BlogPosting.yml +18 -18
- data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_schema_org_metadata/BlogPosting_with_new_DOI.yml +22 -22
- data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_schema_org_metadata/get_schema_org_metadata_front_matter/BlogPosting.yml +22 -22
- data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_schema_org_metadata/harvard_dataverse.yml +6 -6
- data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_schema_org_metadata/pangaea.yml +10 -10
- data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_schema_org_metadata/zenodo.yml +8 -8
- data/spec/fixtures/vcr_cassettes/Briard_Metadata/json_schema_errors/doi_not_found.yml +105 -0
- data/spec/fixtures/vcr_cassettes/Briard_Metadata/json_schema_errors/is_valid.yml +65 -0
- data/spec/fixtures/vcr_cassettes/Briard_Metadata/json_schema_valid_/is_valid.yml +65 -0
- data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_crossref/another_schema_org_from_front-matter.yml +22 -22
- data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_crossref/journal_article_from_datacite.yml +6 -6
- data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_crossref/posted_content.yml +9 -9
- data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_crossref/schema_org_from_another_science_blog.yml +9 -9
- data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_crossref/schema_org_from_front_matter.yml +22 -22
- data/spec/metadata_spec.rb +2 -0
- data/spec/readers/crossref_json_reader_spec.rb +1 -1
- data/spec/readers/datacite_json_reader_spec.rb +2 -2
- data/spec/readers/datacite_reader_spec.rb +36 -36
- data/spec/readers/npm_reader_spec.rb +3 -3
- data/spec/readers/schema_org_reader_spec.rb +26 -3
- data/spec/schema_utils_spec.rb +24 -0
- data/spec/writers/crossref_writer_spec.rb +1 -1
- data/spec/writers/datacite_writer_spec.rb +6 -6
- metadata +22 -2
@@ -43,7 +43,7 @@ describe Briard::Metadata, vcr: true do
|
|
43
43
|
{ 'subject' => 'mitochondrial genome' },
|
44
44
|
{ 'subject' => 'parasites' }])
|
45
45
|
expect(subject.publisher).to eq('Dryad')
|
46
|
-
expect(subject.agency).to eq('
|
46
|
+
expect(subject.agency).to eq('DataCite')
|
47
47
|
expect(subject.schema_version).to eq('http://datacite.org/schema/kernel-4')
|
48
48
|
end
|
49
49
|
|
@@ -78,7 +78,7 @@ describe Briard::Metadata, vcr: true do
|
|
78
78
|
'subject' => 'FOS: Computer and information sciences',
|
79
79
|
'subjectScheme' => 'Fields of Science and Technology (FOS)',
|
80
80
|
'valueUri' => 'http://www.oecd.org/science/inno/38235147.pdf' }])
|
81
|
-
expect(subject.agency).to eq('
|
81
|
+
expect(subject.agency).to eq('DataCite')
|
82
82
|
expect(subject.schema_version).to eq('http://datacite.org/schema/kernel-4')
|
83
83
|
end
|
84
84
|
|
@@ -101,7 +101,7 @@ describe Briard::Metadata, vcr: true do
|
|
101
101
|
'subjectScheme' => 'DDC' }])
|
102
102
|
expect(subject.publication_year).to eq('2013')
|
103
103
|
expect(subject.publisher).to eq('Schloss Dagstuhl - Leibniz-Zentrum fuer Informatik GmbH, Wadern/Saarbruecken, Germany')
|
104
|
-
expect(subject.agency).to eq('
|
104
|
+
expect(subject.agency).to eq('DataCite')
|
105
105
|
expect(subject.schema_version).to eq('http://datacite.org/schema/kernel-2.1')
|
106
106
|
end
|
107
107
|
|
@@ -163,7 +163,7 @@ describe Briard::Metadata, vcr: true do
|
|
163
163
|
expect(subject.sizes).to eq(['4 kB'])
|
164
164
|
expect(subject.formats).to eq(['application/xml'])
|
165
165
|
expect(subject.publisher).to eq('DataCite')
|
166
|
-
expect(subject.agency).to eq('
|
166
|
+
expect(subject.agency).to eq('DataCite')
|
167
167
|
expect(subject.schema_version).to eq('http://datacite.org/schema/kernel-4')
|
168
168
|
end
|
169
169
|
|
@@ -183,7 +183,7 @@ describe Briard::Metadata, vcr: true do
|
|
183
183
|
{ 'date' => '2016', 'dateType' => 'Issued' }])
|
184
184
|
expect(subject.publication_year).to eq('2016')
|
185
185
|
expect(subject.publisher).to eq('University of St Andrews')
|
186
|
-
expect(subject.agency).to eq('
|
186
|
+
expect(subject.agency).to eq('DataCite')
|
187
187
|
expect(subject.schema_version).to eq('http://datacite.org/schema/kernel-4')
|
188
188
|
end
|
189
189
|
|
@@ -206,7 +206,7 @@ describe Briard::Metadata, vcr: true do
|
|
206
206
|
expect(subject.sizes).to eq([])
|
207
207
|
expect(subject.subjects).to eq([{ 'subject' => 'environmental research' }])
|
208
208
|
expect(subject.publisher).to eq('EvK2 CNR Committee')
|
209
|
-
expect(subject.agency).to eq('
|
209
|
+
expect(subject.agency).to eq('DataCite')
|
210
210
|
expect(subject.schema_version).to eq('http://datacite.org/schema/kernel-2.2')
|
211
211
|
end
|
212
212
|
|
@@ -243,7 +243,7 @@ describe Briard::Metadata, vcr: true do
|
|
243
243
|
{ 'subject' => 'crossover experiment' },
|
244
244
|
{ 'subject' => 'hci' }])
|
245
245
|
expect(subject.publisher).to eq('Zenodo')
|
246
|
-
expect(subject.agency).to eq('
|
246
|
+
expect(subject.agency).to eq('DataCite')
|
247
247
|
expect(subject.schema_version).to eq('http://datacite.org/schema/kernel-4')
|
248
248
|
end
|
249
249
|
|
@@ -290,7 +290,7 @@ describe Briard::Metadata, vcr: true do
|
|
290
290
|
'subject' => 'FOS: Biological sciences',
|
291
291
|
'subjectScheme' => 'Fields of Science and Technology (FOS)' }
|
292
292
|
])
|
293
|
-
expect(subject.agency).to eq('
|
293
|
+
expect(subject.agency).to eq('DataCite')
|
294
294
|
expect(subject.schema_version).to eq('http://datacite.org/schema/kernel-4')
|
295
295
|
end
|
296
296
|
|
@@ -323,7 +323,7 @@ describe Briard::Metadata, vcr: true do
|
|
323
323
|
'subjectScheme' => 'Fields of Science and Technology (FOS)', 'schemeUri' => 'http://www.oecd.org/science/inno/38235147.pdf' },
|
324
324
|
{ 'subject' => '60412 Quantitative Genetics (incl. Disease and Trait Mapping Genetics)',
|
325
325
|
'subjectScheme' => 'FOR', 'schemeUri' => 'http://www.abs.gov.au/ausstats/abs@.nsf/0/6BB427AB9696C225CA2574180004463E' }])
|
326
|
-
expect(subject.agency).to eq('
|
326
|
+
expect(subject.agency).to eq('DataCite')
|
327
327
|
expect(subject.schema_version).to eq('http://datacite.org/schema/kernel-4')
|
328
328
|
end
|
329
329
|
|
@@ -385,7 +385,7 @@ describe Briard::Metadata, vcr: true do
|
|
385
385
|
{ 'subject' => 'data mining' },
|
386
386
|
{ 'subject' => 'statistical computing language r' },
|
387
387
|
{ 'subject' => 'funded research publications' }])
|
388
|
-
expect(subject.agency).to eq('
|
388
|
+
expect(subject.agency).to eq('DataCite')
|
389
389
|
expect(subject.schema_version).to eq('http://datacite.org/schema/kernel-4')
|
390
390
|
end
|
391
391
|
|
@@ -434,7 +434,7 @@ describe Briard::Metadata, vcr: true do
|
|
434
434
|
'funderName' => 'European Commission' }])
|
435
435
|
expect(subject.identifiers).to eq([{ 'identifier' => '123',
|
436
436
|
'identifierType' => 'Repository ID' }])
|
437
|
-
expect(subject.agency).to eq('
|
437
|
+
expect(subject.agency).to eq('DataCite')
|
438
438
|
expect(subject.schema_version).to eq('http://datacite.org/schema/kernel-4')
|
439
439
|
expect(subject.state).to eq('findable')
|
440
440
|
end
|
@@ -723,7 +723,7 @@ describe Briard::Metadata, vcr: true do
|
|
723
723
|
'http://www.rcuk.ac.uk/research/efficiency/researchadmin/harmonisation/',
|
724
724
|
'subject' => 'Materials Characterisation',
|
725
725
|
'subjectScheme' => 'RCUK Research Classifications' }])
|
726
|
-
expect(subject.agency).to eq('
|
726
|
+
expect(subject.agency).to eq('DataCite')
|
727
727
|
expect(subject.schema_version).to eq('http://datacite.org/schema/kernel-4')
|
728
728
|
end
|
729
729
|
|
@@ -752,7 +752,7 @@ describe Briard::Metadata, vcr: true do
|
|
752
752
|
'funderIdentifier' => 'https://doi.org/10.13039/501100000780',
|
753
753
|
'funderIdentifierType' => 'Crossref Funder ID',
|
754
754
|
'funderName' => 'European Commission' }])
|
755
|
-
expect(subject.agency).to eq('
|
755
|
+
expect(subject.agency).to eq('DataCite')
|
756
756
|
expect(subject.schema_version).to eq('http://datacite.org/schema/kernel-4')
|
757
757
|
end
|
758
758
|
|
@@ -777,7 +777,7 @@ describe Briard::Metadata, vcr: true do
|
|
777
777
|
expect(subject.funding_references.length).to eq(1)
|
778
778
|
expect(subject.funding_references.first).to eq('awardNumber' => 'проект № 170100728',
|
779
779
|
'funderName' => 'РФФИ')
|
780
|
-
expect(subject.agency).to eq('
|
780
|
+
expect(subject.agency).to eq('DataCite')
|
781
781
|
expect(subject.schema_version).to eq('http://datacite.org/schema/kernel-4')
|
782
782
|
end
|
783
783
|
|
@@ -804,7 +804,7 @@ describe Briard::Metadata, vcr: true do
|
|
804
804
|
expect(subject.related_identifiers.length).to eq(3)
|
805
805
|
expect(subject.related_identifiers.last).to eq('relatedIdentifier' => '10.5438/0000-00ss',
|
806
806
|
'relatedIdentifierType' => 'DOI', 'relationType' => 'IsPartOf')
|
807
|
-
expect(subject.agency).to eq('
|
807
|
+
expect(subject.agency).to eq('DataCite')
|
808
808
|
end
|
809
809
|
|
810
810
|
it 'Schema 4.1 from string' do
|
@@ -840,7 +840,7 @@ describe Briard::Metadata, vcr: true do
|
|
840
840
|
'rightsUri' => 'https://creativecommons.org/licenses/by-nd/2.0/legalcode',
|
841
841
|
'schemeUri' => 'https://spdx.org/licenses/' }])
|
842
842
|
expect(subject.publisher).to eq('Springer')
|
843
|
-
expect(subject.agency).to eq('
|
843
|
+
expect(subject.agency).to eq('DataCite')
|
844
844
|
expect(subject.schema_version).to eq('http://datacite.org/schema/kernel-4')
|
845
845
|
end
|
846
846
|
|
@@ -873,7 +873,7 @@ describe Briard::Metadata, vcr: true do
|
|
873
873
|
'rightsUri' => 'https://creativecommons.org/licenses/by-nd/2.0/legalcode',
|
874
874
|
'schemeUri' => 'https://spdx.org/licenses/' }])
|
875
875
|
expect(subject.publisher).to eq('Springer')
|
876
|
-
expect(subject.agency).to eq('
|
876
|
+
expect(subject.agency).to eq('DataCite')
|
877
877
|
expect(subject.schema_version).to eq('http://datacite.org/schema/kernel-4.0')
|
878
878
|
end
|
879
879
|
|
@@ -904,7 +904,7 @@ describe Briard::Metadata, vcr: true do
|
|
904
904
|
'rightsUri' => 'https://creativecommons.org/publicdomain/zero/1.0/legalcode',
|
905
905
|
'schemeUri' => 'https://spdx.org/licenses/' }])
|
906
906
|
expect(subject.publisher).to eq('Dryad Digital Repository')
|
907
|
-
expect(subject.agency).to eq('
|
907
|
+
expect(subject.agency).to eq('DataCite')
|
908
908
|
expect(subject.schema_version).to eq('http://datacite.org/schema/kernel-3')
|
909
909
|
end
|
910
910
|
|
@@ -937,7 +937,7 @@ describe Briard::Metadata, vcr: true do
|
|
937
937
|
'rightsUri' => 'https://creativecommons.org/licenses/by-nd/2.0/legalcode',
|
938
938
|
'schemeUri' => 'https://spdx.org/licenses/' }])
|
939
939
|
expect(subject.publisher).to eq('Springer')
|
940
|
-
expect(subject.agency).to eq('
|
940
|
+
expect(subject.agency).to eq('DataCite')
|
941
941
|
expect(subject.schema_version).to eq('http://datacite.org/schema/kernel-3.0')
|
942
942
|
end
|
943
943
|
|
@@ -965,7 +965,7 @@ describe Briard::Metadata, vcr: true do
|
|
965
965
|
expect(subject.related_identifiers.last).to eq('relatedIdentifier' => '10.5272/oldertestpub',
|
966
966
|
'relatedIdentifierType' => 'DOI', 'relationType' => 'IsPartOf')
|
967
967
|
expect(subject.publisher).to eq('Springer')
|
968
|
-
expect(subject.agency).to eq('
|
968
|
+
expect(subject.agency).to eq('DataCite')
|
969
969
|
expect(subject.schema_version).to eq('http://datacite.org/schema/kernel-2.2')
|
970
970
|
end
|
971
971
|
|
@@ -1005,7 +1005,7 @@ describe Briard::Metadata, vcr: true do
|
|
1005
1005
|
'rightsUri' => 'https://creativecommons.org/licenses/by-nd/2.0/legalcode',
|
1006
1006
|
'schemeUri' => 'https://spdx.org/licenses/' }])
|
1007
1007
|
expect(subject.publisher).to eq('Springer')
|
1008
|
-
expect(subject.agency).to eq('
|
1008
|
+
expect(subject.agency).to eq('DataCite')
|
1009
1009
|
end
|
1010
1010
|
|
1011
1011
|
it 'namespaced xml from string' do
|
@@ -1024,7 +1024,7 @@ describe Briard::Metadata, vcr: true do
|
|
1024
1024
|
{ 'date' => '2018-07-18', 'dateType' => 'Accepted' }, { 'date' => '2018', 'dateType' => 'Issued' }])
|
1025
1025
|
expect(subject.publication_year).to eq('2018')
|
1026
1026
|
expect(subject.publisher).to eq('nanoHUB')
|
1027
|
-
expect(subject.agency).to eq('
|
1027
|
+
expect(subject.agency).to eq('DataCite')
|
1028
1028
|
expect(subject.schema_version).to eq('http://datacite.org/schema/kernel-2.2')
|
1029
1029
|
end
|
1030
1030
|
|
@@ -1055,7 +1055,7 @@ describe Briard::Metadata, vcr: true do
|
|
1055
1055
|
expect(subject.titles).to eq([{ 'title' => 'CERES Level 3 Cloud Type Historgram Terra+Aqua HDF file - Edition4' }])
|
1056
1056
|
expect(subject.publication_year).to eq('2016')
|
1057
1057
|
expect(subject.publisher).to eq('NASA Langley Atmospheric Science Data Center DAAC')
|
1058
|
-
expect(subject.agency).to eq('
|
1058
|
+
expect(subject.agency).to eq('DataCite')
|
1059
1059
|
expect(subject.schema_version).to eq('http://datacite.org/schema/kernel-4')
|
1060
1060
|
end
|
1061
1061
|
|
@@ -1103,7 +1103,7 @@ describe Briard::Metadata, vcr: true do
|
|
1103
1103
|
{ 'date' => '1996', 'dateType' => 'Issued' }])
|
1104
1104
|
expect(subject.publication_year).to eq('1996')
|
1105
1105
|
expect(subject.publisher).to eq('GESIS Data Archive')
|
1106
|
-
expect(subject.agency).to eq('
|
1106
|
+
expect(subject.agency).to eq('DataCite')
|
1107
1107
|
expect(subject.schema_version).to eq('http://datacite.org/schema/kernel-4')
|
1108
1108
|
end
|
1109
1109
|
|
@@ -1129,7 +1129,7 @@ describe Briard::Metadata, vcr: true do
|
|
1129
1129
|
expect(subject.subjects).to eq([{ 'subject' => 'pv systems' },
|
1130
1130
|
{ 'subject' => 'off-grid applications' }])
|
1131
1131
|
expect(subject.publisher).to eq('WIP-Munich')
|
1132
|
-
expect(subject.agency).to eq('
|
1132
|
+
expect(subject.agency).to eq('DataCite')
|
1133
1133
|
expect(subject.schema_version).to eq('http://datacite.org/schema/kernel-2.2')
|
1134
1134
|
end
|
1135
1135
|
|
@@ -1165,7 +1165,7 @@ describe Briard::Metadata, vcr: true do
|
|
1165
1165
|
expect(subject.dates).to eq([{ 'date' => '2017', 'dateType' => 'Issued' }])
|
1166
1166
|
expect(subject.publication_year).to eq('2017')
|
1167
1167
|
expect(subject.publisher).to eq('Siemens AG')
|
1168
|
-
expect(subject.agency).to eq('
|
1168
|
+
expect(subject.agency).to eq('DataCite')
|
1169
1169
|
expect(subject.schema_version).to eq('http://datacite.org/schema/kernel-3')
|
1170
1170
|
end
|
1171
1171
|
|
@@ -1207,7 +1207,7 @@ describe Briard::Metadata, vcr: true do
|
|
1207
1207
|
{ 'date' => '2015', 'dateType' => 'Issued' }])
|
1208
1208
|
expect(subject.publication_year).to eq('2015')
|
1209
1209
|
expect(subject.publisher).to eq('Royal Netherlands Meteorological Institute (KNMI)')
|
1210
|
-
expect(subject.agency).to eq('
|
1210
|
+
expect(subject.agency).to eq('DataCite')
|
1211
1211
|
expect(subject.schema_version).to eq('http://datacite.org/schema/kernel-4')
|
1212
1212
|
end
|
1213
1213
|
|
@@ -1217,7 +1217,7 @@ describe Briard::Metadata, vcr: true do
|
|
1217
1217
|
expect(subject.valid?).to be false
|
1218
1218
|
expect(subject.id).to eq('https://doi.org/10.4124/05f6c379-dd68-4cdb-880d-33d3e9576d52/1')
|
1219
1219
|
expect(subject.doi).to eq('10.4124/05f6c379-dd68-4cdb-880d-33d3e9576d52/1')
|
1220
|
-
expect(subject.agency).to eq('
|
1220
|
+
expect(subject.agency).to eq('DataCite')
|
1221
1221
|
expect(subject.state).to eq('not_found')
|
1222
1222
|
end
|
1223
1223
|
|
@@ -1233,7 +1233,7 @@ describe Briard::Metadata, vcr: true do
|
|
1233
1233
|
expect(subject.dates).to eq([{ 'date' => '2018-01-12', 'dateType' => 'Issued' }])
|
1234
1234
|
expect(subject.publication_year).to eq('2018')
|
1235
1235
|
expect(subject.publisher).to eq('CaltechDATA')
|
1236
|
-
expect(subject.agency).to eq('
|
1236
|
+
expect(subject.agency).to eq('DataCite')
|
1237
1237
|
expect(subject.schema_version).to eq('http://datacite.org/schema/kernel-4')
|
1238
1238
|
expect(subject.state).to eq('findable')
|
1239
1239
|
end
|
@@ -1250,7 +1250,7 @@ describe Briard::Metadata, vcr: true do
|
|
1250
1250
|
expect(subject.dates).to eq([{ 'date' => '2018', 'dateType' => 'Issued' }])
|
1251
1251
|
expect(subject.publication_year).to eq('2018')
|
1252
1252
|
expect(subject.publisher).to eq('F1000 Research Limited')
|
1253
|
-
expect(subject.agency).to eq('
|
1253
|
+
expect(subject.agency).to eq('DataCite')
|
1254
1254
|
expect(subject.schema_version).to eq('http://datacite.org/schema/kernel-3')
|
1255
1255
|
expect(subject.state).to eq('findable')
|
1256
1256
|
end
|
@@ -1269,7 +1269,7 @@ describe Briard::Metadata, vcr: true do
|
|
1269
1269
|
expect(subject.titles).to eq([{ 'title' => 'Referee report. For: Gates - add article keywords to the metatags [version 2; referees: 1 approved]' }])
|
1270
1270
|
expect(subject.publication_year).to eq('2018')
|
1271
1271
|
expect(subject.publisher).to eq('Gates Open Research')
|
1272
|
-
expect(subject.agency).to eq('
|
1272
|
+
expect(subject.agency).to eq('DataCite')
|
1273
1273
|
expect(subject.schema_version).to eq('http://datacite.org/schema/kernel-3')
|
1274
1274
|
end
|
1275
1275
|
|
@@ -1371,7 +1371,7 @@ describe Briard::Metadata, vcr: true do
|
|
1371
1371
|
{ 'date' => '2009-10-01/2014-01-23', 'dateType' => 'Created' }])
|
1372
1372
|
expect(subject.publication_year).to eq('2014')
|
1373
1373
|
expect(subject.publisher).to eq('Deutsches Elektronen-Synchrotron, DESY, Hamburg')
|
1374
|
-
expect(subject.agency).to eq('
|
1374
|
+
expect(subject.agency).to eq('DataCite')
|
1375
1375
|
expect(subject.schema_version).to eq('http://datacite.org/schema/kernel-3')
|
1376
1376
|
end
|
1377
1377
|
|
@@ -1396,7 +1396,7 @@ describe Briard::Metadata, vcr: true do
|
|
1396
1396
|
expect(subject.funding_references.count).to eq(1)
|
1397
1397
|
expect(subject.funding_references.first).to eq('awardNumber' => 'проект № 170100728',
|
1398
1398
|
'funderName' => 'РФФИ')
|
1399
|
-
expect(subject.agency).to eq('
|
1399
|
+
expect(subject.agency).to eq('DataCite')
|
1400
1400
|
expect(subject.schema_version).to eq('http://datacite.org/schema/kernel-4')
|
1401
1401
|
end
|
1402
1402
|
|
@@ -1507,7 +1507,7 @@ describe Briard::Metadata, vcr: true do
|
|
1507
1507
|
'title' => 'Meteo measurements at the Sand Motor' }])
|
1508
1508
|
expect(subject.publication_year).to eq('2017')
|
1509
1509
|
expect(subject.publisher).to eq('4TU.Centre for Research Data')
|
1510
|
-
expect(subject.agency).to eq('
|
1510
|
+
expect(subject.agency).to eq('DataCite')
|
1511
1511
|
expect(subject.schema_version).to eq('http://datacite.org/schema/kernel-4')
|
1512
1512
|
expect(subject.geo_locations.first['geoLocationPlace']).to eq('Zandmotor, sand suppletion area on the Dutch coast.')
|
1513
1513
|
expect(subject.geo_locations.first['geoLocationPolygon'].first).to eq('polygonPoint' => {
|
@@ -1579,7 +1579,7 @@ describe Briard::Metadata, vcr: true do
|
|
1579
1579
|
}
|
1580
1580
|
])
|
1581
1581
|
expect(subject.publisher).to eq('DataCite')
|
1582
|
-
expect(subject.agency).to eq('
|
1582
|
+
expect(subject.agency).to eq('DataCite')
|
1583
1583
|
expect(subject.schema_version).to eq('http://datacite.org/schema/kernel-4')
|
1584
1584
|
expect(subject.related_items.last).to eq(
|
1585
1585
|
{
|
@@ -1773,7 +1773,7 @@ describe Briard::Metadata, vcr: true do
|
|
1773
1773
|
}
|
1774
1774
|
])
|
1775
1775
|
expect(subject.publisher).to eq('GigaScience Database')
|
1776
|
-
expect(subject.agency).to eq('
|
1776
|
+
expect(subject.agency).to eq('DataCite')
|
1777
1777
|
expect(subject.schema_version).to eq('http://datacite.org/schema/kernel-4')
|
1778
1778
|
end
|
1779
1779
|
|
@@ -16,7 +16,7 @@ describe Briard::Metadata, vcr: true do
|
|
16
16
|
context 'get npm metadata' do
|
17
17
|
it 'minimal' do
|
18
18
|
expect(subject.valid?).to be false
|
19
|
-
expect(subject.errors.first).to
|
19
|
+
expect(subject.errors.first).to eq("root is missing required keys: id, publisher, publication_year")
|
20
20
|
# expect(subject.identifiers).to eq([{"identifier"=>"https://doi.org/10.5438/4k3m-nyvg", "identifierType"=>"DOI"}])
|
21
21
|
# expect(subject.url).to eq("https://blog.datacite.org/eating-your-own-dog-food")
|
22
22
|
expect(subject.types).to eq('bibtex' => 'misc', 'citeproc' => 'article',
|
@@ -34,7 +34,7 @@ describe Briard::Metadata, vcr: true do
|
|
34
34
|
input = "#{fixture_path}cit_package.json"
|
35
35
|
subject = described_class.new(input: input, from: 'npm')
|
36
36
|
expect(subject.valid?).to be false
|
37
|
-
expect(subject.errors.first).to
|
37
|
+
expect(subject.errors.first).to eq("root is missing required keys: id, publisher, publication_year")
|
38
38
|
# expect(subject.identifiers).to eq([{"identifier"=>"https://doi.org/10.5438/4k3m-nyvg", "identifierType"=>"DOI"}])
|
39
39
|
# expect(subject.url).to eq("https://blog.datacite.org/eating-your-own-dog-food")
|
40
40
|
expect(subject.types).to eq('bibtex' => 'misc', 'citeproc' => 'article',
|
@@ -52,7 +52,7 @@ describe Briard::Metadata, vcr: true do
|
|
52
52
|
input = "#{fixture_path}edam_package.json"
|
53
53
|
subject = described_class.new(input: input, from: 'npm')
|
54
54
|
expect(subject.valid?).to be false
|
55
|
-
expect(subject.errors.first).to
|
55
|
+
expect(subject.errors.first).to eq("root is missing required keys: id, publisher, publication_year")
|
56
56
|
# expect(subject.identifiers).to eq([{"identifier"=>"https://doi.org/10.5438/4k3m-nyvg", "identifierType"=>"DOI"}])
|
57
57
|
# expect(subject.url).to eq("https://blog.datacite.org/eating-your-own-dog-food")
|
58
58
|
expect(subject.types).to eq('bibtex' => 'misc', 'citeproc' => 'article',
|
@@ -95,9 +95,8 @@ describe Briard::Metadata, vcr: true do
|
|
95
95
|
it 'zenodo' do
|
96
96
|
input = 'https://www.zenodo.org/record/1196821'
|
97
97
|
subject = described_class.new(input: input, from: 'schema_org')
|
98
|
-
expect(subject.valid?).to be
|
98
|
+
expect(subject.valid?).to be true
|
99
99
|
expect(subject.language).to eq('eng')
|
100
|
-
expect(subject.errors).to eq("49:0: ERROR: Element '{http://datacite.org/schema/kernel-4}publisher': [facet 'minLength'] The value has a length of '0'; this underruns the allowed minimum length of '1'.")
|
101
100
|
expect(subject.id).to eq('https://doi.org/10.5281/zenodo.1196821')
|
102
101
|
expect(subject.doi).to eq('10.5281/zenodo.1196821')
|
103
102
|
expect(subject.url).to eq('https://zenodo.org/record/1196821')
|
@@ -108,7 +107,7 @@ describe Briard::Metadata, vcr: true do
|
|
108
107
|
expect(subject.creators.first).to eq('name' => 'Staib, Matthias',
|
109
108
|
'nameIdentifiers' => [{ 'nameIdentifier' => 'https://orcid.org/0000-0001-9688-838X', 'nameIdentifierScheme' => 'ORCID', 'schemeUri' => 'https://orcid.org' }],
|
110
109
|
'nameType' => 'Personal', 'givenName' => 'Matthias', 'familyName' => 'Staib', 'affiliation' => [{ 'name' => 'University of Zurich, Zurich, Switzerland' }])
|
111
|
-
expect(subject.publisher
|
110
|
+
expect(subject.publisher).to eq('Zenodo')
|
112
111
|
expect(subject.publication_year).to eq('2018')
|
113
112
|
expect(subject.subjects).to eq([{ 'subject' => 'pupil size response' },
|
114
113
|
{ 'subject' => 'skin conductance response' },
|
@@ -174,6 +173,30 @@ describe Briard::Metadata, vcr: true do
|
|
174
173
|
{ 'subject' => 'ankylosing spondylitis' }])
|
175
174
|
end
|
176
175
|
|
176
|
+
it 'upstream blog' do
|
177
|
+
input = 'https://upstream.force11.org/elife-reviewed-preprints-interview-with-fiona-hutton'
|
178
|
+
subject = described_class.new(input: input, from: 'schema_org')
|
179
|
+
expect(subject.valid?).to be true
|
180
|
+
expect(subject.id).to eq('https://doi.org/10.54900/8d7emer-rm2pg72')
|
181
|
+
expect(subject.doi).to eq('10.54900/8d7emer-rm2pg72')
|
182
|
+
expect(subject.types).to eq('bibtex' => 'article', 'citeproc' => 'article-newspaper',
|
183
|
+
'resourceTypeGeneral' => 'Preprint', 'ris' => 'GEN', 'schemaOrg' => 'Article')
|
184
|
+
expect(subject.titles).to eq([{ 'title' => 'eLife Reviewed Preprints: Interview with Fiona Hutton' }])
|
185
|
+
expect(subject.container).to eq('identifier' => 'https://upstream.force11.org/',
|
186
|
+
'identifierType' => 'URL', 'title' => 'Upstream', 'type' => 'Blog')
|
187
|
+
expect(subject.creators.size).to eq(2)
|
188
|
+
expect(subject.creators.first).to eq("familyName"=>"Hutton",
|
189
|
+
"givenName" => "Fiona",
|
190
|
+
"name" => "Hutton, Fiona",
|
191
|
+
"nameType" => "Personal")
|
192
|
+
expect(subject.subjects).to eq([{ 'subject' => 'interviews' }])
|
193
|
+
expect(subject.publisher).to eq('Upstream')
|
194
|
+
expect(subject.dates).to eq([{ 'date' => '2022-11-15T10:29:38Z', 'dateType' => 'Issued' },
|
195
|
+
{ 'date' => '2023-01-11T22:58:48Z', 'dateType' => 'Updated' }])
|
196
|
+
expect(subject.publication_year).to eq('2022')
|
197
|
+
expect(subject.rights_list).to eq([{"rights"=>"Creative Commons Attribution 4.0 International", "rightsUri"=>"https://creativecommons.org/licenses/by/4.0/legalcode", "rightsIdentifier"=>"cc-by-4.0", "rightsIdentifierScheme"=>"SPDX", "schemeUri"=>"https://spdx.org/licenses/"}])
|
198
|
+
end
|
199
|
+
|
177
200
|
# TODO: check 403 status in DOI resolver
|
178
201
|
# it "harvard dataverse via identifiers.org" do
|
179
202
|
# input = "https://identifiers.org/doi/10.7910/DVN/NJ7XSO"
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe Briard::Metadata, vcr: true do
|
6
|
+
subject { described_class.new(input: input, from: 'crossref') }
|
7
|
+
|
8
|
+
let(:input) { 'https://doi.org/10.1101/097196' }
|
9
|
+
|
10
|
+
context 'json_schema_errors' do
|
11
|
+
it 'is_valid' do
|
12
|
+
response = subject.json_schema_errors
|
13
|
+
expect(response).to be_nil
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'no creator' do
|
17
|
+
input = "#{fixture_path}datacite_missing_creator.xml"
|
18
|
+
subject = described_class.new(input: input, regenerate: true)
|
19
|
+
expect(subject.creators).to be_empty
|
20
|
+
expect(subject.valid?).to be false
|
21
|
+
expect(subject.json_schema_errors).to be nil
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -138,7 +138,7 @@ describe Briard::Metadata, vcr: true do
|
|
138
138
|
'schemeUri' => 'https://orcid.org' }],
|
139
139
|
'nameType' => 'Personal' }])
|
140
140
|
expect(subject.subjects).to eq([])
|
141
|
-
expect(subject.container).to eq(
|
141
|
+
expect(subject.container).to eq("identifier"=>"https://www.polyneme.xyz", "identifierType"=>"URL", "type"=>"Blog")
|
142
142
|
expect(subject.language).to eq('en-US')
|
143
143
|
expect(subject.dates).to eq([{ 'date' => '2022-10-21', 'dateType' => 'Issued' },
|
144
144
|
{ 'date' => '2022-10-21', 'dateType' => 'Created' },
|
@@ -187,7 +187,7 @@ describe Briard::Metadata, vcr: true do
|
|
187
187
|
expect(subject.publication_year).to eq('2015')
|
188
188
|
expect(subject.version_info).to eq('v0.3.2')
|
189
189
|
expect(subject.publisher).to eq('Zenodo')
|
190
|
-
expect(subject.agency).to eq('
|
190
|
+
expect(subject.agency).to eq('DataCite')
|
191
191
|
expect(subject.schema_version).to eq('http://datacite.org/schema/kernel-4')
|
192
192
|
expect(subject.datacite).to include('<version>v0.3.2</version>')
|
193
193
|
end
|
@@ -216,7 +216,7 @@ describe Briard::Metadata, vcr: true do
|
|
216
216
|
{ 'schemeUri' => 'http://www.oecd.org/science/inno/38235147.pdf',
|
217
217
|
'subject' => 'FOS: Computer and information sciences',
|
218
218
|
'subjectScheme' => 'Fields of Science and Technology (FOS)' }])
|
219
|
-
expect(subject.agency).to eq('
|
219
|
+
expect(subject.agency).to eq('DataCite')
|
220
220
|
expect(subject.schema_version).to eq('http://datacite.org/schema/kernel-3')
|
221
221
|
expect(subject.datacite).to end_with('</resource>')
|
222
222
|
end
|
@@ -245,7 +245,7 @@ describe Briard::Metadata, vcr: true do
|
|
245
245
|
{ 'schemeUri' => 'http://www.oecd.org/science/inno/38235147.pdf',
|
246
246
|
'subject' => 'FOS: Computer and information sciences',
|
247
247
|
'subjectScheme' => 'Fields of Science and Technology (FOS)' }])
|
248
|
-
expect(subject.agency).to eq('
|
248
|
+
expect(subject.agency).to eq('DataCite')
|
249
249
|
expect(subject.schema_version).to eq('http://datacite.org/schema/kernel-3')
|
250
250
|
expect(subject.datacite).to end_with('</resource>')
|
251
251
|
end
|
@@ -273,7 +273,7 @@ describe Briard::Metadata, vcr: true do
|
|
273
273
|
expect(subject.related_identifiers.last).to eq('relatedIdentifier' => '10.1371/journal.ppat.1000446',
|
274
274
|
'relatedIdentifierType' => 'DOI', 'relationType' => 'IsCitedBy')
|
275
275
|
expect(subject.publisher).to eq('Dryad')
|
276
|
-
expect(subject.agency).to eq('
|
276
|
+
expect(subject.agency).to eq('DataCite')
|
277
277
|
expect(subject.schema_version).to eq('http://datacite.org/schema/kernel-4')
|
278
278
|
|
279
279
|
datacite = Maremma.from_xml(subject.datacite).fetch('resource', {})
|
@@ -301,7 +301,7 @@ describe Briard::Metadata, vcr: true do
|
|
301
301
|
{ 'date' => '2016-03-14T17:02:02Z', 'dateType' => 'Available' }, { 'date' => '2013', 'dateType' => 'Issued' }])
|
302
302
|
expect(subject.publication_year).to eq('2013')
|
303
303
|
expect(subject.publisher).to eq('UC Merced')
|
304
|
-
expect(subject.agency).to eq('
|
304
|
+
expect(subject.agency).to eq('DataCite')
|
305
305
|
expect(subject.schema_version).to eq('http://datacite.org/schema/kernel-4')
|
306
306
|
|
307
307
|
datacite = Maremma.from_xml(subject.datacite).fetch('resource', {})
|
@@ -315,7 +315,7 @@ describe Briard::Metadata, vcr: true do
|
|
315
315
|
expect(subject.valid?).to be false
|
316
316
|
expect(subject.id).to eq('https://doi.org/10.4124/05f6c379-dd68-4cdb-880d-33d3e9576d52/1')
|
317
317
|
expect(subject.doi).to eq('10.4124/05f6c379-dd68-4cdb-880d-33d3e9576d52/1')
|
318
|
-
expect(subject.agency).to eq('
|
318
|
+
expect(subject.agency).to eq('DataCite')
|
319
319
|
expect(subject.state).to eq('not_found')
|
320
320
|
datacite = Maremma.from_xml(subject.datacite).fetch('resource', {})
|
321
321
|
expect(datacite['identifier']).to eq('identifierType' => 'DOI',
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: briard
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.9.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Martin Fenner
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-01-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -290,6 +290,20 @@ dependencies:
|
|
290
290
|
- - "~>"
|
291
291
|
- !ruby/object:Gem::Version
|
292
292
|
version: 0.3.0
|
293
|
+
- !ruby/object:Gem::Dependency
|
294
|
+
name: json_schemer
|
295
|
+
requirement: !ruby/object:Gem::Requirement
|
296
|
+
requirements:
|
297
|
+
- - "~>"
|
298
|
+
- !ruby/object:Gem::Version
|
299
|
+
version: 0.2.23
|
300
|
+
type: :runtime
|
301
|
+
prerelease: false
|
302
|
+
version_requirements: !ruby/object:Gem::Requirement
|
303
|
+
requirements:
|
304
|
+
- - "~>"
|
305
|
+
- !ruby/object:Gem::Version
|
306
|
+
version: 0.2.23
|
293
307
|
- !ruby/object:Gem::Dependency
|
294
308
|
name: loofah
|
295
309
|
requirement: !ruby/object:Gem::Requirement
|
@@ -747,6 +761,7 @@ files:
|
|
747
761
|
- lib/briard/readers/npm_reader.rb
|
748
762
|
- lib/briard/readers/ris_reader.rb
|
749
763
|
- lib/briard/readers/schema_org_reader.rb
|
764
|
+
- lib/briard/schema_utils.rb
|
750
765
|
- lib/briard/string.rb
|
751
766
|
- lib/briard/utils.rb
|
752
767
|
- lib/briard/version.rb
|
@@ -790,6 +805,7 @@ files:
|
|
790
805
|
- resources/datacite-relationType-v4.xsd
|
791
806
|
- resources/datacite-resourceType-v4.xsd
|
792
807
|
- resources/datacite-titleType-v4.xsd
|
808
|
+
- resources/json-schema/briard_schema.json
|
793
809
|
- resources/kernel-2.1/include/datacite-contributorType-v1.1.xsd
|
794
810
|
- resources/kernel-2.1/include/datacite-contributorType-v2.xsd
|
795
811
|
- resources/kernel-2.1/include/datacite-dateType-v1.1.xsd
|
@@ -1289,6 +1305,9 @@ files:
|
|
1289
1305
|
- spec/fixtures/vcr_cassettes/Briard_Metadata/is_personal_name_/has_no_info.yml
|
1290
1306
|
- spec/fixtures/vcr_cassettes/Briard_Metadata/is_personal_name_/has_orcid_id.yml
|
1291
1307
|
- spec/fixtures/vcr_cassettes/Briard_Metadata/is_personal_name_/has_type_organization.yml
|
1308
|
+
- spec/fixtures/vcr_cassettes/Briard_Metadata/json_schema_errors/doi_not_found.yml
|
1309
|
+
- spec/fixtures/vcr_cassettes/Briard_Metadata/json_schema_errors/is_valid.yml
|
1310
|
+
- spec/fixtures/vcr_cassettes/Briard_Metadata/json_schema_valid_/is_valid.yml
|
1292
1311
|
- spec/fixtures/vcr_cassettes/Briard_Metadata/jsonlint/missing_comma.yml
|
1293
1312
|
- spec/fixtures/vcr_cassettes/Briard_Metadata/jsonlint/nil.yml
|
1294
1313
|
- spec/fixtures/vcr_cassettes/Briard_Metadata/jsonlint/overlapping_keys.yml
|
@@ -1501,6 +1520,7 @@ files:
|
|
1501
1520
|
- spec/readers/npm_reader_spec.rb
|
1502
1521
|
- spec/readers/ris_reader_spec.rb
|
1503
1522
|
- spec/readers/schema_org_reader_spec.rb
|
1523
|
+
- spec/schema_utils_spec.rb
|
1504
1524
|
- spec/spec_helper.rb
|
1505
1525
|
- spec/utils_spec.rb
|
1506
1526
|
- spec/writers/bibtex_writer_spec.rb
|