bolognese 2.0.3 → 2.2.0
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 +9 -9
- data/bolognese.gemspec +3 -3
- data/lib/bolognese/readers/schema_org_reader.rb +5 -2
- data/lib/bolognese/utils.rb +2 -2
- 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 +1 -1
- data/spec/author_utils_spec.rb +8 -2
- data/spec/fixtures/datacite-example-ROR-nameIdentifiers.xml +8 -0
- data/spec/fixtures/datacite-xml-lang.xml +1 -1
- data/spec/fixtures/schema_org.json +1 -0
- data/spec/readers/schema_org_reader_spec.rb +1 -1
- data/spec/writers/datacite_json_writer_spec.rb +16 -32
- data/spec/writers/jats_writer_spec.rb +7 -0
- data/spec/writers/schema_org_writer_spec.rb +13 -0
- metadata +16 -22
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: ce52f2eb08396d0e56bdccf06702901fe7c04f1925cacafc71f315a1edda91c3
|
|
4
|
+
data.tar.gz: 29fb5a1d987a95220bbc7a3912aa24735f54924f47c8a74d61d1f51e25b75314
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 4d528d2597900dfb90410504833a83e79b1bda1974d9f77102071cecd3f71c3e1f899d8e59abe24cf1110469807cc0c6382c50a5a62571ceceb9278e7cfa37b7
|
|
7
|
+
data.tar.gz: 341d76ed37284899ea1e74e331026ba6d042d92037a260d7591b9a48b38b7c8a0b06a6908e97917b2c345c5be8b3ac6475cc63a5478891589d624f248137b315
|
data/.github/workflows/ci.yml
CHANGED
data/Gemfile.lock
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
bolognese (2.0
|
|
4
|
+
bolognese (2.2.0)
|
|
5
5
|
activesupport (>= 4.2.5)
|
|
6
6
|
benchmark_methods (~> 0.7)
|
|
7
7
|
bibtex-ruby (>= 5.1.0)
|
|
@@ -16,9 +16,9 @@ PATH
|
|
|
16
16
|
json-ld-preloaded (~> 3.1, >= 3.1.3)
|
|
17
17
|
jsonlint (~> 0.3.0)
|
|
18
18
|
loofah (~> 2.0, >= 2.0.3)
|
|
19
|
-
maremma (
|
|
19
|
+
maremma (~> 5.0)
|
|
20
20
|
namae (~> 1.0)
|
|
21
|
-
nokogiri (
|
|
21
|
+
nokogiri (~> 1.16, >= 1.16.2)
|
|
22
22
|
oj (~> 3.10)
|
|
23
23
|
oj_mimic_json (~> 1.0, >= 1.0.1)
|
|
24
24
|
postrank-uri (~> 1.0, >= 1.0.18)
|
|
@@ -114,7 +114,7 @@ GEM
|
|
|
114
114
|
loofah (2.21.3)
|
|
115
115
|
crass (~> 1.0.2)
|
|
116
116
|
nokogiri (>= 1.12.0)
|
|
117
|
-
maremma (
|
|
117
|
+
maremma (5.0.0)
|
|
118
118
|
activesupport (>= 4.2.5)
|
|
119
119
|
addressable (>= 2.3.6)
|
|
120
120
|
builder (~> 3.2, >= 3.2.2)
|
|
@@ -125,17 +125,17 @@ GEM
|
|
|
125
125
|
faraday-follow_redirects (~> 0.3.0)
|
|
126
126
|
faraday-gzip (~> 0.1.0)
|
|
127
127
|
faraday-multipart (~> 1.0.4)
|
|
128
|
-
nokogiri (
|
|
128
|
+
nokogiri (~> 1.16, >= 1.16.2)
|
|
129
129
|
oj (>= 2.8.3)
|
|
130
130
|
oj_mimic_json (~> 1.0, >= 1.0.1)
|
|
131
131
|
matrix (0.4.2)
|
|
132
|
-
mini_portile2 (2.8.
|
|
132
|
+
mini_portile2 (2.8.5)
|
|
133
133
|
minitest (5.18.0)
|
|
134
134
|
multi_json (1.15.0)
|
|
135
135
|
multipart-post (2.3.0)
|
|
136
136
|
namae (1.1.1)
|
|
137
|
-
nokogiri (1.
|
|
138
|
-
mini_portile2 (~> 2.8.
|
|
137
|
+
nokogiri (1.16.2)
|
|
138
|
+
mini_portile2 (~> 2.8.2)
|
|
139
139
|
racc (~> 1.4)
|
|
140
140
|
oj (3.14.2)
|
|
141
141
|
oj_mimic_json (1.0.1)
|
|
@@ -235,4 +235,4 @@ DEPENDENCIES
|
|
|
235
235
|
webmock (~> 3.0, >= 3.0.1)
|
|
236
236
|
|
|
237
237
|
BUNDLED WITH
|
|
238
|
-
2.
|
|
238
|
+
2.5.5
|
data/bolognese.gemspec
CHANGED
|
@@ -13,12 +13,12 @@ Gem::Specification.new do |s|
|
|
|
13
13
|
s.version = Bolognese::VERSION
|
|
14
14
|
s.extra_rdoc_files = ["README.md"]
|
|
15
15
|
s.license = 'MIT'
|
|
16
|
-
s.required_ruby_version = ['>=
|
|
16
|
+
s.required_ruby_version = ['>=3.0']
|
|
17
17
|
|
|
18
18
|
# Declare dependencies here, rather than in the Gemfile
|
|
19
|
-
s.add_dependency 'maremma', '
|
|
19
|
+
s.add_dependency 'maremma', '~> 5.0'
|
|
20
20
|
#s.add_dependency 'faraday', '~> 0.17.3'
|
|
21
|
-
s.add_dependency 'nokogiri', '
|
|
21
|
+
s.add_dependency 'nokogiri', '~> 1.16', '>= 1.16.2'
|
|
22
22
|
s.add_dependency 'loofah', '~> 2.0', '>= 2.0.3'
|
|
23
23
|
s.add_dependency 'builder', '~> 3.2', '>= 3.2.2'
|
|
24
24
|
s.add_dependency 'activesupport', '>= 4.2.5'
|
|
@@ -74,8 +74,11 @@ module Bolognese
|
|
|
74
74
|
creators = get_authors(from_schema_org_creators(Array.wrap(authors)))
|
|
75
75
|
end
|
|
76
76
|
contributors = get_authors(from_schema_org_contributors(Array.wrap(meta.fetch("editor", nil))))
|
|
77
|
-
|
|
78
|
-
publisher = {
|
|
77
|
+
|
|
78
|
+
publisher = {
|
|
79
|
+
"name" => parse_attributes(meta.fetch("publisher", nil), content: "name", first: true),
|
|
80
|
+
"publisherIdentifier" => parse_attributes(meta.fetch("publisher", nil), content: "@id", first: true),
|
|
81
|
+
}.compact if meta.fetch("publisher", nil).present?
|
|
79
82
|
|
|
80
83
|
ct = (schema_org == "Dataset") ? "includedInDataCatalog" : "Periodical"
|
|
81
84
|
container = if meta.fetch(ct, nil).present?
|
data/lib/bolognese/utils.rb
CHANGED
|
@@ -600,12 +600,12 @@ module Bolognese
|
|
|
600
600
|
end
|
|
601
601
|
|
|
602
602
|
def validate_orcid(orcid)
|
|
603
|
-
orcid = Array(/\A(?:(?:http|https):\/\/(?:(?:www|sandbox)?\.)?orcid\.org\/)?(\d{4}[[:space:]-]\d{4}[[:space:]-]\d{4}[[:space:]-]\d{3}[0-9X]+)\z/.match(orcid)).last
|
|
603
|
+
orcid = Array(/\A(?:(?:http|https):\/\/(?:(?:www|sandbox)?\.)?orcid\.org\/)?(\d{4}[[:space:]-]\d{4}[[:space:]-]\d{4}[[:space:]-]\d{3}[0-9X]+)\/{0,1}\z/.match(orcid)).last
|
|
604
604
|
orcid.gsub(/[[:space:]]/, "-") if orcid.present?
|
|
605
605
|
end
|
|
606
606
|
|
|
607
607
|
def validate_ror(ror)
|
|
608
|
-
Array(/^(?:(?:(?:http|https):\/\/)?ror\.org\/)?(0\w{6}\d{2})$/.match(ror)).last
|
|
608
|
+
Array(/^(?:(?:(?:http|https):\/\/)?ror\.org\/)?(0\w{6}\d{2})\/{0,1}$/.match(ror)).last
|
|
609
609
|
end
|
|
610
610
|
|
|
611
611
|
def validate_orcid_scheme(orcid_scheme)
|
data/lib/bolognese/version.rb
CHANGED
|
@@ -4,11 +4,8 @@ module Bolognese
|
|
|
4
4
|
module Writers
|
|
5
5
|
module DataciteJsonWriter
|
|
6
6
|
def datacite_json
|
|
7
|
-
# Remove the following change for the schema 4.5 release
|
|
8
7
|
if crosscite_hsh.present?
|
|
9
|
-
|
|
10
|
-
datacite_json_hsh['publisher'] = self.publisher['name'] if self.publisher&.respond_to?(:to_hash) && self.publisher.has_key?('name') && !self.publisher['name'].blank?
|
|
11
|
-
JSON.pretty_generate datacite_json_hsh.transform_keys! { |key| key.camelcase(uppercase_first_letter = :lower) }
|
|
8
|
+
JSON.pretty_generate crosscite_hsh.transform_keys! { |key| key.camelcase(uppercase_first_letter = :lower) }
|
|
12
9
|
end
|
|
13
10
|
end
|
|
14
11
|
end
|
|
@@ -86,7 +86,10 @@ module Bolognese
|
|
|
86
86
|
end
|
|
87
87
|
|
|
88
88
|
def insert_publisher_name(xml)
|
|
89
|
-
|
|
89
|
+
attributes = {
|
|
90
|
+
"xml:lang" => publisher["lang"]
|
|
91
|
+
}.compact
|
|
92
|
+
xml.send("publisher-name", attributes, publisher["name"])
|
|
90
93
|
end
|
|
91
94
|
|
|
92
95
|
def insert_publication_date(xml)
|
|
@@ -37,7 +37,7 @@ module Bolognese
|
|
|
37
37
|
"schemaVersion" => schema_version,
|
|
38
38
|
"periodical" => types.present? ? ((types["schemaOrg"] != "Dataset") && container.present? ? to_schema_org(container) : nil) : nil,
|
|
39
39
|
"includedInDataCatalog" => types.present? ? ((types["schemaOrg"] == "Dataset") && container.present? ? to_schema_org_container(container, type: "Dataset") : nil) : nil,
|
|
40
|
-
"publisher" => publisher.present? ? { "@type" => "Organization", "name" => publisher["name"] } : nil,
|
|
40
|
+
"publisher" => publisher.present? ? { "@type" => "Organization", "@id" => publisher["publisherIdentifier"], "name" => publisher["name"] }.compact : nil,
|
|
41
41
|
"funder" => to_schema_org_funder(funding_references),
|
|
42
42
|
"provider" => agency.present? ? { "@type" => "Organization", "name" => agency } : nil
|
|
43
43
|
}.compact.presence
|
data/spec/author_utils_spec.rb
CHANGED
|
@@ -168,11 +168,12 @@ describe Bolognese::Metadata, vcr: true do
|
|
|
168
168
|
expect(subject.creators[4]).to eq("nameType"=>"Organizational", "name"=>"University Of Kivu", "nameIdentifiers"=> [{"nameIdentifier"=>"https://ror.org/01qfhxr31", "schemeUri"=>"https://ror.org", "nameIdentifierScheme"=>"ROR"}], "affiliation"=>[])
|
|
169
169
|
expect(subject.creators[5]).to eq("nameType"=>"Organizational", "name"=>"សាកលវិទ្យាល័យកម្ពុជា", "nameIdentifiers"=> [{"nameIdentifier"=>"http://ror.org/025e3rc84", "nameIdentifierScheme"=>"RORS"}], "affiliation"=>[])
|
|
170
170
|
expect(subject.creators[6]).to eq("nameType"=>"Organizational", "name"=>"جامعة زاخۆ", "nameIdentifiers"=> [{"nameIdentifier"=>"05sd1pz50", "schemeUri"=>"https://ror.org", "nameIdentifierScheme"=>"RORS"}], "affiliation"=>[])
|
|
171
|
+
expect(subject.creators[9]).to eq("nameType"=>"Organizational", "name"=>"Gump South Pacific Research Station", "nameIdentifiers"=> [{"nameIdentifier"=>"https://ror.org/04sk0et52", "schemeUri"=>"https://ror.org", "nameIdentifierScheme"=>"ROR"}], "affiliation"=>[])
|
|
171
172
|
expect(subject.contributors.first).to eq("nameType"=>"Organizational", "name"=>" Nawroz University ", "nameIdentifiers"=> [{"nameIdentifier"=>"https://ror.org/04gp75d48", "schemeUri"=>"https://ror.org", "nameIdentifierScheme"=>"ROR"}], "affiliation"=>[], "contributorType"=>"Producer")
|
|
172
173
|
expect(subject.contributors.last).to eq("nameType"=>"Organizational", "name"=>"University Of Greenland (Https://Www.Uni.Gl/)", "nameIdentifiers"=> [{"nameIdentifier"=>"https://ror.org/00t5j6b61", "schemeUri"=>"https://ror.org", "nameIdentifierScheme"=>"ROR"}],"affiliation"=>[], "contributorType"=>"Sponsor")
|
|
173
174
|
end
|
|
174
175
|
|
|
175
|
-
context "affiliationIdentifier" do
|
|
176
|
+
context "affiliationIdentifier/nameIdentifier" do
|
|
176
177
|
let(:input) { fixture_path + 'datacite-example-ROR-nameIdentifiers.xml' }
|
|
177
178
|
subject { Bolognese::Metadata.new(input: input, from: "datacite") }
|
|
178
179
|
|
|
@@ -207,6 +208,11 @@ describe Bolognese::Metadata, vcr: true do
|
|
|
207
208
|
expect(subject.creators[8]["nameIdentifiers"]).to eq([{"nameIdentifier"=>"https://orcid.org/0000-0001-9998-0118", "schemeUri"=>"https://orcid.org", "nameIdentifierScheme"=>"ORCID"}])
|
|
208
209
|
end
|
|
209
210
|
|
|
211
|
+
it "should normalize valid ORCID nameIdentifier with trailing slash" do
|
|
212
|
+
#" 0000-0001-9998-0118 ", # Valid ORCID with leading/trailing spaces
|
|
213
|
+
expect(subject.creators[10]["nameIdentifiers"]).to eq([{"nameIdentifier"=>"https://orcid.org/0000-0001-9998-0117", "schemeUri"=>"https://orcid.org", "nameIdentifierScheme"=>"ORCID"}])
|
|
214
|
+
end
|
|
215
|
+
|
|
210
216
|
it "should parse non ROR schema's without normalizing them" do
|
|
211
217
|
input = fixture_path + 'datacite-example-ROR-nameIdentifiers.xml'
|
|
212
218
|
subject = Bolognese::Metadata.new(input: input, from: "datacite")
|
|
@@ -250,4 +256,4 @@ describe Bolognese::Metadata, vcr: true do
|
|
|
250
256
|
expect(response).to eq("Matt Jones and Peter Slaughter and {University of California, Santa Barbara}")
|
|
251
257
|
end
|
|
252
258
|
end
|
|
253
|
-
end
|
|
259
|
+
end
|
|
@@ -43,6 +43,14 @@
|
|
|
43
43
|
<creatorName nameType="Personal">Mike B</creatorName>
|
|
44
44
|
<nameIdentifier nameIdentifierScheme="ORCID"> 0000-0001-9998-0118 </nameIdentifier>
|
|
45
45
|
</creator>
|
|
46
|
+
<creator>
|
|
47
|
+
<creatorName nameType="Organizational">Gump South Pacific Research Station</creatorName>
|
|
48
|
+
<nameIdentifier nameIdentifierScheme="ROR" schemeURI="https://ror.org/">https://ror.org/04sk0et52/</nameIdentifier>
|
|
49
|
+
</creator>
|
|
50
|
+
<creator>
|
|
51
|
+
<creatorName nameType="Personal">Ashwini Sukale</creatorName>
|
|
52
|
+
<nameIdentifier schemeURI="https://orcid.org/" nameIdentifierScheme="ORCID">https://orcid.org/0000-0001-9998-0117/</nameIdentifier>
|
|
53
|
+
</creator>
|
|
46
54
|
</creators>
|
|
47
55
|
<titles>
|
|
48
56
|
<title xml:lang="en-US">Genomic Standards Consortium (GSC) Island Sampling Day: Moorea Reef to Ridges Genomic Transect</title>
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
<title xml:lang="en">DOI Test 2 title content</title>
|
|
16
16
|
<title xml:lang="en">AAPP</title>
|
|
17
17
|
</titles>
|
|
18
|
-
<publisher>OSI SAF</publisher>
|
|
18
|
+
<publisher xml:lang="en">OSI SAF</publisher>
|
|
19
19
|
<publicationYear>2004</publicationYear>
|
|
20
20
|
<resourceType resourceTypeGeneral="Collection">Climate Data Record</resourceType>
|
|
21
21
|
<dates>
|
|
@@ -169,7 +169,7 @@ describe Bolognese::Metadata, vcr: true do
|
|
|
169
169
|
expect(subject.publication_year).to eq("2016")
|
|
170
170
|
expect(subject.related_identifiers.length).to eq(3)
|
|
171
171
|
expect(subject.related_identifiers.last).to eq("relatedIdentifier"=>"10.5438/55e5-t5c0", "relatedIdentifierType"=>"DOI", "relationType"=>"References")
|
|
172
|
-
expect(subject.publisher).to eq({"name"=>"DataCite"})
|
|
172
|
+
expect(subject.publisher).to eq({"name"=>"DataCite", "publisherIdentifier"=>"https://ror.org/04wxnsj81"})
|
|
173
173
|
end
|
|
174
174
|
|
|
175
175
|
it "GTEx dataset" do
|
|
@@ -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
|
|
@@ -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
|
|
@@ -365,5 +365,18 @@ 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
|
|
368
381
|
end
|
|
369
382
|
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.0
|
|
4
|
+
version: 2.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Martin Fenner
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2024-02-28 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
|
|
@@ -1322,14 +1316,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
1322
1316
|
requirements:
|
|
1323
1317
|
- - ">="
|
|
1324
1318
|
- !ruby/object:Gem::Version
|
|
1325
|
-
version: '
|
|
1319
|
+
version: '3.0'
|
|
1326
1320
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
1327
1321
|
requirements:
|
|
1328
1322
|
- - ">="
|
|
1329
1323
|
- !ruby/object:Gem::Version
|
|
1330
1324
|
version: '0'
|
|
1331
1325
|
requirements: []
|
|
1332
|
-
rubygems_version: 3.
|
|
1326
|
+
rubygems_version: 3.3.26
|
|
1333
1327
|
signing_key:
|
|
1334
1328
|
specification_version: 4
|
|
1335
1329
|
summary: Ruby client library for conversion of DOI Metadata
|