bolognese 2.0.0 → 2.3.5
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 +13 -12
- data/bolognese.gemspec +4 -3
- data/lib/bolognese/author_utils.rb +5 -5
- data/lib/bolognese/datacite_utils.rb +2 -2
- data/lib/bolognese/metadata_utils.rb +2 -1
- data/lib/bolognese/readers/citeproc_reader.rb +6 -0
- data/lib/bolognese/readers/crossref_reader.rb +37 -4
- data/lib/bolognese/readers/datacite_reader.rb +1 -1
- data/lib/bolognese/readers/schema_org_reader.rb +26 -4
- data/lib/bolognese/utils.rb +14 -9
- data/lib/bolognese/version.rb +1 -1
- data/lib/bolognese/writers/datacite_json_writer.rb +1 -4
- data/lib/bolognese/writers/jats_writer.rb +4 -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 +7 -3
- data/resources/kernel-4/include/datacite-resourceType-v4.xsd +5 -1
- data/resources/kernel-4/include/datacite-titleType-v4.xsd +1 -1
- data/resources/kernel-4/metadata.xsd +2 -1
- 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 +13 -7
- data/spec/datacite_utils_spec.rb +151 -1
- 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 +8 -0
- data/spec/fixtures/datacite-example-full-v4.6.xml +114 -0
- 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/get_crossref_metadata/another_book.yml +5 -45
- 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/readers/citeproc_reader_spec.rb +1 -0
- data/spec/readers/codemeta_reader_spec.rb +1 -1
- data/spec/readers/crossref_reader_spec.rb +31 -0
- data/spec/readers/datacite_reader_spec.rb +98 -7
- data/spec/readers/schema_org_reader_spec.rb +29 -2
- data/spec/writers/citation_writer_spec.rb +10 -1
- data/spec/writers/citeproc_writer_spec.rb +9 -0
- data/spec/writers/crosscite_writer_spec.rb +2 -2
- data/spec/writers/datacite_json_writer_spec.rb +16 -32
- data/spec/writers/datacite_writer_spec.rb +73 -2
- data/spec/writers/jats_writer_spec.rb +8 -1
- data/spec/writers/schema_org_writer_spec.rb +51 -2
- metadata +58 -25
|
@@ -18,9 +18,7 @@ describe Bolognese::Metadata, vcr: true do
|
|
|
18
18
|
"rightsIdentifierScheme"=>"SPDX",
|
|
19
19
|
"rightsUri"=>"https://creativecommons.org/licenses/by/3.0/legalcode",
|
|
20
20
|
"schemeUri"=>"https://spdx.org/licenses/"}])
|
|
21
|
-
|
|
22
|
-
# expect(datacite.fetch("publisher")).to eq({"name"=>"eLife Sciences Publications, Ltd"})
|
|
23
|
-
expect(datacite.fetch("publisher")).to eq("eLife Sciences Publications, Ltd")
|
|
21
|
+
expect(datacite.fetch("publisher")).to eq({"name"=>"eLife Sciences Publications, Ltd"})
|
|
24
22
|
end
|
|
25
23
|
|
|
26
24
|
it "with ORCID ID" do
|
|
@@ -31,9 +29,7 @@ describe Bolognese::Metadata, vcr: true do
|
|
|
31
29
|
expect(datacite.fetch("types")).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
|
|
32
30
|
expect(datacite.fetch("creators").length).to eq(7)
|
|
33
31
|
expect(datacite.fetch("creators").first).to eq("nameType"=>"Personal", "name"=>"Thanassi, Wendy", "givenName"=>"Wendy", "familyName"=>"Thanassi", "affiliation" => [{"name"=>"Department of Medicine, Veterans Affairs Palo Alto Health Care System, 3801 Miranda Avenue MC-, Palo Alto, CA 94304-1207, USA"}, {"name"=>"Occupational Health Strategic Health Care Group, Office of Public Health, Veterans Health Administration, Washington, DC 20006, USA"}, {"name"=>"Division of Emergency Medicine, Stanford University School of Medicine, Stanford, CA 94304, USA"}, {"name"=>"War Related Illness and Injury Study Center (WRIISC) and Mental Illness Research Education and Clinical Center (MIRECC), Department of Veterans Affairs, Palo Alto, CA 94304, USA"}])
|
|
34
|
-
|
|
35
|
-
# expect(datacite.fetch("publisher")).to eq({"name"=>"Hindawi Limited"})
|
|
36
|
-
expect(datacite.fetch("publisher")).to eq("Hindawi Limited")
|
|
32
|
+
expect(datacite.fetch("publisher")).to eq({"name"=>"Hindawi Limited"})
|
|
37
33
|
end
|
|
38
34
|
|
|
39
35
|
it "Crossref DOI" do
|
|
@@ -45,9 +41,7 @@ describe Bolognese::Metadata, vcr: true do
|
|
|
45
41
|
expect(datacite.dig("descriptions", 0, "description")).to start_with("Among various advantages, their small size makes model organisms preferred subjects of investigation.")
|
|
46
42
|
expect(datacite.fetch("creators").length).to eq(5)
|
|
47
43
|
expect(datacite.fetch("creators").first).to eq("nameType"=>"Personal", "name"=>"Sankar, Martial", "givenName"=>"Martial", "familyName"=>"Sankar")
|
|
48
|
-
|
|
49
|
-
# expect(datacite.fetch("publisher")).to eq({"name"=>"{eLife} Sciences Organisation, Ltd."})
|
|
50
|
-
expect(datacite.fetch("publisher")).to eq("{eLife} Sciences Organisation, Ltd.")
|
|
44
|
+
expect(datacite.fetch("publisher")).to eq({"name"=>"{eLife} Sciences Organisation, Ltd."})
|
|
51
45
|
end
|
|
52
46
|
|
|
53
47
|
it "BlogPosting Citeproc JSON" do
|
|
@@ -58,9 +52,7 @@ describe Bolognese::Metadata, vcr: true do
|
|
|
58
52
|
expect(datacite.fetch("titles")).to eq([{"title"=>"Eating your own Dog Food"}])
|
|
59
53
|
expect(datacite.dig("descriptions", 0, "description")).to start_with("Eating your own dog food")
|
|
60
54
|
expect(datacite.fetch("creators")).to eq([{"familyName"=>"Fenner", "givenName"=>"Martin", "name"=>"Fenner, Martin"}])
|
|
61
|
-
|
|
62
|
-
# expect(datacite.fetch("publisher")).to eq({"name"=>"DataCite"})
|
|
63
|
-
expect(datacite.fetch("publisher")).to eq("DataCite")
|
|
55
|
+
expect(datacite.fetch("publisher")).to eq({"name"=>"DataCite"})
|
|
64
56
|
end
|
|
65
57
|
|
|
66
58
|
it "rdataone" do
|
|
@@ -72,9 +64,7 @@ describe Bolognese::Metadata, vcr: true do
|
|
|
72
64
|
expect(datacite.fetch("creators").first).to eq("affiliation"=>[{"name"=>"NCEAS"}], "nameType"=>"Personal", "name" => "Jones, Matt",
|
|
73
65
|
"nameIdentifiers" => [{"nameIdentifier"=>"https://orcid.org/0000-0003-0077-4738", "nameIdentifierScheme"=>"ORCID", "schemeUri"=>"https://orcid.org"}], "givenName"=>"Matt", "familyName"=>"Jones")
|
|
74
66
|
expect(datacite.fetch("version")).to eq("2.0.0")
|
|
75
|
-
|
|
76
|
-
# expect(datacite.fetch("publisher")).to eq({"name"=>"https://cran.r-project.org"})
|
|
77
|
-
expect(datacite.fetch("publisher")).to eq("https://cran.r-project.org")
|
|
67
|
+
expect(datacite.fetch("publisher")).to eq({"name"=>"https://cran.r-project.org"})
|
|
78
68
|
end
|
|
79
69
|
|
|
80
70
|
it "maremma" do
|
|
@@ -90,9 +80,7 @@ describe Bolognese::Metadata, vcr: true do
|
|
|
90
80
|
[{"nameIdentifier"=>"https://orcid.org/0000-0003-0077-4738",
|
|
91
81
|
"nameIdentifierScheme"=>"ORCID", "schemeUri"=>"https://orcid.org"}],
|
|
92
82
|
"nameType"=>"Personal"}])
|
|
93
|
-
|
|
94
|
-
# expect(datacite.fetch("publisher")).to eq({"name"=>"DataCite"})
|
|
95
|
-
expect(datacite.fetch("publisher")).to eq("DataCite")
|
|
83
|
+
expect(datacite.fetch("publisher")).to eq({"name"=>"DataCite"})
|
|
96
84
|
end
|
|
97
85
|
|
|
98
86
|
it "with data citation schema.org" do
|
|
@@ -103,26 +91,22 @@ describe Bolognese::Metadata, vcr: true do
|
|
|
103
91
|
expect(datacite.fetch("titles")).to eq([{"title"=>"Eating your own Dog Food"}])
|
|
104
92
|
expect(datacite.fetch("relatedIdentifiers").count).to eq(3)
|
|
105
93
|
expect(datacite.fetch("relatedIdentifiers").first).to eq("relatedIdentifier"=>"10.5438/0000-00ss", "relatedIdentifierType"=>"DOI", "relationType"=>"IsPartOf", "resourceTypeGeneral"=>"Text")
|
|
106
|
-
|
|
107
|
-
# expect(datacite.fetch("publisher")).to eq({"name"=>"DataCite"})
|
|
108
|
-
expect(datacite.fetch("publisher")).to eq("DataCite")
|
|
94
|
+
expect(datacite.fetch("publisher")).to eq({"name"=>"DataCite"})
|
|
109
95
|
end
|
|
110
96
|
|
|
111
97
|
it "DataCite DOI with Schema 4.5 publisher attributes" do
|
|
112
98
|
input = fixture_path + "datacite-example-full-v4.5.xml"
|
|
113
99
|
subject = Bolognese::Metadata.new(input: input, from: "datacite")
|
|
114
100
|
datacite = JSON.parse(subject.datacite_json)
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
# )
|
|
125
|
-
expect(datacite.fetch("publisher")).to eq("Example Publisher")
|
|
101
|
+
expect(datacite.fetch("publisher")).to eq(
|
|
102
|
+
{
|
|
103
|
+
"name" => "Example Publisher",
|
|
104
|
+
"publisherIdentifier" => "https://ror.org/04z8jg394",
|
|
105
|
+
"publisherIdentifierScheme" => "ROR",
|
|
106
|
+
"schemeUri" => "https://ror.org/",
|
|
107
|
+
"lang" => "en",
|
|
108
|
+
},
|
|
109
|
+
)
|
|
126
110
|
end
|
|
127
111
|
end
|
|
128
112
|
end
|
|
@@ -91,7 +91,7 @@ describe Bolognese::Metadata, vcr: true do
|
|
|
91
91
|
{"nameIdentifierScheme"=>"ORCID",
|
|
92
92
|
"schemeURI"=>"https://orcid.org",
|
|
93
93
|
"__content__"=>"https://orcid.org/0000-0002-2192-403X"}},
|
|
94
|
-
{"creatorName"=>{"__content__"=>"University
|
|
94
|
+
{"creatorName"=>{"__content__"=>"University of California, Santa Barbara", "nameType"=>"Organizational"}}])
|
|
95
95
|
expect(datacite.fetch("version")).to eq("2.0.0")
|
|
96
96
|
expect(datacite.dig("publisher")).to eq("https://cran.r-project.org")
|
|
97
97
|
end
|
|
@@ -116,7 +116,7 @@ describe Bolognese::Metadata, vcr: true do
|
|
|
116
116
|
{"nameIdentifierScheme"=>"ORCID",
|
|
117
117
|
"schemeURI"=>"https://orcid.org",
|
|
118
118
|
"__content__"=>"https://orcid.org/0000-0002-2192-403X"}},
|
|
119
|
-
{"creatorName"=>{"__content__"=>"University
|
|
119
|
+
{"creatorName"=>{"__content__"=>"University of California, Santa Barbara", "nameType"=>"Organizational"}}])
|
|
120
120
|
expect(datacite.fetch("version")).to eq("2.0.0")
|
|
121
121
|
expect(datacite.dig("publisher")).to eq("https://cran.r-project.org")
|
|
122
122
|
end
|
|
@@ -286,6 +286,77 @@ describe Bolognese::Metadata, vcr: true do
|
|
|
286
286
|
)
|
|
287
287
|
end
|
|
288
288
|
|
|
289
|
+
it "Schema 4.6" do
|
|
290
|
+
input = fixture_path + 'datacite-example-full-v4.6.xml'
|
|
291
|
+
doi = "10.82433/B09Z-4K37"
|
|
292
|
+
subject = Bolognese::Metadata.new(input: input, from: "datacite", regenerate: true)
|
|
293
|
+
expect(subject.valid?).to be true
|
|
294
|
+
|
|
295
|
+
datacite = Maremma.from_xml(subject.datacite).fetch("resource", {})
|
|
296
|
+
expect(datacite.fetch("xsi:schemaLocation", "").split(" ").first).to eq("http://datacite.org/schema/kernel-4")
|
|
297
|
+
expect(datacite.dig("contributors", "contributor").count).to eq(2)
|
|
298
|
+
expect(datacite.dig("contributors", "contributor")).to include(
|
|
299
|
+
{
|
|
300
|
+
"contributorType"=>"Translator",
|
|
301
|
+
"contributorName"=>{
|
|
302
|
+
"nameType"=>"Personal",
|
|
303
|
+
"__content__"=>"Doe, Jane"
|
|
304
|
+
},
|
|
305
|
+
"givenName"=>"Jane",
|
|
306
|
+
"familyName"=>"Doe",
|
|
307
|
+
"nameIdentifier"=>{
|
|
308
|
+
"nameIdentifierScheme"=>"ORCID",
|
|
309
|
+
"schemeURI"=>"https://orcid.org",
|
|
310
|
+
"__content__"=>"https://orcid.org/0000-0003-1419-2405"
|
|
311
|
+
},
|
|
312
|
+
"affiliation"=>{
|
|
313
|
+
"affiliationIdentifier"=>"https://ror.org/04wxnsj81",
|
|
314
|
+
"affiliationIdentifierScheme"=>"ROR",
|
|
315
|
+
"schemeURI"=>"https://ror.org",
|
|
316
|
+
"__content__"=>"ExampleAffiliation"
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
)
|
|
320
|
+
expect(datacite.dig("dates", "date").count).to eq(5)
|
|
321
|
+
expect(datacite.dig("dates", "date")).to include(
|
|
322
|
+
{
|
|
323
|
+
"dateType"=>"Coverage",
|
|
324
|
+
"__content__"=>"2020-01-01"
|
|
325
|
+
}
|
|
326
|
+
)
|
|
327
|
+
expect(datacite.dig("resourceType")).to eq(
|
|
328
|
+
{
|
|
329
|
+
"__content__"=>"Research Project",
|
|
330
|
+
"resourceTypeGeneral"=>"Project"
|
|
331
|
+
}
|
|
332
|
+
)
|
|
333
|
+
expect(datacite.dig("relatedIdentifiers", "relatedIdentifier").count).to eq(4)
|
|
334
|
+
expect(datacite.dig("relatedIdentifiers", "relatedIdentifier")).to eq(
|
|
335
|
+
[
|
|
336
|
+
{
|
|
337
|
+
"relatedIdentifierType"=>"RRID",
|
|
338
|
+
"relationType"=>"References",
|
|
339
|
+
"__content__"=>"RRID:AB_90755"
|
|
340
|
+
},
|
|
341
|
+
{
|
|
342
|
+
"relatedIdentifierType"=>"CSTR",
|
|
343
|
+
"relationType"=>"References",
|
|
344
|
+
"__content__"=>"CSTR:AB_12345"
|
|
345
|
+
},
|
|
346
|
+
{
|
|
347
|
+
"relatedIdentifierType"=>"DOI",
|
|
348
|
+
"relationType"=>"HasTranslation",
|
|
349
|
+
"__content__"=>"10.1234/translated-version"
|
|
350
|
+
},
|
|
351
|
+
{
|
|
352
|
+
"relatedIdentifierType"=>"DOI",
|
|
353
|
+
"relationType"=>"IsTranslationOf",
|
|
354
|
+
"__content__"=>"10.1234/other-version"
|
|
355
|
+
}
|
|
356
|
+
]
|
|
357
|
+
)
|
|
358
|
+
end
|
|
359
|
+
|
|
289
360
|
it "Geolocations" do
|
|
290
361
|
input = fixture_path + 'datacite-example-full-v4.5.xml'
|
|
291
362
|
doi = "10.82433/B09Z-4K37"
|
|
@@ -87,7 +87,7 @@ describe Bolognese::Metadata, vcr: true do
|
|
|
87
87
|
expect(jats.dig("publication_type")).to be_nil
|
|
88
88
|
expect(jats.dig("source")).to eq("Eating your own Dog Food")
|
|
89
89
|
expect(jats.dig("publisher_name")).to eq("DataCite")
|
|
90
|
-
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")
|
|
91
91
|
expect(jats.dig("year")).to eq("iso_8601_date"=>"2016-12-20", "__content__"=>"2016")
|
|
92
92
|
expect(jats.dig("month")).to eq("12")
|
|
93
93
|
expect(jats.dig("day")).to eq("20")
|
|
@@ -179,6 +179,13 @@ describe Bolognese::Metadata, vcr: true do
|
|
|
179
179
|
expect(jats.dig("day")).to be_nil
|
|
180
180
|
expect(jats.dig("pub_id")).to eq("pub_id_type"=>"doi", "__content__"=>"10.34747/g6yb-3412")
|
|
181
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
|
|
182
189
|
end
|
|
183
190
|
|
|
184
191
|
context "change metadata as datacite xml" do
|
|
@@ -94,7 +94,7 @@ describe Bolognese::Metadata, vcr: true do
|
|
|
94
94
|
"@type"=>"Person",
|
|
95
95
|
"@id"=>"https://orcid.org/0000-0002-2192-403X",
|
|
96
96
|
"affiliation"=>{"@type"=>"Organization", "name"=>"NCEAS"}},
|
|
97
|
-
{"name"=>"University
|
|
97
|
+
{"name"=>"University of California, Santa Barbara", "@type"=>"Organization"}])
|
|
98
98
|
expect(json["version"]).to eq("2.0.0")
|
|
99
99
|
expect(json["keywords"]).to eq("data sharing, data repository, DataONE")
|
|
100
100
|
end
|
|
@@ -279,7 +279,7 @@ describe Bolognese::Metadata, vcr: true do
|
|
|
279
279
|
expect(json["@id"]).to eq("https://doi.org/10.5072/example-polygon")
|
|
280
280
|
expect(json["@type"]).to eq("Dataset")
|
|
281
281
|
expect(json["name"]).to eq("Meteo measurements at the Sand Motor")
|
|
282
|
-
expect(json["author"]).to eq("@type"=>"Person", "familyName"=>"
|
|
282
|
+
expect(json["author"]).to eq("@type"=>"Person", "familyName"=>"den Heijer", "givenName"=>"C", "name"=>"C den Heijer")
|
|
283
283
|
expect(json["includedInDataCatalog"]).to be_nil
|
|
284
284
|
expect(json["spatialCoverage"].dig("geo", "polygon").length).to eq(34)
|
|
285
285
|
expect(json["spatialCoverage"].dig("geo", "polygon")[0].first).to eq(["4.1738852605822", "52.03913926329928"])
|
|
@@ -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
|
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: 2.
|
|
4
|
+
version: 2.3.5
|
|
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-06-17 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
|
|
@@ -556,6 +550,20 @@ dependencies:
|
|
|
556
550
|
- - ">="
|
|
557
551
|
- !ruby/object:Gem::Version
|
|
558
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
|
|
@@ -746,6 +754,18 @@ files:
|
|
|
746
754
|
- resources/kernel-4.5/include/datacite-titleType-v4.xsd
|
|
747
755
|
- resources/kernel-4.5/include/xml.xsd
|
|
748
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
|
|
749
769
|
- resources/kernel-4/include/datacite-contributorType-v4.xsd
|
|
750
770
|
- resources/kernel-4/include/datacite-dateType-v4.xsd
|
|
751
771
|
- resources/kernel-4/include/datacite-descriptionType-v4.xsd
|
|
@@ -782,6 +802,7 @@ files:
|
|
|
782
802
|
- spec/fixtures/crossref.bib
|
|
783
803
|
- spec/fixtures/crossref.ris
|
|
784
804
|
- spec/fixtures/crossref.xml
|
|
805
|
+
- spec/fixtures/crossref_schema_4.6_values.xml
|
|
785
806
|
- spec/fixtures/datacite-empty-sizes.xml
|
|
786
807
|
- spec/fixtures/datacite-example-ROR-nameIdentifiers.xml
|
|
787
808
|
- spec/fixtures/datacite-example-affiliation.xml
|
|
@@ -794,6 +815,7 @@ files:
|
|
|
794
815
|
- spec/fixtures/datacite-example-escaped-text.xml
|
|
795
816
|
- spec/fixtures/datacite-example-full-v4.4.xml
|
|
796
817
|
- spec/fixtures/datacite-example-full-v4.5.xml
|
|
818
|
+
- spec/fixtures/datacite-example-full-v4.6.xml
|
|
797
819
|
- spec/fixtures/datacite-example-geolocation-2.xml
|
|
798
820
|
- spec/fixtures/datacite-example-geolocation.xml
|
|
799
821
|
- spec/fixtures/datacite-example-nameIdentifier-with-schemeURI.xml
|
|
@@ -814,7 +836,10 @@ files:
|
|
|
814
836
|
- spec/fixtures/datacite-xml-lang.xml
|
|
815
837
|
- spec/fixtures/datacite.json
|
|
816
838
|
- spec/fixtures/datacite.xml
|
|
839
|
+
- spec/fixtures/datacite_blank_name_identifier.xml
|
|
840
|
+
- spec/fixtures/datacite_blank_publisher.xml
|
|
817
841
|
- spec/fixtures/datacite_dataset.xml
|
|
842
|
+
- spec/fixtures/datacite_journal_article.xml
|
|
818
843
|
- spec/fixtures/datacite_malformed_creator.xml
|
|
819
844
|
- spec/fixtures/datacite_missing_creator.xml
|
|
820
845
|
- spec/fixtures/datacite_schema_3.xml
|
|
@@ -834,6 +859,7 @@ files:
|
|
|
834
859
|
- spec/fixtures/ris_bug.ris
|
|
835
860
|
- spec/fixtures/schema_4.0.xml
|
|
836
861
|
- spec/fixtures/schema_org.json
|
|
862
|
+
- spec/fixtures/schema_org_4.6_attributes.json
|
|
837
863
|
- spec/fixtures/schema_org_geolocation.json
|
|
838
864
|
- spec/fixtures/schema_org_geoshape.json
|
|
839
865
|
- spec/fixtures/schema_org_gtex.json
|
|
@@ -1053,8 +1079,10 @@ files:
|
|
|
1053
1079
|
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/handle_input/DOI_RA_not_Crossref_or_DataCite.yml
|
|
1054
1080
|
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/handle_input/unknown_DOI_prefix.yml
|
|
1055
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
|
|
1056
1083
|
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_creators/insert.yml
|
|
1057
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
|
|
1058
1086
|
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_descriptions/insert.yml
|
|
1059
1087
|
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_identifier/doi.yml
|
|
1060
1088
|
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_language/insert.yml
|
|
@@ -1063,8 +1091,13 @@ files:
|
|
|
1063
1091
|
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_publisher/insert.yml
|
|
1064
1092
|
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_related_identifiers/insert.yml
|
|
1065
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
|
|
1066
1097
|
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_related_items/insert.yml
|
|
1067
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
|
|
1068
1101
|
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_rights_list/insert.yml
|
|
1069
1102
|
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_sizes/insert.yml
|
|
1070
1103
|
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_subjects/insert.yml
|
|
@@ -1297,7 +1330,7 @@ homepage: https://github.com/datacite/bolognese
|
|
|
1297
1330
|
licenses:
|
|
1298
1331
|
- MIT
|
|
1299
1332
|
metadata: {}
|
|
1300
|
-
post_install_message:
|
|
1333
|
+
post_install_message:
|
|
1301
1334
|
rdoc_options: []
|
|
1302
1335
|
require_paths:
|
|
1303
1336
|
- lib
|
|
@@ -1305,15 +1338,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
1305
1338
|
requirements:
|
|
1306
1339
|
- - ">="
|
|
1307
1340
|
- !ruby/object:Gem::Version
|
|
1308
|
-
version: '
|
|
1341
|
+
version: '3.0'
|
|
1309
1342
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
1310
1343
|
requirements:
|
|
1311
1344
|
- - ">="
|
|
1312
1345
|
- !ruby/object:Gem::Version
|
|
1313
1346
|
version: '0'
|
|
1314
1347
|
requirements: []
|
|
1315
|
-
rubygems_version: 3.
|
|
1316
|
-
signing_key:
|
|
1348
|
+
rubygems_version: 3.3.26
|
|
1349
|
+
signing_key:
|
|
1317
1350
|
specification_version: 4
|
|
1318
1351
|
summary: Ruby client library for conversion of DOI Metadata
|
|
1319
1352
|
test_files: []
|