bolognese 1.10.0 → 2.3.3

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 (106) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/build.yml +0 -14
  3. data/.github/workflows/ci.yml +1 -1
  4. data/.github/workflows/release.yml +2 -12
  5. data/CHANGELOG.md +2 -2
  6. data/Gemfile.lock +69 -53
  7. data/bolognese.gemspec +6 -4
  8. data/lib/bolognese/author_utils.rb +17 -4
  9. data/lib/bolognese/datacite_utils.rb +19 -11
  10. data/lib/bolognese/metadata.rb +1 -1
  11. data/lib/bolognese/metadata_utils.rb +3 -2
  12. data/lib/bolognese/readers/bibtex_reader.rb +2 -2
  13. data/lib/bolognese/readers/citeproc_reader.rb +7 -1
  14. data/lib/bolognese/readers/codemeta_reader.rb +2 -2
  15. data/lib/bolognese/readers/crosscite_reader.rb +4 -1
  16. data/lib/bolognese/readers/crossref_reader.rb +40 -7
  17. data/lib/bolognese/readers/datacite_json_reader.rb +4 -1
  18. data/lib/bolognese/readers/datacite_reader.rb +25 -9
  19. data/lib/bolognese/readers/npm_reader.rb +1 -1
  20. data/lib/bolognese/readers/ris_reader.rb +2 -2
  21. data/lib/bolognese/readers/schema_org_reader.rb +27 -4
  22. data/lib/bolognese/utils.rb +36 -14
  23. data/lib/bolognese/version.rb +1 -1
  24. data/lib/bolognese/writers/bibtex_writer.rb +1 -1
  25. data/lib/bolognese/writers/codemeta_writer.rb +1 -1
  26. data/lib/bolognese/writers/csv_writer.rb +1 -1
  27. data/lib/bolognese/writers/datacite_json_writer.rb +3 -1
  28. data/lib/bolognese/writers/jats_writer.rb +6 -3
  29. data/lib/bolognese/writers/ris_writer.rb +2 -2
  30. data/lib/bolognese/writers/schema_org_writer.rb +6 -2
  31. data/resources/kernel-4/include/datacite-contributorType-v4.xsd +3 -1
  32. data/resources/kernel-4/include/datacite-dateType-v4.xsd +3 -1
  33. data/resources/kernel-4/include/datacite-relatedIdentifierType-v4.xsd +5 -2
  34. data/resources/kernel-4/include/datacite-relationType-v4.xsd +9 -3
  35. data/resources/kernel-4/include/datacite-resourceType-v4.xsd +7 -1
  36. data/resources/kernel-4/include/datacite-titleType-v4.xsd +1 -1
  37. data/resources/kernel-4/metadata.xsd +12 -7
  38. data/resources/kernel-4.5/include/datacite-contributorType-v4.xsd +35 -0
  39. data/resources/kernel-4.5/include/datacite-dateType-v4.xsd +25 -0
  40. data/resources/kernel-4.5/include/datacite-descriptionType-v4.xsd +19 -0
  41. data/resources/kernel-4.5/include/datacite-funderIdentifierType-v4.xsd +16 -0
  42. data/resources/kernel-4.5/include/datacite-nameType-v4.xsd +10 -0
  43. data/resources/kernel-4.5/include/datacite-numberType-v4.xsd +12 -0
  44. data/resources/kernel-4.5/include/datacite-relatedIdentifierType-v4.xsd +34 -0
  45. data/resources/kernel-4.5/include/datacite-relationType-v4.xsd +53 -0
  46. data/resources/kernel-4.5/include/datacite-resourceType-v4.xsd +45 -0
  47. data/resources/kernel-4.5/include/datacite-titleType-v4.xsd +14 -0
  48. data/resources/kernel-4.5/include/xml.xsd +286 -0
  49. data/resources/kernel-4.5/metadata.xsd +711 -0
  50. data/resources/kernel-4.6/include/datacite-contributorType-v4.xsd +37 -0
  51. data/resources/kernel-4.6/include/datacite-dateType-v4.xsd +27 -0
  52. data/resources/kernel-4.6/include/datacite-descriptionType-v4.xsd +19 -0
  53. data/resources/kernel-4.6/include/datacite-funderIdentifierType-v4.xsd +16 -0
  54. data/resources/kernel-4.6/include/datacite-nameType-v4.xsd +10 -0
  55. data/resources/kernel-4.6/include/datacite-numberType-v4.xsd +12 -0
  56. data/resources/kernel-4.6/include/datacite-relatedIdentifierType-v4.xsd +37 -0
  57. data/resources/kernel-4.6/include/datacite-relationType-v4.xsd +57 -0
  58. data/resources/kernel-4.6/include/datacite-resourceType-v4.xsd +49 -0
  59. data/resources/kernel-4.6/include/datacite-titleType-v4.xsd +14 -0
  60. data/resources/kernel-4.6/include/xml.xsd +286 -0
  61. data/resources/kernel-4.6/metadata.xsd +712 -0
  62. data/spec/author_utils_spec.rb +59 -6
  63. data/spec/datacite_utils_spec.rb +156 -2
  64. data/spec/fixtures/citeproc.json +7 -1
  65. data/spec/fixtures/crossref_schema_4.6_values.xml +183 -0
  66. data/spec/fixtures/datacite-example-ROR-nameIdentifiers.xml +24 -1
  67. data/spec/fixtures/datacite-example-full-v4.5.xml +255 -0
  68. data/spec/fixtures/datacite-example-full-v4.6.xml +114 -0
  69. data/spec/fixtures/datacite-example-relateditems-with-attributes.xml +61 -0
  70. data/spec/fixtures/datacite-seriesinformation.xml +7 -2
  71. data/spec/fixtures/datacite-xml-lang.xml +1 -1
  72. data/spec/fixtures/datacite.json +9 -3
  73. data/spec/fixtures/datacite_blank_name_identifier.xml +22 -0
  74. data/spec/fixtures/datacite_blank_publisher.xml +18 -0
  75. data/spec/fixtures/datacite_journal_article.xml +64 -0
  76. data/spec/fixtures/schema_org.json +1 -0
  77. data/spec/fixtures/schema_org_4.6_attributes.json +108 -0
  78. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_contributors_Translator/supports_Translator_contributorType.yml +71 -0
  79. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_dates_with_Coverage/inserts_date_with_dateType_Coverage.yml +71 -0
  80. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_related_identifiers_CSTR/supports_CSTR_relatedIdentifierType.yml +71 -0
  81. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_related_identifiers_HasTranslation/supports_HasTranslation_relationType.yml +71 -0
  82. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_related_identifiers_RRID/supports_RRID_relatedIdentifierType.yml +71 -0
  83. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_resource_type_with_Award/supports_Award_as_resourceTypeGeneral.yml +71 -0
  84. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_resource_type_with_Project/supports_Project_as_resourceTypeGeneral.yml +71 -0
  85. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_subjects/insert.yml +32 -14
  86. data/spec/readers/bibtex_reader_spec.rb +2 -0
  87. data/spec/readers/citeproc_reader_spec.rb +4 -0
  88. data/spec/readers/codemeta_reader_spec.rb +4 -4
  89. data/spec/readers/crosscite_reader_spec.rb +2 -0
  90. data/spec/readers/crossref_reader_spec.rb +72 -41
  91. data/spec/readers/datacite_json_reader_spec.rb +2 -0
  92. data/spec/readers/datacite_reader_spec.rb +209 -44
  93. data/spec/readers/npm_reader_spec.rb +2 -0
  94. data/spec/readers/ris_reader_spec.rb +3 -0
  95. data/spec/readers/schema_org_reader_spec.rb +38 -11
  96. data/spec/spec_helper.rb +1 -0
  97. data/spec/writers/citation_writer_spec.rb +9 -0
  98. data/spec/writers/citeproc_writer_spec.rb +9 -0
  99. data/spec/writers/crosscite_writer_spec.rb +7 -0
  100. data/spec/writers/datacite_json_writer_spec.rb +22 -0
  101. data/spec/writers/datacite_writer_spec.rb +155 -5
  102. data/spec/writers/jats_writer_spec.rb +16 -1
  103. data/spec/writers/rdf_xml_writer_spec.rb +7 -0
  104. data/spec/writers/schema_org_writer_spec.rb +49 -0
  105. data/spec/writers/turtle_writer_spec.rb +18 -0
  106. metadata +84 -37
