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.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +1 -1
- data/.github/workflows/release.yml +2 -2
- data/Gemfile.lock +15 -12
- data/bolognese.gemspec +5 -3
- data/lib/bolognese/author_utils.rb +4 -3
- data/lib/bolognese/datacite_utils.rb +19 -11
- data/lib/bolognese/metadata.rb +1 -6
- data/lib/bolognese/metadata_utils.rb +3 -2
- data/lib/bolognese/readers/bibtex_reader.rb +2 -2
- data/lib/bolognese/readers/citeproc_reader.rb +7 -1
- data/lib/bolognese/readers/codemeta_reader.rb +2 -2
- data/lib/bolognese/readers/crosscite_reader.rb +4 -1
- data/lib/bolognese/readers/crossref_reader.rb +40 -7
- data/lib/bolognese/readers/datacite_json_reader.rb +4 -1
- data/lib/bolognese/readers/datacite_reader.rb +19 -3
- data/lib/bolognese/readers/npm_reader.rb +1 -1
- data/lib/bolognese/readers/ris_reader.rb +2 -2
- data/lib/bolognese/readers/schema_org_reader.rb +27 -4
- data/lib/bolognese/utils.rb +35 -13
- data/lib/bolognese/version.rb +1 -1
- data/lib/bolognese/writers/bibtex_writer.rb +1 -1
- data/lib/bolognese/writers/codemeta_writer.rb +1 -1
- data/lib/bolognese/writers/csv_writer.rb +1 -1
- data/lib/bolognese/writers/datacite_json_writer.rb +3 -1
- data/lib/bolognese/writers/jats_writer.rb +6 -3
- data/lib/bolognese/writers/ris_writer.rb +1 -1
- data/lib/bolognese/writers/schema_org_writer.rb +5 -1
- data/resources/kernel-4/include/datacite-contributorType-v4.xsd +3 -1
- data/resources/kernel-4/include/datacite-dateType-v4.xsd +3 -1
- data/resources/kernel-4/include/datacite-relatedIdentifierType-v4.xsd +5 -2
- data/resources/kernel-4/include/datacite-relationType-v4.xsd +9 -3
- data/resources/kernel-4/include/datacite-resourceType-v4.xsd +7 -1
- data/resources/kernel-4/include/datacite-titleType-v4.xsd +1 -1
- data/resources/kernel-4/metadata.xsd +12 -7
- data/resources/kernel-4.5/include/datacite-contributorType-v4.xsd +35 -0
- data/resources/kernel-4.5/include/datacite-dateType-v4.xsd +25 -0
- data/resources/kernel-4.5/include/datacite-descriptionType-v4.xsd +19 -0
- data/resources/kernel-4.5/include/datacite-funderIdentifierType-v4.xsd +16 -0
- data/resources/kernel-4.5/include/datacite-nameType-v4.xsd +10 -0
- data/resources/kernel-4.5/include/datacite-numberType-v4.xsd +12 -0
- data/resources/kernel-4.5/include/datacite-relatedIdentifierType-v4.xsd +34 -0
- data/resources/kernel-4.5/include/datacite-relationType-v4.xsd +53 -0
- data/resources/kernel-4.5/include/datacite-resourceType-v4.xsd +45 -0
- data/resources/kernel-4.5/include/datacite-titleType-v4.xsd +14 -0
- data/resources/kernel-4.5/include/xml.xsd +286 -0
- data/resources/kernel-4.5/metadata.xsd +711 -0
- data/resources/kernel-4.6/include/datacite-contributorType-v4.xsd +37 -0
- data/resources/kernel-4.6/include/datacite-dateType-v4.xsd +27 -0
- data/resources/kernel-4.6/include/datacite-descriptionType-v4.xsd +19 -0
- data/resources/kernel-4.6/include/datacite-funderIdentifierType-v4.xsd +16 -0
- data/resources/kernel-4.6/include/datacite-nameType-v4.xsd +10 -0
- data/resources/kernel-4.6/include/datacite-numberType-v4.xsd +12 -0
- data/resources/kernel-4.6/include/datacite-relatedIdentifierType-v4.xsd +37 -0
- data/resources/kernel-4.6/include/datacite-relationType-v4.xsd +57 -0
- data/resources/kernel-4.6/include/datacite-resourceType-v4.xsd +49 -0
- data/resources/kernel-4.6/include/datacite-titleType-v4.xsd +14 -0
- data/resources/kernel-4.6/include/xml.xsd +286 -0
- data/resources/kernel-4.6/metadata.xsd +712 -0
- data/spec/author_utils_spec.rb +33 -4
- data/spec/datacite_utils_spec.rb +156 -2
- data/spec/fixtures/citeproc.json +6 -2
- data/spec/fixtures/crossref_schema_4.6_values.xml +183 -0
- data/spec/fixtures/datacite-example-ROR-nameIdentifiers.xml +18 -2
- data/spec/fixtures/datacite-example-full-v4.5.xml +255 -0
- data/spec/fixtures/datacite-example-full-v4.6.xml +114 -0
- data/spec/fixtures/datacite-seriesinformation.xml +7 -2
- data/spec/fixtures/datacite-xml-lang.xml +1 -1
- data/spec/fixtures/datacite_blank_name_identifier.xml +22 -0
- data/spec/fixtures/datacite_blank_publisher.xml +18 -0
- data/spec/fixtures/datacite_journal_article.xml +64 -0
- data/spec/fixtures/schema_org.json +1 -0
- data/spec/fixtures/schema_org_4.6_attributes.json +108 -0
- data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_contributors_Translator/supports_Translator_contributorType.yml +71 -0
- data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_dates_with_Coverage/inserts_date_with_dateType_Coverage.yml +71 -0
- data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_related_identifiers_CSTR/supports_CSTR_relatedIdentifierType.yml +71 -0
- data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_related_identifiers_HasTranslation/supports_HasTranslation_relationType.yml +71 -0
- data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_related_identifiers_RRID/supports_RRID_relatedIdentifierType.yml +71 -0
- data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_resource_type_with_Award/supports_Award_as_resourceTypeGeneral.yml +71 -0
- data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_resource_type_with_Project/supports_Project_as_resourceTypeGeneral.yml +71 -0
- data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_subjects/insert.yml +32 -14
- data/spec/readers/bibtex_reader_spec.rb +2 -0
- data/spec/readers/citeproc_reader_spec.rb +4 -0
- data/spec/readers/codemeta_reader_spec.rb +4 -4
- data/spec/readers/crosscite_reader_spec.rb +2 -0
- data/spec/readers/crossref_reader_spec.rb +72 -41
- data/spec/readers/datacite_json_reader_spec.rb +2 -0
- data/spec/readers/datacite_reader_spec.rb +164 -42
- data/spec/readers/npm_reader_spec.rb +2 -0
- data/spec/readers/ris_reader_spec.rb +3 -0
- data/spec/readers/schema_org_reader_spec.rb +38 -11
- data/spec/spec_helper.rb +1 -0
- data/spec/writers/citation_writer_spec.rb +9 -0
- data/spec/writers/citeproc_writer_spec.rb +9 -0
- data/spec/writers/crosscite_writer_spec.rb +7 -0
- data/spec/writers/datacite_json_writer_spec.rb +22 -0
- data/spec/writers/datacite_writer_spec.rb +155 -5
- data/spec/writers/jats_writer_spec.rb +16 -1
- data/spec/writers/rdf_xml_writer_spec.rb +7 -0
- data/spec/writers/schema_org_writer_spec.rb +49 -0
- data/spec/writers/turtle_writer_spec.rb +18 -0
- 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:
|
|
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:
|
|
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.
|
|
40
|
-
- - "
|
|
33
|
+
version: '1.16'
|
|
34
|
+
- - ">="
|
|
41
35
|
- !ruby/object:Gem::Version
|
|
42
|
-
version:
|
|
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.
|
|
50
|
-
- - "
|
|
43
|
+
version: '1.16'
|
|
44
|
+
- - ">="
|
|
51
45
|
- !ruby/object:Gem::Version
|
|
52
|
-
version:
|
|
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: '
|
|
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.
|
|
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: []
|