briard 2.8.2 → 2.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|