@@ -11,6 +11,7 @@ describe Bolognese::Metadata, vcr: true do
11
11
  expect(jats.dig("publication_type")).to eq("journal")
12
12
  expect(jats.dig("article_title")).to eq("Automated quantitative histology reveals vascular morphodynamics during Arabidopsis hypocotyl secondary growth")
13
13
  expect(jats.dig("source")).to eq("eLife")
14
+ expect(jats.dig("publisher_name")).to eq("eLife Sciences Publications, Ltd")
14
15
  expect(jats.dig("person_group", "name").length).to eq(5)
15
16
  expect(jats.dig("person_group", "name").first).to eq("surname"=>"Sankar", "given_names"=>"Martial")
16
17
  expect(jats.dig("year")).to eq("iso_8601_date"=>"2014-02-11", "__content__"=>"2014")
@@ -25,6 +26,7 @@ describe Bolognese::Metadata, vcr: true do
25
26
  expect(jats.dig("publication_type")).to eq("journal")
26
27
  expect(jats.dig("article_title")).to eq("Delineating a Retesting Zone Using Receiver Operating Characteristic Analysis on Serial QuantiFERON Tuberculosis Test Results in US Healthcare Workers")
27
28
  expect(jats.dig("source")).to eq("Pulmonary Medicine")
29
+ expect(jats.dig("publisher_name")).to eq("Hindawi Limited")
28
30
  expect(jats.dig("person_group", "name").length).to eq(7)
29
31
  expect(jats.dig("person_group", "name").first).to eq("surname"=>"Thanassi", "given_names"=>"Wendy")
30
32
  expect(jats.dig("year")).to eq("iso_8601_date"=>"2012", "__content__"=>"2012")
@@ -37,6 +39,7 @@ describe Bolognese::Metadata, vcr: true do
37
39
  expect(jats.dig("publication_type")).to eq("journal")
