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.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +4 -0
  3. data/Gemfile.lock +30 -20
  4. data/briard.gemspec +1 -0
  5. data/lib/briard/metadata.rb +4 -2
  6. data/lib/briard/metadata_utils.rb +2 -0
  7. data/lib/briard/readers/datacite_reader.rb +1 -1
  8. data/lib/briard/readers/schema_org_reader.rb +24 -7
  9. data/lib/briard/schema_utils.rb +15 -0
  10. data/lib/briard/version.rb +1 -1
  11. data/resources/json-schema/briard_schema.json +462 -0
  12. data/spec/fixtures/crosscite.json +1 -1
  13. data/spec/fixtures/datacite.json +1 -1
  14. data/spec/fixtures/datacite_software.json +1 -1
  15. data/spec/fixtures/datacite_software_version.json +1 -1
  16. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_schema_org_metadata/BlogPosting.yml +18 -18
  17. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_schema_org_metadata/BlogPosting_with_new_DOI.yml +22 -22
  18. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_schema_org_metadata/get_schema_org_metadata_front_matter/BlogPosting.yml +22 -22
  19. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_schema_org_metadata/harvard_dataverse.yml +6 -6
  20. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_schema_org_metadata/pangaea.yml +10 -10
  21. data/spec/fixtures/vcr_cassettes/Briard_Metadata/get_schema_org_metadata/zenodo.yml +8 -8
  22. data/spec/fixtures/vcr_cassettes/Briard_Metadata/json_schema_errors/doi_not_found.yml +105 -0
  23. data/spec/fixtures/vcr_cassettes/Briard_Metadata/json_schema_errors/is_valid.yml +65 -0
  24. data/spec/fixtures/vcr_cassettes/Briard_Metadata/json_schema_valid_/is_valid.yml +65 -0
  25. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_crossref/another_schema_org_from_front-matter.yml +22 -22
  26. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_crossref/journal_article_from_datacite.yml +6 -6
  27. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_crossref/posted_content.yml +9 -9
  28. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_crossref/schema_org_from_another_science_blog.yml +9 -9
  29. data/spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_crossref/schema_org_from_front_matter.yml +22 -22
  30. data/spec/metadata_spec.rb +2 -0
  31. data/spec/readers/crossref_json_reader_spec.rb +1 -1
  32. data/spec/readers/datacite_json_reader_spec.rb +2 -2
  33. data/spec/readers/datacite_reader_spec.rb +36 -36
  34. data/spec/readers/npm_reader_spec.rb +3 -3
  35. data/spec/readers/schema_org_reader_spec.rb +26 -3
  36. data/spec/schema_utils_spec.rb +24 -0
  37. data/spec/writers/crossref_writer_spec.rb +1 -1
  38. data/spec/writers/datacite_writer_spec.rb +6 -6
  39. 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('datacite')
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('datacite')
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('datacite')
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('datacite')
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('datacite')
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('datacite')
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('datacite')
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('datacite')
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('datacite')
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('datacite')
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('datacite')
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('datacite')
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('datacite')
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('datacite')
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('datacite')
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('datacite')
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('datacite')
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('datacite')
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('datacite')
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('datacite')
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('datacite')
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('datacite')
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('datacite')
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('datacite')
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('datacite')
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('datacite')
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('datacite')
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('datacite')
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('datacite')
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('datacite')
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('datacite')
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('datacite')
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('datacite')
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('datacite')
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('datacite')
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('datacite')
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 start_with("3:0: ERROR: Element '{http://datacite.org/schema/kernel-4}identifier'")
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 start_with("3:0: ERROR: Element '{http://datacite.org/schema/kernel-4}identifier'")
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 start_with("3:0: ERROR: Element '{http://datacite.org/schema/kernel-4}identifier'")
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 false
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.nil?).to be(true)
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('type' => 'Blog')
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('datacite')
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('datacite')
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('datacite')
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('datacite')
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('datacite')
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('datacite')
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.8.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: 2022-11-23 00:00:00.000000000 Z
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