bolognese 0.4.3 → 0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.travis.yml +7 -1
- data/Gemfile.lock +1 -1
- data/README.md +326 -11
- data/lib/bolognese/author_utils.rb +7 -5
- data/lib/bolognese/cli.rb +20 -19
- data/lib/bolognese/crossref.rb +11 -49
- data/lib/bolognese/datacite.rb +16 -33
- data/lib/bolognese/datacite_utils.rb +28 -25
- data/lib/bolognese/doi_utils.rb +1 -1
- data/lib/bolognese/metadata.rb +55 -13
- data/lib/bolognese/schema_org.rb +12 -60
- data/lib/bolognese/utils.rb +24 -12
- data/lib/bolognese/version.rb +1 -1
- data/spec/cli_spec.rb +13 -0
- data/spec/crossref_spec.rb +6 -1
- data/spec/datacite_spec.rb +6 -1
- data/spec/fixtures/schema_org.json +44 -0
- data/spec/fixtures/vcr_cassettes/Bolognese_CLI/read/crossref/default.yml +760 -0
- data/spec/fixtures/vcr_cassettes/Bolognese_CLI/read/datacite/default.yml +214 -0
- data/spec/fixtures/vcr_cassettes/Bolognese_CLI/read/schema_org/default.yml +653 -0
- data/spec/fixtures/vcr_cassettes/Bolognese_Crossref/get_metadata/Schema_org_JSON.yml +719 -0
- data/spec/fixtures/vcr_cassettes/Bolognese_Crossref/normalize_id/doi.yml +930 -0
- data/spec/fixtures/vcr_cassettes/Bolognese_Crossref/normalize_id/url.yml +930 -0
- data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/get_metadata/Schema_org_JSON.yml +173 -0
- data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/find_PID_provider/crossref_doi_not_url.yml +2 -2
- data/spec/fixtures/vcr_cassettes/Bolognese_SchemaOrg/get_metadata/BlogPosting.yml +42 -21
- data/spec/fixtures/vcr_cassettes/Bolognese_SchemaOrg/get_metadata/BlogPosting_schema_org_JSON.yml +653 -0
- data/spec/fixtures/vcr_cassettes/Bolognese_SchemaOrg/get_metadata_as_datacite_xml/with_data_citation.yml +653 -0
- data/spec/metadata_spec.rb +9 -12
- data/spec/schema_org_spec.rb +41 -3
- data/spec/utils_spec.rb +3 -3
- metadata +12 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d3f81c7d2d95a4c66adb94672309f22ffdae3f7c
|
|
4
|
+
data.tar.gz: 8c00d86fb7ee25359bbe568638674140d99a6d1d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a64a2cc22e1be39d8e94aa94ef2cbc2ba35300d322c74043153a81c81589f99a6e0fe49922fa1dd493ba6bd9aeb7eee9e72f7edfc141bee13367b1359589035c
|
|
7
|
+
data.tar.gz: af27b299a2b95bf3250bc7dce7941898f69f17eb7c85dad303057926ec0e94245de4ee1f5b7c3b8ea902d388dcee706098b992ef94462feeb02bab7cf49aa16f
|
data/.travis.yml
CHANGED
|
@@ -2,13 +2,19 @@ language: ruby
|
|
|
2
2
|
rvm:
|
|
3
3
|
- 2.3.3
|
|
4
4
|
|
|
5
|
+
addons:
|
|
6
|
+
code_climate:
|
|
7
|
+
repo_token: $CODECLIMATE_REPO_TOKEN
|
|
8
|
+
|
|
5
9
|
before_install:
|
|
6
10
|
- export TZ=Europe/Berlin
|
|
7
11
|
|
|
8
12
|
install:
|
|
9
13
|
- travis_retry bundle install
|
|
10
14
|
|
|
11
|
-
script:
|
|
15
|
+
script:
|
|
16
|
+
- bundle exec rspec
|
|
17
|
+
- bundle exec codeclimate-test-reporter
|
|
12
18
|
|
|
13
19
|
notifications:
|
|
14
20
|
email: false
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
[](https://travis-ci.org/datacite/bolognese)
|
|
2
|
+
[](https://codeclimate.com/github/datacite/bolognese)
|
|
3
|
+
[](https://codeclimate.com/github/datacite/bolognese/coverage)
|
|
2
4
|
|
|
3
|
-
#
|
|
5
|
+
# Bolognese
|
|
4
6
|
|
|
5
|
-
|
|
7
|
+
Ruby gem and command-line utility for conversion of DOI metadata from and to [schema.org](https://schema.org) in JSON-LD.
|
|
6
8
|
|
|
7
9
|
## Features
|
|
8
10
|
|
|
@@ -33,29 +35,271 @@ gem install bolognese
|
|
|
33
35
|
|
|
34
36
|
## Commands
|
|
35
37
|
|
|
36
|
-
The bolognese commands understand URLs and DOIs as arguments. The `--as` command
|
|
38
|
+
The `bolognese` commands understand URLs and DOIs as arguments. The `--as` command
|
|
37
39
|
line flag sets the format, either `crossref`, `datacite`, or `schema_org` (default).
|
|
38
40
|
|
|
39
41
|
## Examples
|
|
40
42
|
|
|
41
|
-
|
|
43
|
+
Read Crossref XML:
|
|
42
44
|
```
|
|
43
|
-
bolognese read https://doi.org/10.7554/elife.01567
|
|
45
|
+
bolognese read https://doi.org/10.7554/elife.01567 --as crossref
|
|
44
46
|
```
|
|
45
47
|
|
|
46
|
-
|
|
48
|
+
Convert Crossref XML to schema.org/JSON-LD:
|
|
47
49
|
```
|
|
48
|
-
bolognese read https://doi.org/10.7554/elife.01567
|
|
50
|
+
bolognese read https://doi.org/10.7554/elife.01567
|
|
51
|
+
|
|
52
|
+
{
|
|
53
|
+
"@context": "http://schema.org",
|
|
54
|
+
"@type": "ScholarlyArticle",
|
|
55
|
+
"@id": "https://doi.org/10.7554/elife.01567",
|
|
56
|
+
"additionalType": "JournalArticle",
|
|
57
|
+
"name": "Automated quantitative histology reveals vascular morphodynamics during Arabidopsis hypocotyl secondary growth",
|
|
58
|
+
"author": [{
|
|
59
|
+
"@type": "Person",
|
|
60
|
+
"givenName": "Martial",
|
|
61
|
+
"familyName": "Sankar"
|
|
62
|
+
}, {
|
|
63
|
+
"@type": "Person",
|
|
64
|
+
"givenName": "Kaisa",
|
|
65
|
+
"familyName": "Nieminen"
|
|
66
|
+
}, {
|
|
67
|
+
"@type": "Person",
|
|
68
|
+
"givenName": "Laura",
|
|
69
|
+
"familyName": "Ragni"
|
|
70
|
+
}, {
|
|
71
|
+
"@type": "Person",
|
|
72
|
+
"givenName": "Ioannis",
|
|
73
|
+
"familyName": "Xenarios"
|
|
74
|
+
}, {
|
|
75
|
+
"@type": "Person",
|
|
76
|
+
"givenName": "Christian S",
|
|
77
|
+
"familyName": "Hardtke"
|
|
78
|
+
}],
|
|
79
|
+
"license": "http://creativecommons.org/licenses/by/3.0/",
|
|
80
|
+
"datePublished": "2014-02-11",
|
|
81
|
+
"dateModified": "2015-08-11T05:35:02Z",
|
|
82
|
+
"isPartOf": {
|
|
83
|
+
"@type": "Periodical",
|
|
84
|
+
"name": "eLife",
|
|
85
|
+
"issn": "2050-084X"
|
|
86
|
+
},
|
|
87
|
+
"citation": [{
|
|
88
|
+
"@type": "CreativeWork",
|
|
89
|
+
"@id": "https://doi.org/10.1038/nature02100",
|
|
90
|
+
"position": "1",
|
|
91
|
+
"datePublished": "2003"
|
|
92
|
+
}, {
|
|
93
|
+
"@type": "CreativeWork",
|
|
94
|
+
"@id": "https://doi.org/10.1534/genetics.109.104976",
|
|
95
|
+
"position": "2",
|
|
96
|
+
"datePublished": "2009"
|
|
97
|
+
}, {
|
|
98
|
+
"@type": "CreativeWork",
|
|
99
|
+
"@id": "https://doi.org/10.1034/j.1399-3054.2002.1140413.x",
|
|
100
|
+
"position": "3",
|
|
101
|
+
"datePublished": "2002"
|
|
102
|
+
}, {
|
|
103
|
+
"@type": "CreativeWork",
|
|
104
|
+
"@id": "https://doi.org/10.1162/089976601750399335",
|
|
105
|
+
"position": "4",
|
|
106
|
+
"datePublished": "2001"
|
|
107
|
+
}, {
|
|
108
|
+
"@type": "CreativeWork",
|
|
109
|
+
"position": "5",
|
|
110
|
+
"datePublished": "1995"
|
|
111
|
+
}, {
|
|
112
|
+
"@type": "CreativeWork",
|
|
113
|
+
"position": "6",
|
|
114
|
+
"datePublished": "1993"
|
|
115
|
+
}, {
|
|
116
|
+
"@type": "CreativeWork",
|
|
117
|
+
"@id": "https://doi.org/10.1016/j.semcdb.2009.09.009",
|
|
118
|
+
"position": "7",
|
|
119
|
+
"datePublished": "2009"
|
|
120
|
+
}, {
|
|
121
|
+
"@type": "CreativeWork",
|
|
122
|
+
"@id": "https://doi.org/10.1242/dev.091314",
|
|
123
|
+
"position": "8",
|
|
124
|
+
"datePublished": "2013"
|
|
125
|
+
}, {
|
|
126
|
+
"@type": "CreativeWork",
|
|
127
|
+
"@id": "https://doi.org/10.1371/journal.pgen.1002997",
|
|
128
|
+
"position": "9",
|
|
129
|
+
"datePublished": "2012"
|
|
130
|
+
}, {
|
|
131
|
+
"@type": "CreativeWork",
|
|
132
|
+
"@id": "https://doi.org/10.1038/msb.2010.25",
|
|
133
|
+
"position": "10",
|
|
134
|
+
"datePublished": "2010"
|
|
135
|
+
}, {
|
|
136
|
+
"@type": "CreativeWork",
|
|
137
|
+
"@id": "https://doi.org/10.1016/j.biosystems.2012.07.004",
|
|
138
|
+
"position": "11",
|
|
139
|
+
"datePublished": "2012"
|
|
140
|
+
}, {
|
|
141
|
+
"@type": "CreativeWork",
|
|
142
|
+
"@id": "https://doi.org/10.1016/j.pbi.2005.11.013",
|
|
143
|
+
"position": "12",
|
|
144
|
+
"datePublished": "2006"
|
|
145
|
+
}, {
|
|
146
|
+
"@type": "CreativeWork",
|
|
147
|
+
"@id": "https://doi.org/10.1105/tpc.110.076083",
|
|
148
|
+
"position": "13",
|
|
149
|
+
"datePublished": "2010"
|
|
150
|
+
}, {
|
|
151
|
+
"@type": "CreativeWork",
|
|
152
|
+
"@id": "https://doi.org/10.1073/pnas.0808444105",
|
|
153
|
+
"position": "14",
|
|
154
|
+
"datePublished": "2008"
|
|
155
|
+
}, {
|
|
156
|
+
"@type": "CreativeWork",
|
|
157
|
+
"@id": "https://doi.org/10.1016/0092-8674(89)90900-8",
|
|
158
|
+
"position": "15",
|
|
159
|
+
"datePublished": "1989"
|
|
160
|
+
}, {
|
|
161
|
+
"@type": "CreativeWork",
|
|
162
|
+
"@id": "https://doi.org/10.1126/science.1066609",
|
|
163
|
+
"position": "16",
|
|
164
|
+
"datePublished": "2002"
|
|
165
|
+
}, {
|
|
166
|
+
"@type": "CreativeWork",
|
|
167
|
+
"@id": "https://doi.org/10.1104/pp.104.040212",
|
|
168
|
+
"position": "17",
|
|
169
|
+
"datePublished": "2004"
|
|
170
|
+
}, {
|
|
171
|
+
"@type": "CreativeWork",
|
|
172
|
+
"@id": "https://doi.org/10.1038/nbt1206-1565",
|
|
173
|
+
"position": "18",
|
|
174
|
+
"datePublished": "2006"
|
|
175
|
+
}, {
|
|
176
|
+
"@type": "CreativeWork",
|
|
177
|
+
"@id": "https://doi.org/10.1073/pnas.77.3.1516",
|
|
178
|
+
"position": "19",
|
|
179
|
+
"datePublished": "1980"
|
|
180
|
+
}, {
|
|
181
|
+
"@type": "CreativeWork",
|
|
182
|
+
"@id": "https://doi.org/10.1093/bioinformatics/btq046",
|
|
183
|
+
"position": "20",
|
|
184
|
+
"datePublished": "2010"
|
|
185
|
+
}, {
|
|
186
|
+
"@type": "CreativeWork",
|
|
187
|
+
"@id": "https://doi.org/10.1105/tpc.111.084020",
|
|
188
|
+
"position": "21",
|
|
189
|
+
"datePublished": "2011"
|
|
190
|
+
}, {
|
|
191
|
+
"@type": "CreativeWork",
|
|
192
|
+
"@id": "https://doi.org/10.5061/dryad.b835k",
|
|
193
|
+
"position": "22",
|
|
194
|
+
"datePublished": "2014"
|
|
195
|
+
}, {
|
|
196
|
+
"@type": "CreativeWork",
|
|
197
|
+
"@id": "https://doi.org/10.1016/j.cub.2008.02.070",
|
|
198
|
+
"position": "23",
|
|
199
|
+
"datePublished": "2008"
|
|
200
|
+
}, {
|
|
201
|
+
"@type": "CreativeWork",
|
|
202
|
+
"@id": "https://doi.org/10.1111/j.1469-8137.2010.03236.x",
|
|
203
|
+
"position": "24",
|
|
204
|
+
"datePublished": "2010"
|
|
205
|
+
}, {
|
|
206
|
+
"@type": "CreativeWork",
|
|
207
|
+
"@id": "https://doi.org/10.1007/s00138-011-0345-9",
|
|
208
|
+
"position": "25",
|
|
209
|
+
"datePublished": "2012"
|
|
210
|
+
}, {
|
|
211
|
+
"@type": "CreativeWork",
|
|
212
|
+
"@id": "https://doi.org/10.1016/j.cell.2012.02.048",
|
|
213
|
+
"position": "26",
|
|
214
|
+
"datePublished": "2012"
|
|
215
|
+
}, {
|
|
216
|
+
"@type": "CreativeWork",
|
|
217
|
+
"@id": "https://doi.org/10.1038/ncb2764",
|
|
218
|
+
"position": "27",
|
|
219
|
+
"datePublished": "2013"
|
|
220
|
+
}],
|
|
221
|
+
"provider": {
|
|
222
|
+
"@type": "Organization",
|
|
223
|
+
"name": "Crossref"
|
|
224
|
+
}
|
|
225
|
+
}
|
|
49
226
|
```
|
|
50
227
|
|
|
51
228
|
Convert Crossref XML to DataCite XML:
|
|
52
229
|
```
|
|
53
230
|
bolognese read https://doi.org/10.7554/elife.01567 --as datacite
|
|
54
|
-
```
|
|
55
231
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
232
|
+
?xml version="1.0" encoding="UTF-8"?>
|
|
233
|
+
<resource xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://datacite.org/schema/kernel-4" xsi:schemaLocation="http://datacite.org/schema/kernel-4 http://schema.datacite.org/meta/kernel-4/metadata.xsd">
|
|
234
|
+
<identifier identifierType="DOI">10.7554/eLife.01567</identifier>
|
|
235
|
+
<creators>
|
|
236
|
+
<creator>
|
|
237
|
+
<creatorName>Sankar, Martial</creatorName>
|
|
238
|
+
<givenName>Martial</givenName>
|
|
239
|
+
<familyName>Sankar</familyName>
|
|
240
|
+
</creator>
|
|
241
|
+
<creator>
|
|
242
|
+
<creatorName>Nieminen, Kaisa</creatorName>
|
|
243
|
+
<givenName>Kaisa</givenName>
|
|
244
|
+
<familyName>Nieminen</familyName>
|
|
245
|
+
</creator>
|
|
246
|
+
<creator>
|
|
247
|
+
<creatorName>Ragni, Laura</creatorName>
|
|
248
|
+
<givenName>Laura</givenName>
|
|
249
|
+
<familyName>Ragni</familyName>
|
|
250
|
+
</creator>
|
|
251
|
+
<creator>
|
|
252
|
+
<creatorName>Xenarios, Ioannis</creatorName>
|
|
253
|
+
<givenName>Ioannis</givenName>
|
|
254
|
+
<familyName>Xenarios</familyName>
|
|
255
|
+
</creator>
|
|
256
|
+
<creator>
|
|
257
|
+
<creatorName>Hardtke, Christian S</creatorName>
|
|
258
|
+
<givenName>Christian S</givenName>
|
|
259
|
+
<familyName>Hardtke</familyName>
|
|
260
|
+
</creator>
|
|
261
|
+
</creators>
|
|
262
|
+
<titles>
|
|
263
|
+
<title>Automated quantitative histology reveals vascular morphodynamics during Arabidopsis hypocotyl secondary growth</title>
|
|
264
|
+
</titles>
|
|
265
|
+
<publisher>eLife</publisher>
|
|
266
|
+
<publicationYear>2014</publicationYear>
|
|
267
|
+
<resourceType resourceTypeGeneral="Text">JournalArticle</resourceType>
|
|
268
|
+
<dates>
|
|
269
|
+
<date dateType="Issued">2014-02-11</date>
|
|
270
|
+
<date dateType="Updated">2015-08-11T05:35:02Z</date>
|
|
271
|
+
</dates>
|
|
272
|
+
<relatedIdentifiers>
|
|
273
|
+
<relatedIdentifier relatedIdentifierType="DOI" relationType="References">https://doi.org/10.1038/nature02100</relatedIdentifier>
|
|
274
|
+
<relatedIdentifier relatedIdentifierType="DOI" relationType="References">https://doi.org/10.1534/genetics.109.104976</relatedIdentifier>
|
|
275
|
+
<relatedIdentifier relatedIdentifierType="DOI" relationType="References">https://doi.org/10.1034/j.1399-3054.2002.1140413.x</relatedIdentifier>
|
|
276
|
+
<relatedIdentifier relatedIdentifierType="DOI" relationType="References">https://doi.org/10.1162/089976601750399335</relatedIdentifier>
|
|
277
|
+
<relatedIdentifier relatedIdentifierType="DOI" relationType="References">https://doi.org/10.1016/j.semcdb.2009.09.009</relatedIdentifier>
|
|
278
|
+
<relatedIdentifier relatedIdentifierType="DOI" relationType="References">https://doi.org/10.1242/dev.091314</relatedIdentifier>
|
|
279
|
+
<relatedIdentifier relatedIdentifierType="DOI" relationType="References">https://doi.org/10.1371/journal.pgen.1002997</relatedIdentifier>
|
|
280
|
+
<relatedIdentifier relatedIdentifierType="DOI" relationType="References">https://doi.org/10.1038/msb.2010.25</relatedIdentifier>
|
|
281
|
+
<relatedIdentifier relatedIdentifierType="DOI" relationType="References">https://doi.org/10.1016/j.biosystems.2012.07.004</relatedIdentifier>
|
|
282
|
+
<relatedIdentifier relatedIdentifierType="DOI" relationType="References">https://doi.org/10.1016/j.pbi.2005.11.013</relatedIdentifier>
|
|
283
|
+
<relatedIdentifier relatedIdentifierType="DOI" relationType="References">https://doi.org/10.1105/tpc.110.076083</relatedIdentifier>
|
|
284
|
+
<relatedIdentifier relatedIdentifierType="DOI" relationType="References">https://doi.org/10.1073/pnas.0808444105</relatedIdentifier>
|
|
285
|
+
<relatedIdentifier relatedIdentifierType="DOI" relationType="References">https://doi.org/10.1016/0092-8674(89)90900-8</relatedIdentifier>
|
|
286
|
+
<relatedIdentifier relatedIdentifierType="DOI" relationType="References">https://doi.org/10.1126/science.1066609</relatedIdentifier>
|
|
287
|
+
<relatedIdentifier relatedIdentifierType="DOI" relationType="References">https://doi.org/10.1104/pp.104.040212</relatedIdentifier>
|
|
288
|
+
<relatedIdentifier relatedIdentifierType="DOI" relationType="References">https://doi.org/10.1038/nbt1206-1565</relatedIdentifier>
|
|
289
|
+
<relatedIdentifier relatedIdentifierType="DOI" relationType="References">https://doi.org/10.1073/pnas.77.3.1516</relatedIdentifier>
|
|
290
|
+
<relatedIdentifier relatedIdentifierType="DOI" relationType="References">https://doi.org/10.1093/bioinformatics/btq046</relatedIdentifier>
|
|
291
|
+
<relatedIdentifier relatedIdentifierType="DOI" relationType="References">https://doi.org/10.1105/tpc.111.084020</relatedIdentifier>
|
|
292
|
+
<relatedIdentifier relatedIdentifierType="DOI" relationType="References">https://doi.org/10.5061/dryad.b835k</relatedIdentifier>
|
|
293
|
+
<relatedIdentifier relatedIdentifierType="DOI" relationType="References">https://doi.org/10.1016/j.cub.2008.02.070</relatedIdentifier>
|
|
294
|
+
<relatedIdentifier relatedIdentifierType="DOI" relationType="References">https://doi.org/10.1111/j.1469-8137.2010.03236.x</relatedIdentifier>
|
|
295
|
+
<relatedIdentifier relatedIdentifierType="DOI" relationType="References">https://doi.org/10.1007/s00138-011-0345-9</relatedIdentifier>
|
|
296
|
+
<relatedIdentifier relatedIdentifierType="DOI" relationType="References">https://doi.org/10.1016/j.cell.2012.02.048</relatedIdentifier>
|
|
297
|
+
<relatedIdentifier relatedIdentifierType="DOI" relationType="References">https://doi.org/10.1038/ncb2764</relatedIdentifier>
|
|
298
|
+
</relatedIdentifiers>
|
|
299
|
+
<rightsList>
|
|
300
|
+
<rights rightsURI="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0 (CC-BY 3.0)</rights>
|
|
301
|
+
</rightsList>
|
|
302
|
+
</resource>
|
|
59
303
|
```
|
|
60
304
|
|
|
61
305
|
Read DataCite XML:
|
|
@@ -63,6 +307,76 @@ Read DataCite XML:
|
|
|
63
307
|
bolognese read 10.5061/DRYAD.8515 --as datacite
|
|
64
308
|
```
|
|
65
309
|
|
|
310
|
+
Convert DataCite XML to schema.org/JSON-LD:
|
|
311
|
+
```sh
|
|
312
|
+
bolognese read 10.5061/DRYAD.8515
|
|
313
|
+
|
|
314
|
+
{
|
|
315
|
+
"@context": "http://schema.org",
|
|
316
|
+
"@type": "Dataset",
|
|
317
|
+
"@id": "https://doi.org/10.5061/dryad.8515",
|
|
318
|
+
"additionalType": "DataPackage",
|
|
319
|
+
"name": "Data from: A new malaria agent in African hominids.",
|
|
320
|
+
"alternateName": "Ollomo B, Durand P, Prugnolle F, Douzery EJP, Arnathau C, Nkoghe D, Leroy E, Renaud F (2009) A new malaria agent in African hominids. PLoS Pathogens 5(5): e1000446.",
|
|
321
|
+
"author": [{
|
|
322
|
+
"@type": "Person",
|
|
323
|
+
"givenName": "Benjamin",
|
|
324
|
+
"familyName": "Ollomo"
|
|
325
|
+
}, {
|
|
326
|
+
"@type": "Person",
|
|
327
|
+
"givenName": "Patrick",
|
|
328
|
+
"familyName": "Durand"
|
|
329
|
+
}, {
|
|
330
|
+
"@type": "Person",
|
|
331
|
+
"givenName": "Franck",
|
|
332
|
+
"familyName": "Prugnolle"
|
|
333
|
+
}, {
|
|
334
|
+
"@type": "Person",
|
|
335
|
+
"givenName": "Emmanuel J. P.",
|
|
336
|
+
"familyName": "Douzery"
|
|
337
|
+
}, {
|
|
338
|
+
"@type": "Person",
|
|
339
|
+
"givenName": "Céline",
|
|
340
|
+
"familyName": "Arnathau"
|
|
341
|
+
}, {
|
|
342
|
+
"@type": "Person",
|
|
343
|
+
"givenName": "Dieudonné",
|
|
344
|
+
"familyName": "Nkoghe"
|
|
345
|
+
}, {
|
|
346
|
+
"@type": "Person",
|
|
347
|
+
"givenName": "Eric",
|
|
348
|
+
"familyName": "Leroy"
|
|
349
|
+
}, {
|
|
350
|
+
"@type": "Person",
|
|
351
|
+
"givenName": "François",
|
|
352
|
+
"familyName": "Renaud"
|
|
353
|
+
}],
|
|
354
|
+
"license": "http://creativecommons.org/publicdomain/zero/1.0/",
|
|
355
|
+
"version": "1",
|
|
356
|
+
"keywords": "Phylogeny, Malaria, Parasites, Taxonomy, Mitochondrial genome, Africa, Plasmodium",
|
|
357
|
+
"datePublished": "2011",
|
|
358
|
+
"hasPart": [{
|
|
359
|
+
"@type": "CreativeWork",
|
|
360
|
+
"@id": "https://doi.org/10.5061/dryad.8515/1"
|
|
361
|
+
}, {
|
|
362
|
+
"@type": "CreativeWork",
|
|
363
|
+
"@id": "https://doi.org/10.5061/dryad.8515/2"
|
|
364
|
+
}],
|
|
365
|
+
"citation": [{
|
|
366
|
+
"@type": "CreativeWork",
|
|
367
|
+
"@id": "https://doi.org/10.1371/journal.ppat.1000446"
|
|
368
|
+
}],
|
|
369
|
+
"publisher": {
|
|
370
|
+
"@type": "Organization",
|
|
371
|
+
"name": "Dryad Digital Repository"
|
|
372
|
+
},
|
|
373
|
+
"provider": {
|
|
374
|
+
"@type": "Organization",
|
|
375
|
+
"name": "DataCite"
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
```
|
|
379
|
+
|
|
66
380
|
## Development
|
|
67
381
|
|
|
68
382
|
We use rspec for unit testing:
|
|
@@ -72,6 +386,7 @@ bundle exec rspec
|
|
|
72
386
|
```
|
|
73
387
|
|
|
74
388
|
Follow along via [Github Issues](https://github.com/datacite/bolognese/issues).
|
|
389
|
+
Please open an issue if conversion fails or metadata are not properly supported.
|
|
75
390
|
|
|
76
391
|
### Note on Patches/Pull Requests
|
|
77
392
|
|
|
@@ -3,11 +3,11 @@ require 'namae'
|
|
|
3
3
|
module Bolognese
|
|
4
4
|
module AuthorUtils
|
|
5
5
|
# only assume personal name when using sort-order: "Turing, Alan"
|
|
6
|
-
def get_one_author(author
|
|
6
|
+
def get_one_author(author)
|
|
7
7
|
orcid = get_name_identifier(author)
|
|
8
8
|
author = author.fetch("creatorName", nil)
|
|
9
9
|
|
|
10
|
-
return { "Name" => "" } if author.strip.blank?
|
|
10
|
+
return { "Name" => "" } if author.to_s.strip.blank?
|
|
11
11
|
|
|
12
12
|
author = cleanup_author(author)
|
|
13
13
|
names = Namae.parse(author)
|
|
@@ -44,15 +44,17 @@ module Bolognese
|
|
|
44
44
|
end
|
|
45
45
|
|
|
46
46
|
# parse array of author strings into CSL format
|
|
47
|
-
def get_authors(authors
|
|
48
|
-
Array(authors).map { |author| get_one_author(author
|
|
47
|
+
def get_authors(authors)
|
|
48
|
+
Array(authors).map { |author| get_one_author(author) }
|
|
49
49
|
end
|
|
50
50
|
|
|
51
51
|
# pase nameIdentifier from DataCite
|
|
52
52
|
def get_name_identifier(author)
|
|
53
53
|
name_identifier = author.dig("nameIdentifier", "text")
|
|
54
|
+
name_identifier = validate_orcid(name_identifier)
|
|
55
|
+
|
|
54
56
|
name_identifier_scheme = author.dig("nameIdentifier", "nameIdentifierScheme") || "ORCID"
|
|
55
|
-
if name_identifier_scheme.downcase == "orcid"
|
|
57
|
+
if name_identifier.present? && name_identifier_scheme.downcase == "orcid"
|
|
56
58
|
"http://orcid.org/#{name_identifier}"
|
|
57
59
|
else
|
|
58
60
|
nil
|