38
40
  expect(jats.dig("article_title")).to eq("Triose Phosphate Isomerase Deficiency Is Caused by Altered Dimerization???Not Catalytic Inactivity???of the Mutant Enzymes")
39
41
  expect(jats.dig("source")).to eq("PLoS ONE")
42
+ expect(jats.dig("publisher_name")).to eq("Public Library of Science (PLoS)")
40
43
  expect(jats.dig("person_group", 0, "name").length).to eq(5)
41
44
  expect(jats.dig("person_group", 0, "name").first).to eq("surname"=>"Ralser", "given_names"=>"Markus")
42
45
  expect(jats.dig("person_group", 1, "name")).to eq("surname"=>"Janbon", "given_names"=>"Guilhem")
@@ -54,6 +57,7 @@ describe Bolognese::Metadata, vcr: true do
54
57
  expect(jats.dig("publication_type")).to eq("chapter")
55
58
  expect(jats.dig("chapter_title")).to eq("Physical Examinations")
56
59
  expect(jats.dig("source")).to eq("Jaypee Brothers Medical Publishing")
60
+ expect(jats.dig("publisher_name")).to eq("Jaypee Brothers Medical Publishing")
57
61
  expect(jats.dig("person_group", "name")).to eq("surname"=>"Saha", "given_names"=>"Ashis")
58
62
  expect(jats.dig("year")).to eq("iso_8601_date"=>"2015", "__content__"=>"2015")
59
63
  expect(jats.dig("fpage")).to eq("27")
@@ -68,6 +72,7 @@ describe Bolognese::Metadata, vcr: true do
68
72
  expect(jats.dig("publication_type")).to eq("journal")
69
73
  expect(jats.dig("article_title")).to eq("Automated quantitative histology reveals vascular morphodynamics during Arabidopsis hypocotyl secondary growth")
70
74
  expect(jats.dig("source")).to eq("eLife")
75
+ expect(jats.dig("publisher_name")).to eq("{eLife} Sciences Organisation, Ltd.")
71
76
  expect(jats.dig("person_group", "name").length).to eq(5)
72
77
  expect(jats.dig("person_group", "name").first).to eq("surname"=>"Sankar", "given_names"=>"Martial")
73
78
  expect(jats.dig("year")).to eq("iso_8601_date"=>"2014", "__content__"=>"2014")
@@ -82,7 +87,7 @@ describe Bolognese::Metadata, vcr: true do
82
87
  expect(jats.dig("publication_type")).to be_nil
83
88
  expect(jats.dig("source")).to eq("Eating your own Dog Food")
84
89
  expect(jats.dig("publisher_name")).to eq("DataCite")
85
- expect(jats.dig("person_group", "name")).to eq("surname"=>"Fenner", "given_names"=>"Martin")
90
+ expect(jats.dig("person_group", 0, "name")).to eq("surname"=>"Fenner", "given_names"=>"Martin")
86
91
  expect(jats.dig("year")).to eq("iso_8601_date"=>"2016-12-20", "__content__"=>"2016")
87
92
  expect(jats.dig("month")).to eq("12")
88
93
  expect(jats.dig("day")).to eq("20")
@@ -126,6 +131,7 @@ describe Bolognese::Metadata, vcr: true do
126
131
  expect(jats.dig("publication_type")).to eq("journal")
127
132
  expect(jats.dig("article_title")).to eq("Recommendation of: ORCID Works Metadata Working Group")
128
133
  expect(jats.dig("source")).to eq("Figshare")
134
+ expect(jats.dig("publisher_name")).to eq("Figshare")
129
135
  expect(jats.dig("person_group", "name").length).to eq(20)
130
136
  expect(jats.dig("person_group", "name").first).to eq("surname"=>"Paglione", "given_names"=>"Laura")
131
137
  expect(jats.dig("year")).to eq("iso_8601_date"=>"2017", "__content__"=>"2017")
@@ -139,6 +145,7 @@ describe Bolognese::Metadata, vcr: true do
139
145
  expect(jats.dig("publication_type")).to eq("data")
140
146
  expect(jats.dig("data_title")).to eq("Data from: A new malaria agent in African hominids.")
141
147
  expect(jats.dig("source")).to eq("Dryad")
148
+ expect(jats.dig("publisher_name")).to eq(nil)
142
149
  expect(jats.dig("person_group", "name").length).to eq(8)
143
150
  expect(jats.dig("person_group", "name").first).to eq("surname"=>"Ollomo", "given_names"=>"Benjamin")
144
151
  expect(jats.dig("year")).to eq("iso_8601_date"=>"2011", "__content__"=>"2011")
@@ -172,6 +179,13 @@ describe Bolognese::Metadata, vcr: true do
172
179
  expect(jats.dig("day")).to be_nil
173
180
  expect(jats.dig("pub_id")).to eq("pub_id_type"=>"doi", "__content__"=>"10.34747/g6yb-3412")
174
181
  end
