bolognese 1.11.3 → 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 (102) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +1 -1
  3. data/.github/workflows/release.yml +2 -2
  4. data/Gemfile.lock +15 -12
  5. data/bolognese.gemspec +5 -3
  6. data/lib/bolognese/author_utils.rb +4 -3
  7. data/lib/bolognese/datacite_utils.rb +19 -11
  8. data/lib/bolognese/metadata.rb +1 -6
  9. data/lib/bolognese/metadata_utils.rb +3 -2
  10. data/lib/bolognese/readers/bibtex_reader.rb +2 -2
  11. data/lib/bolognese/readers/citeproc_reader.rb +7 -1
  12. data/lib/bolognese/readers/codemeta_reader.rb +2 -2
  13. data/lib/bolognese/readers/crosscite_reader.rb +4 -1
  14. data/lib/bolognese/readers/crossref_reader.rb +40 -7
  15. data/lib/bolognese/readers/datacite_json_reader.rb +4 -1
  16. data/lib/bolognese/readers/datacite_reader.rb +19 -3
  17. data/lib/bolognese/readers/npm_reader.rb +1 -1
  18. data/lib/bolognese/readers/ris_reader.rb +2 -2
  19. data/lib/bolognese/readers/schema_org_reader.rb +27 -4
  20. data/lib/bolognese/utils.rb +35 -13
  21. data/lib/bolognese/version.rb +1 -1
  22. data/lib/bolognese/writers/bibtex_writer.rb +1 -1
  23. data/lib/bolognese/writers/codemeta_writer.rb +1 -1
  24. data/lib/bolognese/writers/csv_writer.rb +1 -1
  25. data/lib/bolognese/writers/datacite_json_writer.rb +3 -1
  26. data/lib/bolognese/writers/jats_writer.rb +6 -3
  27. data/lib/bolognese/writers/ris_writer.rb +1 -1
  28. data/lib/bolognese/writers/schema_org_writer.rb +5 -1
  29. data/resources/kernel-4/include/datacite-contributorType-v4.xsd +3 -1
  30. data/resources/kernel-4/include/datacite-dateType-v4.xsd +3 -1
  31. data/resources/kernel-4/include/datacite-relatedIdentifierType-v4.xsd +5 -2
  32. data/resources/kernel-4/include/datacite-relationType-v4.xsd +9 -3
  33. data/resources/kernel-4/include/datacite-resourceType-v4.xsd +7 -1
  34. data/resources/kernel-4/include/datacite-titleType-v4.xsd +1 -1
  35. data/resources/kernel-4/metadata.xsd +12 -7
  36. data/resources/kernel-4.5/include/datacite-contributorType-v4.xsd +35 -0
  37. data/resources/kernel-4.5/include/datacite-dateType-v4.xsd +25 -0
  38. data/resources/kernel-4.5/include/datacite-descriptionType-v4.xsd +19 -0
  39. data/resources/kernel-4.5/include/datacite-funderIdentifierType-v4.xsd +16 -0
  40. data/resources/kernel-4.5/include/datacite-nameType-v4.xsd +10 -0
  41. data/resources/kernel-4.5/include/datacite-numberType-v4.xsd +12 -0
  42. data/resources/kernel-4.5/include/datacite-relatedIdentifierType-v4.xsd +34 -0
  43. data/resources/kernel-4.5/include/datacite-relationType-v4.xsd +53 -0
  44. data/resources/kernel-4.5/include/datacite-resourceType-v4.xsd +45 -0
  45. data/resources/kernel-4.5/include/datacite-titleType-v4.xsd +14 -0
  46. data/resources/kernel-4.5/include/xml.xsd +286 -0
  47. data/resources/kernel-4.5/metadata.xsd +711 -0
  48. data/resources/kernel-4.6/include/datacite-contributorType-v4.xsd +37 -0
  49. data/resources/kernel-4.6/include/datacite-dateType-v4.xsd +27 -0
  50. data/resources/kernel-4.6/include/datacite-descriptionType-v4.xsd +19 -0
  51. data/resources/kernel-4.6/include/datacite-funderIdentifierType-v4.xsd +16 -0
  52. data/resources/kernel-4.6/include/datacite-nameType-v4.xsd +10 -0
  53. data/resources/kernel-4.6/include/datacite-numberType-v4.xsd +12 -0
  54. data/resources/kernel-4.6/include/datacite-relatedIdentifierType-v4.xsd +37 -0
  55. data/resources/kernel-4.6/include/datacite-relationType-v4.xsd +57 -0
  56. data/resources/kernel-4.6/include/datacite-resourceType-v4.xsd +49 -0
  57. data/resources/kernel-4.6/include/datacite-titleType-v4.xsd +14 -0
  58. data/resources/kernel-4.6/include/xml.xsd +286 -0
  59. data/resources/kernel-4.6/metadata.xsd +712 -0
  60. data/spec/author_utils_spec.rb +33 -4
  61. data/spec/datacite_utils_spec.rb +156 -2
  62. data/spec/fixtures/citeproc.json +6 -2
  63. data/spec/fixtures/crossref_schema_4.6_values.xml +183 -0
  64. data/spec/fixtures/datacite-example-ROR-nameIdentifiers.xml +18 -2
  65. data/spec/fixtures/datacite-example-full-v4.5.xml +255 -0
  66. data/spec/fixtures/datacite-example-full-v4.6.xml +114 -0
  67. data/spec/fixtures/datacite-seriesinformation.xml +7 -2
  68. data/spec/fixtures/datacite-xml-lang.xml +1 -1
  69. data/spec/fixtures/datacite_blank_name_identifier.xml +22 -0
  70. data/spec/fixtures/datacite_blank_publisher.xml +18 -0
  71. data/spec/fixtures/datacite_journal_article.xml +64 -0
  72. data/spec/fixtures/schema_org.json +1 -0
  73. data/spec/fixtures/schema_org_4.6_attributes.json +108 -0
  74. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_contributors_Translator/supports_Translator_contributorType.yml +71 -0
  75. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_dates_with_Coverage/inserts_date_with_dateType_Coverage.yml +71 -0
  76. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_related_identifiers_CSTR/supports_CSTR_relatedIdentifierType.yml +71 -0
  77. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_related_identifiers_HasTranslation/supports_HasTranslation_relationType.yml +71 -0
  78. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_related_identifiers_RRID/supports_RRID_relatedIdentifierType.yml +71 -0
  79. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_resource_type_with_Award/supports_Award_as_resourceTypeGeneral.yml +71 -0
  80. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_resource_type_with_Project/supports_Project_as_resourceTypeGeneral.yml +71 -0
  81. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_subjects/insert.yml +32 -14
  82. data/spec/readers/bibtex_reader_spec.rb +2 -0
  83. data/spec/readers/citeproc_reader_spec.rb +4 -0
  84. data/spec/readers/codemeta_reader_spec.rb +4 -4
  85. data/spec/readers/crosscite_reader_spec.rb +2 -0
  86. data/spec/readers/crossref_reader_spec.rb +72 -41
  87. data/spec/readers/datacite_json_reader_spec.rb +2 -0
  88. data/spec/readers/datacite_reader_spec.rb +164 -42
  89. data/spec/readers/npm_reader_spec.rb +2 -0
  90. data/spec/readers/ris_reader_spec.rb +3 -0
  91. data/spec/readers/schema_org_reader_spec.rb +38 -11
  92. data/spec/spec_helper.rb +1 -0
  93. data/spec/writers/citation_writer_spec.rb +9 -0
  94. data/spec/writers/citeproc_writer_spec.rb +9 -0
  95. data/spec/writers/crosscite_writer_spec.rb +7 -0
  96. data/spec/writers/datacite_json_writer_spec.rb +22 -0
  97. data/spec/writers/datacite_writer_spec.rb +155 -5
  98. data/spec/writers/jats_writer_spec.rb +16 -1
  99. data/spec/writers/rdf_xml_writer_spec.rb +7 -0
  100. data/spec/writers/schema_org_writer_spec.rb +49 -0
  101. data/spec/writers/turtle_writer_spec.rb +18 -0
  102. metadata +85 -25
