bolognese 1.0.6 → 1.0.7
Sign up to get free protection for your applications and to get access to all the features.
- 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
|