182
+
183
+ it "with publisher with language" do
184
+ input = fixture_path + 'datacite-xml-lang.xml'
185
+ subject = Bolognese::Metadata.new(input: input)
186
+ jats = Maremma.from_xml(subject.jats).fetch("element_citation", {})
187
+ expect(jats.dig("publisher_name")).to eq({"xml:lang"=>"en", "__content__"=>"OSI SAF"})
188
+ end
175
189
  end
176
190
 
177
191
  context "change metadata as datacite xml" do
@@ -182,6 +196,7 @@ describe Bolognese::Metadata, vcr: true do
182
196
  expect(jats.dig("publication_type")).to eq("journal")
183
197
  expect(jats.dig("article_title")).to eq("Automated quantitative histology reveals vascular morphodynamics during Arabidopsis hypocotyl secondary growth")
184
198
  expect(jats.dig("source")).to eq("eLife")
199
+ expect(jats.dig("publisher_name")).to eq("eLife Sciences Publications, Ltd")
185
200
  expect(jats.dig("person_group", "name").length).to eq(5)
186
201
  expect(jats.dig("person_group", "name").first).to eq("surname"=>"Sankar", "given_names"=>"Martial")
187
202
  expect(jats.dig("year")).to eq("iso_8601_date"=>"2014-02-11", "__content__"=>"2014")
@@ -12,6 +12,7 @@ describe Bolognese::Metadata, vcr: true do
12
12
  expect(rdf_xml.dig("ScholarlyArticle", "rdf:about")).to eq("https://doi.org/10.7554/elife.01567")
13
13
  expect(rdf_xml.dig("ScholarlyArticle", "name")).to eq("Automated quantitative histology reveals vascular morphodynamics during Arabidopsis hypocotyl secondary growth")
14
14
  expect(rdf_xml.dig("ScholarlyArticle", "datePublished", "__content__")).to eq("2014-02-11")
15
+ expect(rdf_xml.dig("ScholarlyArticle", "publisher", "Organization", "name")).to eq("eLife Sciences Publications, Ltd")
15
16
  end
16
17
 
17
18
  it "with pages" do
@@ -24,6 +25,7 @@ describe Bolognese::Metadata, vcr: true do
24
25
  expect(rdf_xml.dig("ScholarlyArticle", "datePublished", "__content__")).to eq("2012")
25
26
  expect(rdf_xml.dig("ScholarlyArticle", "pageStart")).to eq("1")
26
27
  expect(rdf_xml.dig("ScholarlyArticle", "pageEnd")).to eq("7")
28
+ expect(rdf_xml.dig("ScholarlyArticle", "publisher", "Organization", "name")).to eq("Hindawi Limited")
27
29
  end
28
30
 
29
31
  it "Crossref DOI" do
@@ -36,6 +38,7 @@ describe Bolognese::Metadata, vcr: true do
36
38
  expect(rdf_xml.dig("ScholarlyArticle", "name")).to eq("Automated quantitative histology reveals vascular morphodynamics during Arabidopsis hypocotyl secondary growth")
37
39
  expect(rdf_xml.dig("ScholarlyArticle", "datePublished", "__content__")).to eq("2014")
38
40
  expect(rdf_xml.dig("ScholarlyArticle", "periodical", "Journal", "name")).to eq("eLife")
41
+ expect(rdf_xml.dig("ScholarlyArticle", "publisher", "Organization", "name")).to eq("{eLife} Sciences Organisation, Ltd.")
39
42
  end
40
43
 
41
44
  it "BlogPosting" do
@@ -47,6 +50,7 @@ describe Bolognese::Metadata, vcr: true do
47
50
  expect(rdf_xml.dig("ScholarlyArticle", "name")).to eq("Eating your own Dog Food")
48
51
  expect(rdf_xml.dig("ScholarlyArticle", "keywords")).to eq("datacite, doi, metadata, FOS: Computer and information sciences, FOS: Computer and information sciences")
49
52
  expect(rdf_xml.dig("ScholarlyArticle", "datePublished", "__content__")).to eq("2016-12-20")
53
+ expect(rdf_xml.dig("ScholarlyArticle", "publisher", "Organization", "name")).to eq("DataCite")
50
54
  end
51
55
 
52
56
  it "BlogPosting Citeproc JSON" do
@@ -56,6 +60,7 @@ describe Bolognese::Metadata, vcr: true do
56
60
  expect(rdf_xml.dig("BlogPosting", "rdf:about")).to eq("https://doi.org/10.5438/4k3m-nyvg")
57
61
  expect(rdf_xml.dig("BlogPosting", "name")).to eq("Eating your own Dog Food")
58
62
  expect(rdf_xml.dig("BlogPosting", "datePublished", "__content__")).to eq("2016-12-20")
63
+ expect(rdf_xml.dig("BlogPosting", "publisher", "Organization", "name")).to eq("DataCite")
59
64
  end
60
65
 
61
66
  it "maremma" do
@@ -68,6 +73,7 @@ describe Bolognese::Metadata, vcr: true do
68
73
  expect(rdf_xml.dig("SoftwareSourceCode", "name")).to eq("Maremma: a Ruby library for simplified network calls")
69
74
  expect(rdf_xml.dig("SoftwareSourceCode", "keywords")).to eq("faraday, excon, net/http")
