bolognese 1.0.6 → 1.0.7
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/Gemfile.lock +1 -1
- data/lib/bolognese/author_utils.rb +1 -1
- data/lib/bolognese/datacite_utils.rb +51 -55
- data/lib/bolognese/metadata.rb +16 -16
- data/lib/bolognese/metadata_utils.rb +5 -5
- data/lib/bolognese/readers/bibtex_reader.rb +4 -4
- data/lib/bolognese/readers/citeproc_reader.rb +9 -6
- data/lib/bolognese/readers/codemeta_reader.rb +7 -4
- data/lib/bolognese/readers/crossref_reader.rb +23 -17
- data/lib/bolognese/readers/datacite_json_reader.rb +21 -19
- data/lib/bolognese/readers/datacite_reader.rb +30 -66
- data/lib/bolognese/readers/ris_reader.rb +6 -3
- data/lib/bolognese/readers/schema_org_reader.rb +12 -9
- data/lib/bolognese/utils.rb +15 -14
- data/lib/bolognese/version.rb +1 -1
- data/lib/bolognese/writers/bibtex_writer.rb +2 -2
- data/lib/bolognese/writers/codemeta_writer.rb +3 -3
- data/lib/bolognese/writers/crosscite_writer.rb +6 -6
- data/lib/bolognese/writers/datacite_json_writer.rb +9 -9
- data/lib/bolognese/writers/jats_writer.rb +4 -4
- data/lib/bolognese/writers/ris_writer.rb +4 -4
- data/lib/bolognese/writers/schema_org_writer.rb +6 -6
- data/spec/author_utils_spec.rb +1 -1
- data/spec/datacite_utils_spec.rb +2 -2
- data/spec/fixtures/crosscite.json +26 -16
- data/spec/fixtures/datacite.json +20 -14
- data/spec/fixtures/datacite_software.json +10 -6
- data/spec/readers/bibtex_reader_spec.rb +6 -6
- data/spec/readers/citeproc_reader_spec.rb +3 -3
- data/spec/readers/codemeta_reader_spec.rb +14 -14
- data/spec/readers/crosscite_reader_spec.rb +8 -9
- data/spec/readers/crossref_reader_spec.rb +31 -28
- data/spec/readers/datacite_json_reader_spec.rb +20 -6
- data/spec/readers/datacite_reader_spec.rb +94 -93
- data/spec/readers/ris_reader_spec.rb +5 -5
- data/spec/readers/schema_org_reader_spec.rb +41 -34
- data/spec/utils_spec.rb +3 -3
- data/spec/writers/bibtex_writer_spec.rb +1 -1
- data/spec/writers/citeproc_writer_spec.rb +1 -1
- data/spec/writers/codemeta_writer_spec.rb +15 -15
- data/spec/writers/crosscite_writer_spec.rb +16 -16
- data/spec/writers/datacite_json_writer_spec.rb +17 -17
- data/spec/writers/datacite_writer_spec.rb +26 -26
- data/spec/writers/ris_writer_spec.rb +2 -1
- metadata +2 -2
@@ -36,8 +36,8 @@ describe Bolognese::Metadata, vcr: true do
|
|
36
36
|
"name"=>"Martial Sankar",
|
37
37
|
"givenName"=>"Martial",
|
38
38
|
"familyName"=>"Sankar")
|
39
|
-
expect(subject.
|
40
|
-
expect(subject.
|
39
|
+
expect(subject.titles).to eq([{"title"=>"Automated quantitative histology reveals vascular morphodynamics during Arabidopsis hypocotyl secondary growth"}])
|
40
|
+
expect(subject.descriptions.first["description"]).to start_with("Among various advantages, their small size makes model organisms preferred subjects of investigation.")
|
41
41
|
expect(subject.dates).to eq([{"date"=>"2014", "date_type"=>"Issued"}])
|
42
42
|
expect(subject.publication_year).to eq("2014")
|
43
43
|
expect(subject.related_identifiers).to eq([{"id"=>"2050084X", "related_identifier_type"=>"ISSN", "relation_type"=>"IsPartOf", "title"=>"eLife", "type"=>"Periodical"}])
|
@@ -52,9 +52,9 @@ describe Bolognese::Metadata, vcr: true do
|
|
52
52
|
expect(subject.state).to eq("not_found")
|
53
53
|
expect(subject.identifier).to eq("https://doi.org/10.7554/elife.01567")
|
54
54
|
expect(subject.types).to eq("citeproc"=>"misc", "resource_type_general"=>"Text", "ris"=>"THES", "type"=>"Thesis")
|
55
|
-
expect(subject.creator).to eq("type"=>"Person", "name"=>"Y. Toparlar", "givenName"=>"Y.", "familyName"=>"Toparlar")
|
56
|
-
expect(subject.
|
57
|
-
expect(subject.
|
55
|
+
expect(subject.creator).to eq([{"type"=>"Person", "name"=>"Y. Toparlar", "givenName"=>"Y.", "familyName"=>"Toparlar"}])
|
56
|
+
expect(subject.titles).to eq([{"title"=>"A multiscale analysis of the urban heat island effect"}])
|
57
|
+
expect(subject.descriptions.first["description"]).to start_with("Designing the climates of cities")
|
58
58
|
expect(subject.dates).to eq([{"date"=>"2018-04-25", "date_type"=>"Issued"}, {"date"=>"2018-04-25", "date_type"=>"Created"}])
|
59
59
|
expect(subject.publication_year).to eq("2018")
|
60
60
|
end
|
@@ -22,14 +22,14 @@ describe Bolognese::Metadata, vcr: true do
|
|
22
22
|
expect(subject.identifier).to eq("https://doi.org/10.5438/4k3m-nyvg")
|
23
23
|
expect(subject.url).to eq("https://blog.datacite.org/eating-your-own-dog-food")
|
24
24
|
expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"post-weblog", "resource_type_general"=>"Text", "ris"=>"GEN", "type"=>"BlogPosting")
|
25
|
-
expect(subject.creator).to eq("type"=>"Person", "id"=>"https://orcid.org/0000-0003-1419-2405", "name"=>"Martin Fenner", "givenName"=>"Martin", "familyName"=>"Fenner")
|
26
|
-
expect(subject.
|
27
|
-
expect(subject.
|
28
|
-
expect(subject.
|
25
|
+
expect(subject.creator).to eq([{"type"=>"Person", "id"=>"https://orcid.org/0000-0003-1419-2405", "name"=>"Martin Fenner", "givenName"=>"Martin", "familyName"=>"Fenner"}])
|
26
|
+
expect(subject.titles).to eq([{"title"=>"Eating your own Dog Food"}])
|
27
|
+
expect(subject.descriptions.first["description"]).to start_with("Eating your own dog food")
|
28
|
+
expect(subject.subjects).to eq([{"subject"=>"datacite"}, {"subject"=>"doi"}, {"subject"=>"metadata"}, {"subject"=>"featured"}])
|
29
29
|
expect(subject.dates).to eq([{"date"=>"2016-12-20", "date_type"=>"Issued"}, {"date"=>"2016-12-20", "date_type"=>"Created"}, {"date"=>"2016-12-20", "date_type"=>"Updated"}])
|
30
30
|
expect(subject.publication_year).to eq("2016")
|
31
31
|
expect(subject.related_identifiers.length).to eq(3)
|
32
|
-
expect(subject.related_identifiers.last).to eq("
|
32
|
+
expect(subject.related_identifiers.last).to eq("related_identifier"=>"10.5438/55e5-t5c0", "related_identifier_type"=>"DOI", "relation_type"=>"References")
|
33
33
|
expect(subject.publisher).to eq("DataCite")
|
34
34
|
end
|
35
35
|
|
@@ -51,7 +51,7 @@ describe Bolognese::Metadata, vcr: true do
|
|
51
51
|
expect(subject.doi).to eq("10.5281/zenodo.1196821")
|
52
52
|
expect(subject.url).to eq("https://zenodo.org/record/1196821")
|
53
53
|
expect(subject.types).to eq("bibtex"=>"misc", "citeproc"=>"dataset", "resource_type_general"=>"Dataset", "ris"=>"DATA", "type"=>"Dataset")
|
54
|
-
expect(subject.
|
54
|
+
expect(subject.titles).to eq([{"title"=>"PsPM-SC4B: SCR, ECG, EMG, PSR and respiration measurements in a delay fear conditioning task with auditory CS and electrical US"}])
|
55
55
|
expect(subject.creator.size).to eq(6)
|
56
56
|
expect(subject.creator.first).to eq("type"=>"Person", "id"=>"https://orcid.org/0000-0001-9688-838X", "name"=>"Matthias Staib", "givenName"=>"Matthias", "familyName"=>"Staib")
|
57
57
|
end
|
@@ -64,7 +64,7 @@ describe Bolognese::Metadata, vcr: true do
|
|
64
64
|
expect(subject.doi).to eq("10.1594/pangaea.836178")
|
65
65
|
expect(subject.url).to eq("https://doi.pangaea.de/10.1594/PANGAEA.836178")
|
66
66
|
expect(subject.types).to eq("bibtex"=>"misc", "citeproc"=>"dataset", "resource_type_general"=>"Dataset", "ris"=>"DATA", "type"=>"Dataset")
|
67
|
-
expect(subject.
|
67
|
+
expect(subject.titles).to eq([{"title"=>"Hydrological and meteorological investigations in a lake near Kangerlussuaq, west Greenland"}])
|
68
68
|
expect(subject.creator.size).to eq(8)
|
69
69
|
expect(subject.creator.first).to eq("type"=>"Person", "name"=>"Johansson, Emma", "givenName"=>"Emma", "familyName"=>"Johansson")
|
70
70
|
end
|
@@ -91,9 +91,9 @@ describe Bolognese::Metadata, vcr: true do
|
|
91
91
|
expect(subject.identifier).to eq("https://doi.org/10.7910/dvn/nj7xso")
|
92
92
|
expect(subject.doi).to eq("10.7910/dvn/nj7xso")
|
93
93
|
expect(subject.types).to eq("bibtex"=>"misc", "citeproc"=>"dataset", "resource_type_general"=>"Dataset", "ris"=>"DATA", "type"=>"Dataset")
|
94
|
-
expect(subject.
|
94
|
+
expect(subject.titles).to eq([{"title"=>"Summary data ankylosing spondylitis GWAS"}])
|
95
95
|
expect(subject.periodical).to eq("title"=>"Harvard Dataverse", "type"=>"DataCatalog", "url"=>"https://dataverse.harvard.edu")
|
96
|
-
expect(subject.creator).to eq("name" => "International Genetics Of Ankylosing Spondylitis Consortium (IGAS)")
|
96
|
+
expect(subject.creator).to eq([{"name" => "International Genetics Of Ankylosing Spondylitis Consortium (IGAS)"}])
|
97
97
|
expect(subject.schema_version).to eq("https://schema.org/version/3.3")
|
98
98
|
end
|
99
99
|
|
@@ -104,9 +104,9 @@ describe Bolognese::Metadata, vcr: true do
|
|
104
104
|
expect(subject.identifier).to eq("https://doi.org/10.7910/dvn/nj7xso")
|
105
105
|
expect(subject.doi).to eq("10.7910/dvn/nj7xso")
|
106
106
|
expect(subject.types).to eq("bibtex"=>"misc", "citeproc"=>"dataset", "resource_type_general"=>"Dataset", "ris"=>"DATA", "type"=>"Dataset")
|
107
|
-
expect(subject.
|
107
|
+
expect(subject.titles).to eq([{"title"=>"Summary data ankylosing spondylitis GWAS"}])
|
108
108
|
expect(subject.periodical).to eq("title"=>"Harvard Dataverse", "type"=>"DataCatalog", "url"=>"https://dataverse.harvard.edu")
|
109
|
-
expect(subject.creator).to eq("name" => "International Genetics Of Ankylosing Spondylitis Consortium (IGAS)")
|
109
|
+
expect(subject.creator).to eq([{"name" => "International Genetics Of Ankylosing Spondylitis Consortium (IGAS)"}])
|
110
110
|
end
|
111
111
|
end
|
112
112
|
|
@@ -118,14 +118,14 @@ describe Bolognese::Metadata, vcr: true do
|
|
118
118
|
expect(subject.identifier).to eq("https://doi.org/10.5438/4k3m-nyvg")
|
119
119
|
expect(subject.url).to eq("https://blog.datacite.org/eating-your-own-dog-food")
|
120
120
|
expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"post-weblog", "resource_type_general"=>"Text", "ris"=>"GEN", "type"=>"BlogPosting")
|
121
|
-
expect(subject.creator).to eq("type"=>"Person", "id"=>"http://orcid.org/0000-0003-1419-2405", "name"=>"Martin Fenner", "givenName"=>"Martin", "familyName"=>"Fenner")
|
122
|
-
expect(subject.
|
123
|
-
expect(subject.
|
124
|
-
expect(subject.
|
121
|
+
expect(subject.creator).to eq([{"type"=>"Person", "id"=>"http://orcid.org/0000-0003-1419-2405", "name"=>"Martin Fenner", "givenName"=>"Martin", "familyName"=>"Fenner"}])
|
122
|
+
expect(subject.titles).to eq([{"title"=>"Eating your own Dog Food"}])
|
123
|
+
expect(subject.descriptions.first["description"]).to start_with("Eating your own dog food")
|
124
|
+
expect(subject.subjects).to eq([{"subject"=>"datacite"}, {"subject"=>"doi"}, {"subject"=>"metadata"}, {"subject"=>"featured"}])
|
125
125
|
expect(subject.dates).to eq([{"date"=>"2016-12-20", "date_type"=>"Issued"}, {"date"=>"2016-12-20", "date_type"=>"Created"}, {"date"=>"2016-12-20", "date_type"=>"Updated"}])
|
126
126
|
expect(subject.publication_year).to eq("2016")
|
127
127
|
expect(subject.related_identifiers.length).to eq(3)
|
128
|
-
expect(subject.related_identifiers.last).to eq("
|
128
|
+
expect(subject.related_identifiers.last).to eq("related_identifier"=>"10.5438/55e5-t5c0", "related_identifier_type"=>"DOI", "relation_type"=>"References")
|
129
129
|
expect(subject.publisher).to eq("DataCite")
|
130
130
|
end
|
131
131
|
|
@@ -135,14 +135,14 @@ describe Bolognese::Metadata, vcr: true do
|
|
135
135
|
|
136
136
|
expect(subject.valid?).to be true
|
137
137
|
expect(subject.identifier).to eq("https://doi.org/10.25491/d50j-3083")
|
138
|
-
expect(subject.alternate_identifiers).to eq("
|
138
|
+
expect(subject.alternate_identifiers).to eq([{"alternate_identifier"=>"687610993", "alternate_identifier_type"=>"md5"}])
|
139
139
|
expect(subject.url).to eq("https://ors.datacite.org/doi:/10.25491/d50j-3083")
|
140
140
|
expect(subject.content_url).to eq(["https://storage.googleapis.com/gtex_analysis_v7/single_tissue_eqtl_data/GTEx_Analysis_v7_eQTL_expression_matrices.tar.gz"])
|
141
141
|
expect(subject.types).to eq("bibtex"=>"misc", "citeproc"=>"dataset", "resource_type"=>"Gene expression matrices", "resource_type_general"=>"Dataset", "ris"=>"DATA", "type"=>"Dataset")
|
142
|
-
expect(subject.creator).to eq("name"=>"The GTEx Consortium", "type"=>"Organization")
|
143
|
-
expect(subject.
|
142
|
+
expect(subject.creator).to eq([{"name"=>"The GTEx Consortium", "type"=>"Organization"}])
|
143
|
+
expect(subject.titles).to eq([{"title"=>"Fully processed, filtered and normalized gene expression matrices (in BED format) for each tissue, which were used as input into FastQTL for eQTL discovery"}])
|
144
144
|
expect(subject.version).to eq("v7")
|
145
|
-
expect(subject.
|
145
|
+
expect(subject.subjects).to eq([{"subject"=>"gtex"}, {"subject"=>"annotation"}, {"subject"=>"phenotype"}, {"subject"=>"gene regulation"}, {"subject"=>"transcriptomics"}])
|
146
146
|
expect(subject.dates).to eq([{"date"=>"2017", "date_type"=>"Issued"}])
|
147
147
|
expect(subject.publication_year).to eq("2017")
|
148
148
|
expect(subject.periodical).to eq("title"=>"GTEx", "type"=>"DataCatalog")
|
@@ -157,17 +157,17 @@ describe Bolognese::Metadata, vcr: true do
|
|
157
157
|
|
158
158
|
expect(subject.valid?).to be true
|
159
159
|
expect(subject.identifier).to eq("https://doi.org/10.23725/8na3-9s47")
|
160
|
-
expect(subject.alternate_identifiers).to eq([{"
|
160
|
+
expect(subject.alternate_identifiers).to eq([{"alternate_identifier"=>"3b33f6b9338fccab0901b7d317577ea3","alternate_identifier_type"=>"md5"},{"alternate_identifier"=>"ark:/99999/fk41CrU4eszeLUDe","alternate_identifier_type"=>"minid"},{"alternate_identifier"=>"dg.4503/c3d66dc9-58da-411c-83c4-dd656aa3c4b7", "alternate_identifier_type"=>"dataguid"}])
|
161
161
|
expect(subject.url).to eq("https://ors.datacite.org/doi:/10.23725/8na3-9s47")
|
162
162
|
expect(subject.content_url).to eq(["s3://cgp-commons-public/topmed_open_access/197bc047-e917-55ed-852d-d563cdbc50e4/NWD165827.recab.cram", "gs://topmed-irc-share/public/NWD165827.recab.cram"])
|
163
163
|
expect(subject.types).to eq("bibtex"=>"misc", "citeproc"=>"dataset", "resource_type"=>"CRAM file", "resource_type_general"=>"Dataset", "ris"=>"DATA", "type"=>"Dataset")
|
164
|
-
expect(subject.creator).to eq("name"=>"TOPMed IRC", "type"=>"Organization")
|
165
|
-
expect(subject.
|
166
|
-
expect(subject.
|
164
|
+
expect(subject.creator).to eq([{"name"=>"TOPMed IRC", "type"=>"Organization"}])
|
165
|
+
expect(subject.titles).to eq([{"title"=>"NWD165827.recab.cram"}])
|
166
|
+
expect(subject.subjects).to eq([{"subject"=>"topmed"}, {"subject"=>"whole genome sequencing"}])
|
167
167
|
expect(subject.dates).to eq([{"date"=>"2017-11-30", "date_type"=>"Issued"}])
|
168
168
|
expect(subject.publication_year).to eq("2017")
|
169
169
|
expect(subject.publisher).to eq("TOPMed")
|
170
|
-
expect(subject.related_identifiers).to eq([{"
|
170
|
+
expect(subject.related_identifiers).to eq([{"related_identifier"=>"10.23725/2g4s-qv04", "related_identifier_type"=>"DOI", "relation_type"=>"References", "resource_type_general"=>"Dataset"}])
|
171
171
|
expect(subject.funding_references).to eq([{"funder_identifier"=>"https://doi.org/10.13039/100000050", "funder_identifier_type"=>"Crossref Funder ID", "funder_name"=>"National Heart, Lung, and Blood Institute (NHLBI)"}])
|
172
172
|
end
|
173
173
|
|
@@ -180,13 +180,20 @@ describe Bolognese::Metadata, vcr: true do
|
|
180
180
|
expect(subject.types).to eq("bibtex"=>"misc", "citeproc"=>"dataset", "resource_type"=>"dataset", "resource_type_general"=>"Dataset", "ris"=>"DATA", "type"=>"Dataset")
|
181
181
|
expect(subject.creator.length).to eq(6)
|
182
182
|
expect(subject.creator.first).to eq("familyName"=>"Bales", "givenName"=>"Roger", "name"=>"Roger Bales", "type"=>"Person")
|
183
|
-
expect(subject.
|
184
|
-
expect(subject.
|
183
|
+
expect(subject.titles).to eq([{"title"=>"Southern Sierra Critical Zone Observatory (SSCZO), Providence Creek meteorological data, soil moisture and temperature, snow depth and air temperature"}])
|
184
|
+
expect(subject.subjects).to eq([{"subject"=>"Earth sciences"},
|
185
|
+
{"subject"=>"soil moisture"},
|
186
|
+
{"subject"=>"soil temperature"},
|
187
|
+
{"subject"=>"snow depth"},
|
188
|
+
{"subject"=>"air temperature"},
|
189
|
+
{"subject"=>"water balance"},
|
190
|
+
{"subject"=>"Nevada"},
|
191
|
+
{"subject"=>"Sierra (mountain range)"}])
|
185
192
|
expect(subject.dates).to eq([{"date"=>"2013", "date_type"=>"Issued"}, {"date"=>"2014-10-17", "date_type"=>"Updated"}])
|
186
193
|
expect(subject.publication_year).to eq("2013")
|
187
194
|
expect(subject.publisher).to eq("UC Merced")
|
188
195
|
expect(subject.funding_references).to eq([{"funder_name"=>"National Science Foundation, Division of Earth Sciences, Critical Zone Observatories"}])
|
189
|
-
expect(subject.
|
196
|
+
expect(subject.geo_locations).to eq([{"geo_location_place"=>"Providence Creek (Lower, Upper and P301)", "geo_location_point"=>{"point_latitude"=>"37.047756", "point_longitude"=>"-119.221094"}}])
|
190
197
|
end
|
191
198
|
|
192
199
|
it "geolocation geoshape" do
|
@@ -198,11 +205,11 @@ describe Bolognese::Metadata, vcr: true do
|
|
198
205
|
expect(subject.types).to eq("bibtex"=>"misc", "citeproc"=>"dataset", "resource_type_general"=>"Dataset", "ris"=>"DATA", "type"=>"Dataset")
|
199
206
|
expect(subject.creator.length).to eq(2)
|
200
207
|
expect(subject.creator.first).to eq("name"=>"Tara Oceans Consortium, Coordinators", "type"=>"Organization")
|
201
|
-
expect(subject.
|
208
|
+
expect(subject.titles).to eq([{"title"=>"Registry of all stations from the Tara Oceans Expedition (2009-2013)"}])
|
202
209
|
expect(subject.dates).to eq([{"date"=>"2015-02-03", "date_type"=>"Issued"}])
|
203
210
|
expect(subject.publication_year).to eq("2015")
|
204
211
|
expect(subject.publisher).to eq("PANGAEA")
|
205
|
-
expect(subject.
|
212
|
+
expect(subject.geo_locations).to eq([{"geo_location_box"=>{"east_bound_longitude"=>"174.9006", "north_bound_latitude"=>"79.6753", "south_bound_latitude"=>"-64.3088", "west_bound_longitude"=>"-168.5182"}}])
|
206
213
|
end
|
207
214
|
|
208
215
|
it "schema_org list" do
|
@@ -211,13 +218,13 @@ describe Bolognese::Metadata, vcr: true do
|
|
211
218
|
subject = Bolognese::Metadata.new(input: input)
|
212
219
|
expect(subject.valid?).to be true
|
213
220
|
expect(subject.identifier).to eq("https://doi.org/10.23725/7jg3-v803")
|
214
|
-
expect(subject.alternate_identifiers).to eq([{"
|
221
|
+
expect(subject.alternate_identifiers).to eq([{"alternate_identifier"=>"ark:/99999/fk4E1n6n1YHKxPk","alternate_identifier_type"=>"minid"},{"alternate_identifier"=>"dg.4503/01b048d0-e128-4cb0-94e9-b2d2cab7563d","alternate_identifier_type"=>"dataguid"},{"alternate_identifier"=>"f9e72bdf25bf4b4f0e581d9218fec2eb","alternate_identifier_type"=>"md5"}])
|
215
222
|
expect(subject.url).to eq("https://ors.datacite.org/doi:/10.23725/7jg3-v803")
|
216
223
|
expect(subject.content_url).to eq(["s3://cgp-commons-public/topmed_open_access/44a8837b-4456-5709-b56b-54e23000f13a/NWD100953.recab.cram","gs://topmed-irc-share/public/NWD100953.recab.cram","dos://dos.commons.ucsc-cgp.org/01b048d0-e128-4cb0-94e9-b2d2cab7563d?version=2018-05-26T133719.491772Z"])
|
217
224
|
expect(subject.types).to eq("bibtex"=>"misc", "citeproc"=>"dataset", "resource_type"=>"CRAM file", "resource_type_general"=>"Dataset", "ris"=>"DATA", "type"=>"Dataset")
|
218
|
-
expect(subject.creator).to eq("name"=>"TOPMed", "type"=>"Organization")
|
219
|
-
expect(subject.
|
220
|
-
expect(subject.
|
225
|
+
expect(subject.creator).to eq([{"name"=>"TOPMed", "type"=>"Organization"}])
|
226
|
+
expect(subject.titles).to eq([{"title"=>"NWD100953.recab.cram"}])
|
227
|
+
expect(subject.subjects).to eq([{"subject"=>"topmed"}, {"subject"=>"whole genome sequencing"}])
|
221
228
|
expect(subject.dates).to eq([{"date"=>"2017-11-30", "date_type"=>"Issued"}])
|
222
229
|
expect(subject.publication_year).to eq("2017")
|
223
230
|
expect(subject.publisher).to eq("TOPMed")
|
data/spec/utils_spec.rb
CHANGED
@@ -195,13 +195,13 @@ describe Bolognese::Metadata, vcr: true do
|
|
195
195
|
it "doi" do
|
196
196
|
ids = [{"@type"=>"CreativeWork", "@id"=>"https://doi.org/10.5438/0012"}, {"@type"=>"CreativeWork", "@id"=>"https://doi.org/10.5438/55E5-T5C0"}]
|
197
197
|
response = subject.normalize_ids(ids: ids)
|
198
|
-
expect(response).to eq([{"
|
198
|
+
expect(response).to eq([{"related_identifier"=>"10.5438/0012", "related_identifier_type"=>"DOI"}, {"related_identifier"=>"10.5438/55e5-t5c0", "related_identifier_type"=>"DOI"}])
|
199
199
|
end
|
200
200
|
|
201
201
|
it "url" do
|
202
202
|
ids = [{"@type"=>"CreativeWork", "@id"=>"https://blog.datacite.org/eating-your-own-dog-food/"}]
|
203
203
|
response = subject.normalize_ids(ids: ids)
|
204
|
-
expect(response).to eq("
|
204
|
+
expect(response).to eq("related_identifier"=>"https://blog.datacite.org/eating-your-own-dog-food", "related_identifier_type"=>"URL")
|
205
205
|
end
|
206
206
|
end
|
207
207
|
|
@@ -238,7 +238,7 @@ describe Bolognese::Metadata, vcr: true do
|
|
238
238
|
context "to_schema_org_identifier" do
|
239
239
|
it "with alternate_identifier" do
|
240
240
|
identifier = "https://doi.org/10.23725/8na3-9s47"
|
241
|
-
alternate_identifiers = [{"
|
241
|
+
alternate_identifiers = [{"alternate_identifier_type"=>"md5", "alternate_identifier"=>"3b33f6b9338fccab0901b7d317577ea3"}, {"alternate_identifier_type"=>"minid", "alternate_identifier"=>"ark:/99999/fk41CrU4eszeLUDe"}, {"alternate_identifier_type"=>"dataguid", "alternate_identifier"=>"dg.4503/c3d66dc9-58da-411c-83c4-dd656aa3c4b7"}]
|
242
242
|
response = subject.to_schema_org_identifier(identifier, alternate_identifiers: alternate_identifiers, type: "Dataset")
|
243
243
|
expect(response).to eq([{"@type"=>"PropertyValue", "propertyID"=>"doi", "value"=>"https://doi.org/10.23725/8na3-9s47"},
|
244
244
|
{"@type"=>"PropertyValue",
|
@@ -76,7 +76,7 @@ describe Bolognese::Metadata, vcr: true do
|
|
76
76
|
input = fixture_path + "datacite.json"
|
77
77
|
subject = Bolognese::Metadata.new(input: input, from: "datacite_json")
|
78
78
|
bibtex = BibTeX.parse(subject.bibtex).to_a(quotes: '').first
|
79
|
-
expect(bibtex[:bibtex_type].to_s).to eq("
|
79
|
+
expect(bibtex[:bibtex_type].to_s).to eq("article")
|
80
80
|
expect(bibtex[:bibtex_key]).to eq("https://doi.org/10.5438/4k3m-nyvg")
|
81
81
|
expect(bibtex[:doi]).to eq("10.5438/4k3m-nyvg")
|
82
82
|
expect(bibtex[:title]).to eq("Eating your own Dog Food")
|
@@ -44,7 +44,7 @@ describe Bolognese::Metadata, vcr: true do
|
|
44
44
|
input = fixture_path + "datacite.json"
|
45
45
|
subject = Bolognese::Metadata.new(input: input, from: "datacite_json")
|
46
46
|
json = JSON.parse(subject.citeproc)
|
47
|
-
expect(json["type"]).to eq("article")
|
47
|
+
expect(json["type"]).to eq("article-journal")
|
48
48
|
expect(json["id"]).to eq("https://doi.org/10.5438/4k3m-nyvg")
|
49
49
|
expect(json["DOI"]).to eq("10.5438/4k3m-nyvg")
|
50
50
|
expect(json["title"]).to eq("Eating your own Dog Food")
|
@@ -4,20 +4,20 @@ require 'spec_helper'
|
|
4
4
|
|
5
5
|
describe Bolognese::Metadata, vcr: true do
|
6
6
|
context "write metadata as codemeta" do
|
7
|
-
it "SoftwareSourceCode DataCite JSON" do
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
end
|
7
|
+
# it "SoftwareSourceCode DataCite JSON" do
|
8
|
+
# input = fixture_path + "datacite_software.json"
|
9
|
+
# subject = Bolognese::Metadata.new(input: input, from: "datacite_json")
|
10
|
+
# expect(subject.valid?).to be true
|
11
|
+
# json = JSON.parse(subject.codemeta)
|
12
|
+
# expect(json["@context"]).to eq("https://raw.githubusercontent.com/codemeta/codemeta/master/codemeta.jsonld")
|
13
|
+
# expect(json["@id"]).to eq("https://doi.org/10.5063/f1m61h5x")
|
14
|
+
# expect(json["@type"]).to eq("SoftwareSourceCode")
|
15
|
+
# expect(json["identifier"]).to eq("https://doi.org/10.5063/f1m61h5x")
|
16
|
+
# expect(json["agents"]).to eq("type"=>"Person", "name"=>"Matthew B. Jones", "givenName"=>"Matthew B.", "familyName"=>"Jones")
|
17
|
+
# expect(json["title"]).to eq("dataone: R interface to the DataONE network of data repositories")
|
18
|
+
# expect(json["datePublished"]).to eq("2016")
|
19
|
+
# expect(json["publisher"]).to eq("KNB Data Repository")
|
20
|
+
# end
|
21
21
|
|
22
22
|
it "SoftwareSourceCode DataCite" do
|
23
23
|
input = "https://doi.org/10.5063/f1m61h5x"
|
@@ -28,7 +28,7 @@ describe Bolognese::Metadata, vcr: true do
|
|
28
28
|
expect(json["@id"]).to eq("https://doi.org/10.5063/f1m61h5x")
|
29
29
|
expect(json["@type"]).to eq("SoftwareSourceCode")
|
30
30
|
expect(json["identifier"]).to eq("https://doi.org/10.5063/f1m61h5x")
|
31
|
-
expect(json["agents"]).to eq("name"=>"Jones, Matthew B.; Slaughter, Peter; Nahf, Rob; Boettiger, Carl ; Jones, Chris; Read, Jordan; Walker, Lauren; Hart, Edmund; Chamberlain, Scott")
|
31
|
+
expect(json["agents"]).to eq([{"name"=>"Jones, Matthew B.; Slaughter, Peter; Nahf, Rob; Boettiger, Carl ; Jones, Chris; Read, Jordan; Walker, Lauren; Hart, Edmund; Chamberlain, Scott"}])
|
32
32
|
expect(json["title"]).to eq("dataone: R interface to the DataONE network of data repositories")
|
33
33
|
expect(json["datePublished"]).to eq("2016")
|
34
34
|
expect(json["publisher"]).to eq("KNB Data Repository")
|
@@ -10,14 +10,14 @@ describe Bolognese::Metadata, vcr: true do
|
|
10
10
|
crosscite = JSON.parse(subject.crosscite)
|
11
11
|
expect(crosscite.fetch("url")).to eq("https://elifesciences.org/articles/01567")
|
12
12
|
expect(crosscite.fetch("types")).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resource_type"=>"JournalArticle", "resource_type_general"=>"Text", "ris"=>"JOUR", "type"=>"ScholarlyArticle")
|
13
|
-
expect(crosscite.fetch("
|
13
|
+
expect(crosscite.fetch("titles")).to eq([{"title"=>"Automated quantitative histology reveals vascular morphodynamics during Arabidopsis hypocotyl secondary growth"}])
|
14
14
|
expect(crosscite.fetch("related_identifiers").length).to eq(27)
|
15
|
-
expect(crosscite.fetch("related_identifiers").first).to eq("
|
16
|
-
expect(crosscite.fetch("related_identifiers").last).to eq(
|
15
|
+
expect(crosscite.fetch("related_identifiers").first).to eq("related_identifier"=>"2050-084X", "related_identifier_type"=>"ISSN", "relation_type"=>"IsPartOf", "title"=>"eLife", "type"=>"Periodical")
|
16
|
+
expect(crosscite.fetch("related_identifiers").last).to eq("related_identifier" => "10.1038/ncb2764",
|
17
17
|
"related_identifier_type" => "DOI",
|
18
18
|
"relation_type" => "References",
|
19
19
|
"title" => "A screen for morphological complexity identifies regulators of switch-like transitions between discrete cell shapes")
|
20
|
-
expect(crosscite.fetch("
|
20
|
+
expect(crosscite.fetch("rights_list")).to eq([{"rights_uri"=>"http://creativecommons.org/licenses/by/3.0"}])
|
21
21
|
end
|
22
22
|
|
23
23
|
it "with ORCID ID" do
|
@@ -41,8 +41,8 @@ describe Bolognese::Metadata, vcr: true do
|
|
41
41
|
subject = Bolognese::Metadata.new(input: input, from: "bibtex")
|
42
42
|
crosscite = JSON.parse(subject.crosscite)
|
43
43
|
expect(crosscite.fetch("types")).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resource_type"=>"JournalArticle", "resource_type_general"=>"Text", "ris"=>"JOUR", "type"=>"ScholarlyArticle")
|
44
|
-
expect(crosscite.fetch("
|
45
|
-
expect(crosscite.dig("
|
44
|
+
expect(crosscite.fetch("titles")).to eq([{"title"=>"Automated quantitative histology reveals vascular morphodynamics during Arabidopsis hypocotyl secondary growth"}])
|
45
|
+
expect(crosscite.dig("descriptions", 0, "description")).to start_with("Among various advantages, their small size makes model organisms preferred subjects of investigation.")
|
46
46
|
expect(crosscite.fetch("creator").count).to eq(5)
|
47
47
|
expect(crosscite.fetch("creator").first).to eq("type"=>"Person", "name"=>"Martial Sankar", "givenName"=>"Martial", "familyName"=>"Sankar")
|
48
48
|
end
|
@@ -53,16 +53,16 @@ describe Bolognese::Metadata, vcr: true do
|
|
53
53
|
expect(subject.valid?).to be true
|
54
54
|
crosscite = JSON.parse(subject.crosscite)
|
55
55
|
expect(crosscite["types"]).to eq("bibtex"=>"article", "citeproc"=>"post-weblog", "resource_type_general"=>"Text", "ris"=>"GEN", "type"=>"BlogPosting")
|
56
|
-
expect(crosscite.fetch("
|
57
|
-
expect(crosscite.dig("
|
58
|
-
expect(crosscite.fetch("creator")).to eq("type"=>"Person", "name"=>"Martin Fenner", "givenName"=>"Martin", "familyName"=>"Fenner")
|
56
|
+
expect(crosscite.fetch("titles")).to eq([{"title"=>"Eating your own Dog Food"}])
|
57
|
+
expect(crosscite.dig("descriptions", 0, "description")).to start_with("Eating your own dog food")
|
58
|
+
expect(crosscite.fetch("creator")).to eq([{"type"=>"Person", "name"=>"Martin Fenner", "givenName"=>"Martin", "familyName"=>"Fenner"}])
|
59
59
|
end
|
60
60
|
|
61
61
|
it "rdataone" do
|
62
62
|
input = fixture_path + 'codemeta.json'
|
63
63
|
subject = Bolognese::Metadata.new(input: input, from: "codemeta")
|
64
64
|
crosscite = JSON.parse(subject.crosscite)
|
65
|
-
expect(crosscite["
|
65
|
+
expect(crosscite["titles"]).to eq([{"title"=>"R Interface to the DataONE REST API"}])
|
66
66
|
expect(crosscite["creator"].length).to eq(3)
|
67
67
|
expect(crosscite["creator"].last).to eq("type"=>"Organization", "name"=>"University Of California, Santa Barbara")
|
68
68
|
expect(crosscite["version"]).to eq("2.0.0")
|
@@ -73,7 +73,7 @@ describe Bolognese::Metadata, vcr: true do
|
|
73
73
|
subject = Bolognese::Metadata.new(input: input, from: "datacite")
|
74
74
|
crosscite = JSON.parse(subject.crosscite)
|
75
75
|
expect(crosscite.fetch("url")).to eq("http://datadryad.org/resource/doi:10.5061/dryad.8515")
|
76
|
-
expect(crosscite.fetch("
|
76
|
+
expect(crosscite.fetch("titles")).to eq([{"title"=>"Data from: A new malaria agent in African hominids."}])
|
77
77
|
expect(crosscite.fetch("creator").length).to eq(8)
|
78
78
|
expect(crosscite.fetch("creator").first).to eq("type"=>"Person", "familyName" => "Ollomo", "givenName" => "Benjamin", "name" => "Benjamin Ollomo")
|
79
79
|
expect(crosscite.fetch("dates")).to eq([{"date"=>"2011", "date_type"=>"Issued"}])
|
@@ -86,8 +86,8 @@ describe Bolognese::Metadata, vcr: true do
|
|
86
86
|
input = "https://github.com/datacite/maremma"
|
87
87
|
subject = Bolognese::Metadata.new(input: input, from: "codemeta")
|
88
88
|
crosscite = JSON.parse(subject.crosscite)
|
89
|
-
expect(crosscite.fetch("
|
90
|
-
expect(crosscite.fetch("creator")).to eq("
|
89
|
+
expect(crosscite.fetch("titles")).to eq( [{"title"=>"Maremma: a Ruby library for simplified network calls"}])
|
90
|
+
expect(crosscite.fetch("creator")).to eq([{"familyName"=>"Fenner", "givenName"=>"Martin", "id"=>"http://orcid.org/0000-0003-0077-4738", "name"=>"Martin Fenner", "type"=>"Person"}])
|
91
91
|
end
|
92
92
|
|
93
93
|
it "with data citation schema.org" do
|
@@ -95,10 +95,10 @@ describe Bolognese::Metadata, vcr: true do
|
|
95
95
|
subject = Bolognese::Metadata.new(input: input, from: "schema_org")
|
96
96
|
expect(subject.valid?).to be true
|
97
97
|
crosscite = JSON.parse(subject.crosscite)
|
98
|
-
expect(crosscite.fetch("
|
98
|
+
expect(crosscite.fetch("titles")).to eq([{"title"=>"Eating your own Dog Food"}])
|
99
99
|
expect(crosscite.fetch("related_identifiers").count).to eq(3)
|
100
|
-
expect(crosscite.fetch("related_identifiers").first).to eq("
|
101
|
-
expect(crosscite.fetch("related_identifiers").last).to eq("
|
100
|
+
expect(crosscite.fetch("related_identifiers").first).to eq("related_identifier"=>"10.5438/0000-00ss", "related_identifier_type"=>"DOI", "relation_type"=>"IsPartOf", "resource_type_general"=>"Text", "title"=>"DataCite Blog")
|
101
|
+
expect(crosscite.fetch("related_identifiers").last).to eq("related_identifier"=>"10.5438/55e5-t5c0", "related_identifier_type"=>"DOI", "relation_type"=>"References")
|
102
102
|
end
|
103
103
|
end
|
104
104
|
end
|
@@ -9,11 +9,11 @@ describe Bolognese::Metadata, vcr: true do
|
|
9
9
|
subject = Bolognese::Metadata.new(input: input, from: "crossref")
|
10
10
|
datacite = JSON.parse(subject.datacite_json)
|
11
11
|
expect(datacite.fetch("url")).to eq("https://elifesciences.org/articles/01567")
|
12
|
-
expect(datacite.fetch("
|
13
|
-
expect(datacite.fetch("
|
12
|
+
expect(datacite.fetch("types")).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resource-type"=>"JournalArticle", "resource-type-general"=>"Text", "ris"=>"JOUR", "type"=>"ScholarlyArticle")
|
13
|
+
expect(datacite.fetch("titles")).to eq([{"title"=>"Automated quantitative histology reveals vascular morphodynamics during Arabidopsis hypocotyl secondary growth"}])
|
14
14
|
expect(datacite.fetch("related-identifiers").length).to eq(27)
|
15
|
-
expect(datacite.fetch("related-identifiers").first).to eq("
|
16
|
-
expect(datacite.fetch("rights")).to eq([{"
|
15
|
+
expect(datacite.fetch("related-identifiers").first).to eq("related-identifier"=>"2050-084X", "related-identifier-type"=>"ISSN", "relation-type"=>"IsPartOf", "title"=>"eLife", "type"=>"Periodical")
|
16
|
+
expect(datacite.fetch("rights-list")).to eq([{"rights-uri"=>"http://creativecommons.org/licenses/by/3.0"}])
|
17
17
|
end
|
18
18
|
|
19
19
|
it "with ORCID ID" do
|
@@ -21,7 +21,7 @@ describe Bolognese::Metadata, vcr: true do
|
|
21
21
|
subject = Bolognese::Metadata.new(input: input, from: "crossref")
|
22
22
|
datacite = JSON.parse(subject.datacite_json)
|
23
23
|
expect(datacite.fetch("url")).to eq("http://www.hindawi.com/journals/pm/2012/291294/")
|
24
|
-
expect(datacite.fetch("
|
24
|
+
expect(datacite.fetch("types")).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resource-type"=>"JournalArticle", "resource-type-general"=>"Text", "ris"=>"JOUR", "type"=>"ScholarlyArticle")
|
25
25
|
expect(datacite.fetch("creator").length).to eq(7)
|
26
26
|
expect(datacite.fetch("creator").first).to eq("type"=>"Person", "name"=>"Wendy Thanassi", "givenName"=>"Wendy", "familyName"=>"Thanassi")
|
27
27
|
end
|
@@ -30,9 +30,9 @@ describe Bolognese::Metadata, vcr: true do
|
|
30
30
|
input = fixture_path + "crossref.bib"
|
31
31
|
subject = Bolognese::Metadata.new(input: input, from: "bibtex")
|
32
32
|
datacite = JSON.parse(subject.datacite_json)
|
33
|
-
expect(datacite.fetch("
|
34
|
-
expect(datacite.fetch("
|
35
|
-
expect(datacite.dig("
|
33
|
+
expect(datacite.fetch("types")).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resource-type"=>"JournalArticle", "resource-type-general"=>"Text", "ris"=>"JOUR", "type"=>"ScholarlyArticle")
|
34
|
+
expect(datacite.fetch("titles")).to eq([{"title"=>"Automated quantitative histology reveals vascular morphodynamics during Arabidopsis hypocotyl secondary growth"}])
|
35
|
+
expect(datacite.dig("descriptions", 0, "description")).to start_with("Among various advantages, their small size makes model organisms preferred subjects of investigation.")
|
36
36
|
expect(datacite.fetch("creator").length).to eq(5)
|
37
37
|
expect(datacite.fetch("creator").first).to eq("type"=>"Person", "name"=>"Martial Sankar", "givenName"=>"Martial", "familyName"=>"Sankar")
|
38
38
|
end
|
@@ -41,17 +41,17 @@ describe Bolognese::Metadata, vcr: true do
|
|
41
41
|
input = fixture_path + "citeproc.json"
|
42
42
|
subject = Bolognese::Metadata.new(input: input, from: "citeproc")
|
43
43
|
datacite = JSON.parse(subject.datacite_json)
|
44
|
-
expect(datacite.fetch("
|
45
|
-
expect(datacite.fetch("
|
46
|
-
expect(datacite.dig("
|
47
|
-
expect(datacite.fetch("creator")).to eq("
|
44
|
+
expect(datacite.fetch("types")).to eq("bibtex"=>"article", "citeproc"=>"post-weblog", "resource-type-general"=>"Text", "ris"=>"GEN", "type"=>"BlogPosting")
|
45
|
+
expect(datacite.fetch("titles")).to eq([{"title"=>"Eating your own Dog Food"}])
|
46
|
+
expect(datacite.dig("descriptions", 0, "description")).to start_with("Eating your own dog food")
|
47
|
+
expect(datacite.fetch("creator")).to eq([{"familyName"=>"Fenner", "givenName"=>"Martin", "name"=>"Martin Fenner", "type"=>"Person"}])
|
48
48
|
end
|
49
49
|
|
50
50
|
it "rdataone" do
|
51
51
|
input = fixture_path + 'codemeta.json'
|
52
52
|
subject = Bolognese::Metadata.new(input: input, from: "codemeta")
|
53
53
|
datacite = JSON.parse(subject.datacite_json)
|
54
|
-
expect(datacite.fetch("
|
54
|
+
expect(datacite.fetch("titles")).to eq([{"title"=>"R Interface to the DataONE REST API"}])
|
55
55
|
expect(datacite.fetch("creator").length).to eq(3)
|
56
56
|
expect(datacite.fetch("creator").first).to eq("type"=>"Person", "id"=>"http://orcid.org/0000-0003-0077-4738", "name"=>"Matt Jones", "givenName"=>"Matt", "familyName"=>"Jones")
|
57
57
|
expect(datacite.fetch("version")).to eq("2.0.0")
|
@@ -61,8 +61,8 @@ describe Bolognese::Metadata, vcr: true do
|
|
61
61
|
input = "https://github.com/datacite/maremma"
|
62
62
|
subject = Bolognese::Metadata.new(input: input, from: "codemeta")
|
63
63
|
datacite = JSON.parse(subject.datacite_json)
|
64
|
-
expect(datacite.fetch("
|
65
|
-
expect(datacite.fetch("creator")).to eq("type"=>"Person", "id"=>"http://orcid.org/0000-0003-0077-4738", "name"=>"Martin Fenner", "givenName"=>"Martin", "familyName"=>"Fenner")
|
64
|
+
expect(datacite.fetch("titles")).to eq([{"title"=>"Maremma: a Ruby library for simplified network calls"}])
|
65
|
+
expect(datacite.fetch("creator")).to eq([{"type"=>"Person", "id"=>"http://orcid.org/0000-0003-0077-4738", "name"=>"Martin Fenner", "givenName"=>"Martin", "familyName"=>"Fenner"}])
|
66
66
|
end
|
67
67
|
|
68
68
|
it "with data citation schema.org" do
|
@@ -70,9 +70,9 @@ describe Bolognese::Metadata, vcr: true do
|
|
70
70
|
subject = Bolognese::Metadata.new(input: input, from: "schema_org")
|
71
71
|
expect(subject.valid?).to be true
|
72
72
|
datacite = JSON.parse(subject.datacite_json)
|
73
|
-
expect(datacite.fetch("
|
73
|
+
expect(datacite.fetch("titles")).to eq([{"title"=>"Eating your own Dog Food"}])
|
74
74
|
expect(datacite.fetch("related-identifiers").count).to eq(3)
|
75
|
-
expect(datacite.fetch("related-identifiers").first).to eq("
|
75
|
+
expect(datacite.fetch("related-identifiers").first).to eq("related-identifier"=>"10.5438/0000-00ss", "related-identifier-type"=>"DOI", "relation-type"=>"IsPartOf", "resource-type-general"=>"Text", "title"=>"DataCite Blog")
|
76
76
|
end
|
77
77
|
end
|
78
78
|
end
|