@@ -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,55 +1,49 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bolognese
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.11.3
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: 2023-09-27 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
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: 4.9.4
20
- - - "<"
17
+ - - "~>"
21
18
  - !ruby/object:Gem::Version
22
- version: '5'
19
+ version: '5.0'
23
20
  type: :runtime
24
21
  prerelease: false
25
22
  version_requirements: !ruby/object:Gem::Requirement
26
23
  requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- version: 4.9.4
30
- - - "<"
24
+ - - "~>"
31
25
  - !ruby/object:Gem::Version
32
- version: '5'
26
+ version: '5.0'
33
27
  - !ruby/object:Gem::Dependency
34
28
  name: nokogiri
35
29
  requirement: !ruby/object:Gem::Requirement
36
30
  requirements:
37
- - - ">="
31
+ - - "~>"
38
32
  - !ruby/object:Gem::Version
39
- version: 1.13.2
40
- - - "<"
33
+ version: '1.16'
34
+ - - ">="
41
35
  - !ruby/object:Gem::Version
42
- version: '1.14'
36
+ version: 1.16.2
43
37
  type: :runtime
44
38
  prerelease: false
45
39
  version_requirements: !ruby/object:Gem::Requirement
46
40
  requirements:
47
- - - ">="
41
+ - - "~>"
48
42
  - !ruby/object:Gem::Version
49
- version: 1.13.2
50
- - - "<"
43
+ version: '1.16'
44
+ - - ">="
51
45
  - !ruby/object:Gem::Version
52
- version: '1.14'
46
+ version: 1.16.2
53
47
  - !ruby/object:Gem::Dependency