70
75
  expect(rdf_xml.dig("SoftwareSourceCode", "datePublished", "__content__")).to eq("2017-02-24")
76
+ expect(rdf_xml.dig("SoftwareSourceCode", "publisher", "Organization", "name")).to eq("DataCite")
71
77
  end
72
78
 
73
79
  it "BlogPosting schema.org" do
@@ -81,6 +87,7 @@ describe Bolognese::Metadata, vcr: true do
81
87
  expect(rdf_xml.dig("BlogPosting", "name")).to eq("Eating your own Dog Food")
82
88
  expect(rdf_xml.dig("BlogPosting", "keywords")).to eq("datacite, doi, metadata, featured")
83
89
  expect(rdf_xml.dig("BlogPosting", "datePublished", "__content__")).to eq("2016-12-20")
90
+ expect(rdf_xml.dig("BlogPosting", "publisher", "Organization", "name")).to eq("DataCite")
84
91
  end
85
92
  end
86
93
  end
@@ -365,5 +365,54 @@ describe Bolognese::Metadata, vcr: true do
365
365
  expect(json["@type"]).to eq("CreativeWork")
366
366
  expect(json["datePublished"]).to eq("2019")
367
367
  end
368
+
369
+ it "from Schema 4.5 with publisher attributes" do
370
+ input = fixture_path + 'datacite-example-full-v4.5.xml'
371
+ subject = Bolognese::Metadata.new(input: input)
372
+ json = JSON.parse(subject.schema_org)
373
+ expect(json["publisher"]).to eq(
374
+ {
375
+ "@type" => "Organization",
376
+ "@id" => "https://ror.org/04z8jg394",
377
+ "name" => "Example Publisher"
378
+ }
379
+ )
380
+ end
381
+
382
+ it "from Schema 4.6 with Translator contributor, workTranslation, translationOfWork, and temporalCoverage" do
383
+ input = fixture_path + 'datacite-example-full-v4.6.xml'
384
+ subject = Bolognese::Metadata.new(input: input)
385
+ json = JSON.parse(subject.schema_org)
386
+
387
+ expect(json["@type"]).to eq(
388
+ "Project"
389
+ )
390
+ expect(json["translator"]).to eq(
391
+ {
392
+ "name" => "Jane Doe",
393
+ "givenName" => "Jane",
394
+ "familyName" => "Doe",
395
+ "affiliation" => {
396
+ "@type" => "Organization",
397
+ "@id" => "https://ror.org/04wxnsj81",
398
+ "name" => "ExampleAffiliation"
399
+ },
400
+ "contributorType" => "Translator",
401
+ "@type" => "Person",
402
+ "@id" => "https://orcid.org/0000-0003-1419-2405"
403
+ }
404
+ )
405
+ expect(json["workTranslation"]).to eq(
406
+ "@id" => "https://doi.org/10.1234/translated-version",
407
+ "@type" => "CreativeWork"
408
+ )
409
+ expect(json["translationOfWork"]).to eq(
410
+ "@id" => "https://doi.org/10.1234/other-version",
411
+ "@type" => "CreativeWork"
412
+ )
413
+ expect(json["temporalCoverage"]).to eq(
414
+ "2020-01-01"
415
+ )
416
+ end
368
417
  end
369
418
  end
@@ -10,6 +10,8 @@ describe Bolognese::Metadata, vcr: true do
10
10
  ttl = subject.turtle.split("\n")
11
11
  expect(ttl[0]).to eq("@prefix schema: <http://schema.org/> .")
12
12
  expect(ttl[2]).to eq("<https://doi.org/10.7554/elife.01567> a schema:ScholarlyArticle;")
13
+ publisher_line = ttl.find_index(' schema:publisher [') + 2
14
+ expect(ttl[publisher_line]).to eq(" schema:name \"{eLife} Sciences Organisation, Ltd.\"")
13
15
  end
14
16
 
15
17
  it "Dataset" do
@@ -19,6 +21,8 @@ describe Bolognese::Metadata, vcr: true do
19
21
  ttl = subject.turtle.split("\n")
20
22
  expect(ttl[0]).to eq("@prefix schema: <http://schema.org/> .")
21
23
  expect(ttl[2]).to eq("<https://doi.org/10.5061/dryad.8515> a schema:Dataset;")
24
+ publisher_line = ttl.find_index(' schema:publisher [') + 2
25
+ expect(ttl[publisher_line]).to eq(" schema:name \"Dryad\"")
22
26
  end
23
27
 
24
28
  it "BlogPosting" do
@@ -28,6 +32,8 @@ describe Bolognese::Metadata, vcr: true do
28
32
  ttl = subject.turtle.split("\n")
29
33
  expect(ttl[0]).to eq("@prefix schema: <http://schema.org/> .")
30
34
  expect(ttl[2]).to eq("<https://doi.org/10.5438/4k3m-nyvg> a schema:ScholarlyArticle;")
35
+ publisher_line = ttl.find_index(' schema:publisher [') + 2
36
+ expect(ttl[publisher_line]).to eq(" schema:name \"DataCite\"")
31
37
  end
32
38
 
33
39
  it "BlogPosting Citeproc JSON" do
@@ -36,6 +42,8 @@ describe Bolognese::Metadata, vcr: true do
36
42
  ttl = subject.turtle.split("\n")
37
43
  expect(ttl[0]).to eq("@prefix schema: <http://schema.org/> .")
38
44
  expect(ttl[2]).to eq("<https://doi.org/10.5438/4k3m-nyvg> a schema:BlogPosting;")
45
+ publisher_line = ttl.find_index(' schema:publisher [') + 2
46
+ expect(ttl[publisher_line]).to eq(" schema:name \"DataCite\"")
39
47
  end
40
48
 
41
49
  it "BlogPosting DataCite JSON" do
@@ -44,6 +52,8 @@ describe Bolognese::Metadata, vcr: true do
44
52
  ttl = subject.turtle.split("\n")
45
53
  expect(ttl[0]).to eq("@prefix schema: <http://schema.org/> .")
46
54
  expect(ttl[2]).to eq("<https://doi.org/10.5438/4k3m-nyvg> a schema:ScholarlyArticle;")
55
+ publisher_line = ttl.find_index(' schema:publisher [') + 2
56
+ expect(ttl[publisher_line]).to eq(" schema:name \"DataCite\"")
47
57
  end
48
58
 
49
59
  it "BlogPosting schema.org" do
@@ -53,6 +63,8 @@ describe Bolognese::Metadata, vcr: true do
53
63
  ttl = subject.turtle.split("\n")
54
64
  expect(ttl[0]).to eq("@prefix schema: <http://schema.org/> .")
55
65
  expect(ttl[2]).to eq("<https://doi.org/10.5438/4k3m-nyvg> a schema:BlogPosting;")
66
+ publisher_line = ttl.find_index(' schema:publisher [') + 2
67
+ expect(ttl[publisher_line]).to eq(" schema:name \"DataCite\"")
56
68
  end
57
69
 
58
70
  it "DataONE" do
@@ -61,6 +73,8 @@ describe Bolognese::Metadata, vcr: true do
61
73
  ttl = subject.turtle.split("\n")
62
74
  expect(ttl[0]).to eq("@prefix schema: <http://schema.org/> .")
63
75
  expect(ttl[2]).to eq("<https://doi.org/10.5063/f1m61h5x> a schema:SoftwareSourceCode;")
76
+ publisher_line = ttl.find_index(' schema:publisher [') + 2
77
+ expect(ttl[publisher_line]).to eq(" schema:name \"https://cran.r-project.org\"")
64
78
  end
65
79
 
66
80
  it "journal article" do
@@ -70,6 +84,8 @@ describe Bolognese::Metadata, vcr: true do
70
84
  ttl = subject.turtle.split("\n")
71
85
  expect(ttl[0]).to eq("@prefix schema: <http://schema.org/> .")
72
86
  expect(ttl[2]).to eq("<https://doi.org/10.7554/elife.01567> a schema:ScholarlyArticle;")
87
+ publisher_line = ttl.find_index(' schema:publisher [') + 2
88
+ expect(ttl[publisher_line]).to eq(" schema:name \"eLife Sciences Publications, Ltd\"")
73
89
  end
74
90
 
75
91
  it "with pages" do
@@ -79,6 +95,8 @@ describe Bolognese::Metadata, vcr: true do
79
95
  ttl = subject.turtle.split("\n")
80
96
  expect(ttl[0]).to eq("@prefix schema: <http://schema.org/> .")
81
97
  expect(ttl[2]).to eq("<https://doi.org/10.1155/2012/291294> a schema:ScholarlyArticle;")
98
+ publisher_line = ttl.find_index(' schema:publisher [') + 2
99
+ expect(ttl[publisher_line]).to eq(" schema:name \"Hindawi Limited\"")
82
100
  end
83
101
  end
84
102
  end
metadata CHANGED
@@ -1,69 +1,49 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bolognese
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.10.0
4
+ version: 2.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martin Fenner
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-10-14 00:00:00.000000000 Z
11
+ date: 2025-05-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: maremma
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: 4.9.4
20
- - - "<"
21
- - !ruby/object:Gem::Version
22
- version: '5'
23
- type: :runtime
24
- prerelease: false
25
- version_requirements: !ruby/object:Gem::Requirement
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- version: 4.9.4
30
- - - "<"
31
- - !ruby/object:Gem::Version
32
- version: '5'
33
- - !ruby/object:Gem::Dependency
34
- name: faraday
35
15
  requirement: !ruby/object:Gem::Requirement
36
16
  requirements:
37
17
  - - "~>"
38
18
  - !ruby/object:Gem::Version
39
- version: 0.17.3
19
+ version: '5.0'
40
20
  type: :runtime
41
21
  prerelease: false
42
22
  version_requirements: !ruby/object:Gem::Requirement
43
23
  requirements:
44
24
  - - "~>"
45
25
  - !ruby/object:Gem::Version
46
- version: 0.17.3
26
+ version: '5.0'
47
27
  - !ruby/object:Gem::Dependency
48
28
  name: nokogiri
49
29
  requirement: !ruby/object:Gem::Requirement