54
48
  name: loofah
55
49
  requirement: !ruby/object:Gem::Requirement
@@ -542,6 +536,34 @@ dependencies:
542
536
  - - "<"
543
537
  - !ruby/object:Gem::Version
544
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
545
567
  description: Ruby gem and command-line utility for conversion of DOI metadata from
546
568
  and to different metadata formats, including schema.org.
547
569
  email: mfenner@datacite.org
@@ -720,6 +742,30 @@ files:
720
742
  - resources/kernel-4.4/include/datacite-titleType-v4.xsd
721
743
  - resources/kernel-4.4/include/xml.xsd
722
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
723
769
  - resources/kernel-4/include/datacite-contributorType-v4.xsd
724
770
  - resources/kernel-4/include/datacite-dateType-v4.xsd
725
771
  - resources/kernel-4/include/datacite-descriptionType-v4.xsd
@@ -756,6 +802,7 @@ files:
756
802
  - spec/fixtures/crossref.bib
757
803
  - spec/fixtures/crossref.ris
758
804
  - spec/fixtures/crossref.xml
805
+ - spec/fixtures/crossref_schema_4.6_values.xml
759
806
  - spec/fixtures/datacite-empty-sizes.xml
760
807
  - spec/fixtures/datacite-example-ROR-nameIdentifiers.xml
761
808
  - spec/fixtures/datacite-example-affiliation.xml
@@ -767,6 +814,8 @@ files:
767
814
  - spec/fixtures/datacite-example-dissertation-v4.4.xml
768
815
  - spec/fixtures/datacite-example-escaped-text.xml
769
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
770
819
  - spec/fixtures/datacite-example-geolocation-2.xml
771
820
  - spec/fixtures/datacite-example-geolocation.xml
772
821
  - spec/fixtures/datacite-example-nameIdentifier-with-schemeURI.xml
@@ -787,7 +836,10 @@ files:
787
836
  - spec/fixtures/datacite-xml-lang.xml
788
837
  - spec/fixtures/datacite.json
789
838
  - spec/fixtures/datacite.xml
839
+ - spec/fixtures/datacite_blank_name_identifier.xml
840
+ - spec/fixtures/datacite_blank_publisher.xml
790
841
  - spec/fixtures/datacite_dataset.xml
842
+ - spec/fixtures/datacite_journal_article.xml
791
843
  - spec/fixtures/datacite_malformed_creator.xml
792
844
  - spec/fixtures/datacite_missing_creator.xml
793
845
  - spec/fixtures/datacite_schema_3.xml
@@ -807,6 +859,7 @@ files:
807
859
  - spec/fixtures/ris_bug.ris
808
860
  - spec/fixtures/schema_4.0.xml
809
861
  - spec/fixtures/schema_org.json
862
+ - spec/fixtures/schema_org_4.6_attributes.json
810
863
  - spec/fixtures/schema_org_geolocation.json
811
864
  - spec/fixtures/schema_org_geoshape.json
812
865
  - spec/fixtures/schema_org_gtex.json
@@ -1026,8 +1079,10 @@ files:
1026
1079
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/handle_input/DOI_RA_not_Crossref_or_DataCite.yml
1027
1080
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/handle_input/unknown_DOI_prefix.yml
1028
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
1029
1083
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_creators/insert.yml
1030
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
1031
1086
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_descriptions/insert.yml
1032
1087
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_identifier/doi.yml
1033
1088
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_language/insert.yml
@@ -1036,8 +1091,13 @@ files:
1036
1091
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_publisher/insert.yml
1037
1092
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_related_identifiers/insert.yml
1038
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
1039
1097
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_related_items/insert.yml
1040
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
1041
1101
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_rights_list/insert.yml
1042
1102
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_sizes/insert.yml
1043
1103
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_subjects/insert.yml
@@ -1270,7 +1330,7 @@ homepage: https://github.com/datacite/bolognese
1270
1330
  licenses:
1271
1331
  - MIT
1272
1332
  metadata: {}
1273
- post_install_message:
1333
+ post_install_message:
1274
1334
  rdoc_options: []
1275
1335
  require_paths:
1276
1336
  - lib
@@ -1278,15 +1338,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
1278
1338
  requirements:
1279
1339
  - - ">="
1280
1340
  - !ruby/object:Gem::Version
1281
- version: '2.3'
1341
+ version: '3.0'
1282
1342
  required_rubygems_version: !ruby/object:Gem::Requirement
1283
1343
  requirements:
1284
1344
  - - ">="
1285
1345
  - !ruby/object:Gem::Version
1286
1346
  version: '0'
1287
1347
  requirements: []
1288
- rubygems_version: 3.0.3.1
1289
- signing_key:
1348
+ rubygems_version: 3.3.26
1349
+ signing_key:
1290
1350
  specification_version: 4
1291
1351
  summary: Ruby client library for conversion of DOI Metadata
1292
1352
  test_files: []