50
30
  requirements:
51
- - - ">="
31
+ - - "~>"
52
32
  - !ruby/object:Gem::Version
53
- version: 1.13.2
54
- - - "<"
33
+ version: '1.16'
34
+ - - ">="
55
35
  - !ruby/object:Gem::Version
56
- version: '1.14'
36
+ version: 1.16.2
57
37
  type: :runtime
58
38
  prerelease: false
59
39
  version_requirements: !ruby/object:Gem::Requirement
60
40
  requirements:
61
- - - ">="
41
+ - - "~>"
62
42
  - !ruby/object:Gem::Version
63
- version: 1.13.2
64
- - - "<"
43
+ version: '1.16'
44
+ - - ">="
65
45
  - !ruby/object:Gem::Version
66
- version: '1.14'
46
+ version: 1.16.2
67
47
  - !ruby/object:Gem::Dependency
68
48
  name: loofah
69
49
  requirement: !ruby/object:Gem::Requirement
@@ -556,6 +536,34 @@ dependencies:
556
536
  - - "<"
557
537
  - !ruby/object:Gem::Version
558
538
  version: 2.0.0
539
+ - !ruby/object:Gem::Dependency
540
+ name: byebug
541
+ requirement: !ruby/object:Gem::Requirement
542
+ requirements:
543
+ - - ">="
544
+ - !ruby/object:Gem::Version
545
+ version: '0'
546
+ type: :development
547
+ prerelease: false
548
+ version_requirements: !ruby/object:Gem::Requirement
549
+ requirements:
550
+ - - ">="
551
+ - !ruby/object:Gem::Version
552
+ version: '0'
553
+ - !ruby/object:Gem::Dependency
554
+ name: json-canonicalization
555
+ requirement: !ruby/object:Gem::Requirement
556
+ requirements:
557
+ - - '='
558
+ - !ruby/object:Gem::Version
559
+ version: 0.3.1
560
+ type: :development
561
+ prerelease: false
562
+ version_requirements: !ruby/object:Gem::Requirement
563
+ requirements:
564
+ - - '='
565
+ - !ruby/object:Gem::Version
566
+ version: 0.3.1
559
567
  description: Ruby gem and command-line utility for conversion of DOI metadata from
560
568
  and to different metadata formats, including schema.org.
561
569
  email: mfenner@datacite.org
@@ -734,6 +742,30 @@ files:
734
742
  - resources/kernel-4.4/include/datacite-titleType-v4.xsd
735
743
  - resources/kernel-4.4/include/xml.xsd
736
744
  - resources/kernel-4.4/metadata.xsd
745
+ - resources/kernel-4.5/include/datacite-contributorType-v4.xsd
746
+ - resources/kernel-4.5/include/datacite-dateType-v4.xsd
747
+ - resources/kernel-4.5/include/datacite-descriptionType-v4.xsd
748
+ - resources/kernel-4.5/include/datacite-funderIdentifierType-v4.xsd
749
+ - resources/kernel-4.5/include/datacite-nameType-v4.xsd
750
+ - resources/kernel-4.5/include/datacite-numberType-v4.xsd
751
+ - resources/kernel-4.5/include/datacite-relatedIdentifierType-v4.xsd
752
+ - resources/kernel-4.5/include/datacite-relationType-v4.xsd
753
+ - resources/kernel-4.5/include/datacite-resourceType-v4.xsd
754
+ - resources/kernel-4.5/include/datacite-titleType-v4.xsd
755
+ - resources/kernel-4.5/include/xml.xsd
756
+ - resources/kernel-4.5/metadata.xsd
757
+ - resources/kernel-4.6/include/datacite-contributorType-v4.xsd
758
+ - resources/kernel-4.6/include/datacite-dateType-v4.xsd
759
+ - resources/kernel-4.6/include/datacite-descriptionType-v4.xsd
760
+ - resources/kernel-4.6/include/datacite-funderIdentifierType-v4.xsd
761
+ - resources/kernel-4.6/include/datacite-nameType-v4.xsd
762
+ - resources/kernel-4.6/include/datacite-numberType-v4.xsd
763
+ - resources/kernel-4.6/include/datacite-relatedIdentifierType-v4.xsd
764
+ - resources/kernel-4.6/include/datacite-relationType-v4.xsd
765
+ - resources/kernel-4.6/include/datacite-resourceType-v4.xsd
766
+ - resources/kernel-4.6/include/datacite-titleType-v4.xsd
767
+ - resources/kernel-4.6/include/xml.xsd
768
+ - resources/kernel-4.6/metadata.xsd
737
769
  - resources/kernel-4/include/datacite-contributorType-v4.xsd
738
770
  - resources/kernel-4/include/datacite-dateType-v4.xsd
739
771
  - resources/kernel-4/include/datacite-descriptionType-v4.xsd
@@ -770,6 +802,7 @@ files:
770
802
  - spec/fixtures/crossref.bib
771
803
  - spec/fixtures/crossref.ris
772
804
  - spec/fixtures/crossref.xml
805
+ - spec/fixtures/crossref_schema_4.6_values.xml
773
806
  - spec/fixtures/datacite-empty-sizes.xml
774
807
  - spec/fixtures/datacite-example-ROR-nameIdentifiers.xml
775
808
  - spec/fixtures/datacite-example-affiliation.xml
@@ -781,10 +814,13 @@ files:
781
814
  - spec/fixtures/datacite-example-dissertation-v4.4.xml
782
815
  - spec/fixtures/datacite-example-escaped-text.xml
783
816
  - spec/fixtures/datacite-example-full-v4.4.xml
817
+ - spec/fixtures/datacite-example-full-v4.5.xml
818
+ - spec/fixtures/datacite-example-full-v4.6.xml
784
819
  - spec/fixtures/datacite-example-geolocation-2.xml
785
820
  - spec/fixtures/datacite-example-geolocation.xml
786
821
  - spec/fixtures/datacite-example-nameIdentifier-with-schemeURI.xml
787
822
  - spec/fixtures/datacite-example-polygon-v4.1.xml
823
+ - spec/fixtures/datacite-example-relateditems-with-attributes.xml
788
824
  - spec/fixtures/datacite-example-relateditems.xml
789
825
  - spec/fixtures/datacite-example-xs-string.xml
790
826
  - spec/fixtures/datacite-formats-with-xs.xml
@@ -800,7 +836,10 @@ files:
800
836
  - spec/fixtures/datacite-xml-lang.xml
801
837
  - spec/fixtures/datacite.json
802
838
  - spec/fixtures/datacite.xml
839
+ - spec/fixtures/datacite_blank_name_identifier.xml
840
+ - spec/fixtures/datacite_blank_publisher.xml
803
841
  - spec/fixtures/datacite_dataset.xml
842
+ - spec/fixtures/datacite_journal_article.xml
804
843
  - spec/fixtures/datacite_malformed_creator.xml
805
844
  - spec/fixtures/datacite_missing_creator.xml
806
845
  - spec/fixtures/datacite_schema_3.xml
@@ -820,6 +859,7 @@ files:
820
859
  - spec/fixtures/ris_bug.ris
821
860
  - spec/fixtures/schema_4.0.xml
822
861
  - spec/fixtures/schema_org.json
862
+ - spec/fixtures/schema_org_4.6_attributes.json
823
863
  - spec/fixtures/schema_org_geolocation.json
824
864
  - spec/fixtures/schema_org_geoshape.json
825
865
  - spec/fixtures/schema_org_gtex.json
@@ -1039,8 +1079,10 @@ files:
1039
1079
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/handle_input/DOI_RA_not_Crossref_or_DataCite.yml
1040
1080
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/handle_input/unknown_DOI_prefix.yml
1041
1081
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_contributors/none.yml
1082
+ - spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_contributors_Translator/supports_Translator_contributorType.yml
1042
1083
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_creators/insert.yml
1043
1084
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_dates/insert.yml
1085
+ - spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_dates_with_Coverage/inserts_date_with_dateType_Coverage.yml
1044
1086
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_descriptions/insert.yml
1045
1087
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_identifier/doi.yml
1046
1088
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_language/insert.yml
@@ -1049,8 +1091,13 @@ files:
1049
1091
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_publisher/insert.yml
1050
1092
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_related_identifiers/insert.yml
1051
1093
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_related_identifiers/related_identifier.yml
1094
+ - spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_related_identifiers_CSTR/supports_CSTR_relatedIdentifierType.yml
1095
+ - spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_related_identifiers_HasTranslation/supports_HasTranslation_relationType.yml
1096
+ - spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_related_identifiers_RRID/supports_RRID_relatedIdentifierType.yml
1052
1097
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_related_items/insert.yml
1053
1098
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_resource_type/insert.yml
1099
+ - spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_resource_type_with_Award/supports_Award_as_resourceTypeGeneral.yml
1100
+ - spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_resource_type_with_Project/supports_Project_as_resourceTypeGeneral.yml
1054
1101
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_rights_list/insert.yml
1055
1102
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_sizes/insert.yml
1056
1103
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_subjects/insert.yml
@@ -1283,7 +1330,7 @@ homepage: https://github.com/datacite/bolognese
1283
1330
  licenses:
1284
1331
  - MIT
1285
1332
  metadata: {}
1286
- post_install_message:
1333
+ post_install_message:
1287
1334
  rdoc_options: []
1288
1335
  require_paths:
1289
1336
  - lib
@@ -1291,15 +1338,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
1291
1338
  requirements:
1292
1339
  - - ">="
1293
1340
  - !ruby/object:Gem::Version
1294
- version: '2.3'
1341
+ version: '3.0'
1295
1342
  required_rubygems_version: !ruby/object:Gem::Requirement
1296
1343
  requirements:
1297
1344
  - - ">="
1298
1345
  - !ruby/object:Gem::Version
1299
1346
  version: '0'
1300
1347
  requirements: []
1301
- rubygems_version: 3.0.3.1
1302
- signing_key:
1348
+ rubygems_version: 3.3.26
1349
+ signing_key:
1303
1350
  specification_version: 4
1304
1351
  summary: Ruby client library for conversion of DOI Metadata
1305
1352
  test_files: []