bolognese 0.2.2 → 2.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (264) hide show
  1. checksums.yaml +5 -5
  2. data/.github/workflows/build.yml +9 -0
  3. data/.github/workflows/changelog.yml +36 -0
  4. data/.github/workflows/ci.yml +22 -0
  5. data/.github/workflows/pull-request.yml +9 -0
  6. data/.github/workflows/release.yml +32 -0
  7. data/.gitignore +4 -0
  8. data/.rubocop.yml +658 -0
  9. data/CHANGELOG.md +1864 -0
  10. data/CITATION +17 -0
  11. data/Gemfile +1 -1
  12. data/Gemfile.lock +251 -99
  13. data/README.md +1026 -2
  14. data/Rakefile +1 -0
  15. data/bin/bolognese +5 -1
  16. data/bolognese.gemspec +33 -21
  17. data/lib/bolognese/array.rb +13 -0
  18. data/lib/bolognese/author_utils.rb +115 -39
  19. data/lib/bolognese/citeproc_extensions.rb +48 -0
  20. data/lib/bolognese/cli.rb +28 -15
  21. data/lib/bolognese/datacite_utils.rb +418 -0
  22. data/lib/bolognese/doi_utils.rb +45 -23
  23. data/lib/bolognese/metadata.rb +250 -18
  24. data/lib/bolognese/metadata_utils.rb +228 -0
  25. data/lib/bolognese/pubmed.rb +2 -0
  26. data/lib/bolognese/readers/bibtex_reader.rb +100 -0
  27. data/lib/bolognese/readers/citeproc_reader.rb +125 -0
  28. data/lib/bolognese/readers/codemeta_reader.rb +108 -0
  29. data/lib/bolognese/readers/crosscite_reader.rb +17 -0
  30. data/lib/bolognese/readers/crossref_reader.rb +413 -0
  31. data/lib/bolognese/readers/datacite_json_reader.rb +17 -0
  32. data/lib/bolognese/readers/datacite_reader.rb +338 -0
  33. data/lib/bolognese/readers/npm_reader.rb +115 -0
  34. data/lib/bolognese/readers/ris_reader.rb +114 -0
  35. data/lib/bolognese/readers/schema_org_reader.rb +264 -0
  36. data/lib/bolognese/string.rb +3 -1
  37. data/lib/bolognese/utils.rb +1403 -12
  38. data/lib/bolognese/version.rb +1 -1
  39. data/lib/bolognese/whitelist_scrubber.rb +47 -0
  40. data/lib/bolognese/writers/bibtex_writer.rb +32 -0
  41. data/lib/bolognese/writers/citation_writer.rb +14 -0
  42. data/lib/bolognese/writers/citeproc_writer.rb +11 -0
  43. data/lib/bolognese/writers/codemeta_writer.rb +29 -0
  44. data/lib/bolognese/writers/crosscite_writer.rb +11 -0
  45. data/lib/bolognese/writers/crossref_writer.rb +11 -0
  46. data/lib/bolognese/writers/csv_writer.rb +24 -0
  47. data/lib/bolognese/writers/datacite_json_writer.rb +13 -0
  48. data/lib/bolognese/writers/datacite_writer.rb +12 -0
  49. data/lib/bolognese/writers/jats_writer.rb +138 -0
  50. data/lib/bolognese/writers/rdf_xml_writer.rb +11 -0
  51. data/lib/bolognese/writers/ris_writer.rb +29 -0
  52. data/lib/bolognese/writers/schema_org_writer.rb +55 -0
  53. data/lib/bolognese/writers/turtle_writer.rb +11 -0
  54. data/lib/bolognese.rb +19 -4
  55. data/package.json +12 -0
  56. data/resources/2008/09/xsd.xsl +997 -0
  57. data/resources/datacite-contributorType-v4.xsd +35 -0
  58. data/resources/datacite-dateType-v4.xsd +25 -0
  59. data/resources/datacite-descriptionType-v4.xsd +19 -0
  60. data/resources/datacite-funderIdentifierType-v4.xsd +15 -0
  61. data/resources/datacite-nameType-v4.xsd +10 -0
  62. data/resources/datacite-relatedIdentifierType-v4.xsd +34 -0
  63. data/resources/datacite-relationType-v4.xsd +49 -0
  64. data/resources/datacite-resourceType-v4.xsd +28 -0
  65. data/resources/datacite-titleType-v4.xsd +14 -0
  66. data/resources/kernel-2.1/include/datacite-contributorType-v1.1.xsd +22 -0
  67. data/resources/kernel-2.1/include/datacite-contributorType-v2.xsd +3 -0
  68. data/resources/kernel-2.1/include/datacite-dateType-v1.1.xsd +31 -0
  69. data/resources/kernel-2.1/include/datacite-dateType-v2.xsd +3 -0
  70. data/resources/kernel-2.1/include/datacite-descriptionType-v1.1.xsd +14 -0
  71. data/resources/kernel-2.1/include/datacite-descriptionType-v2.xsd +3 -0
  72. data/resources/kernel-2.1/include/datacite-relatedIdentifierType-v1.1.xsd +24 -0
  73. data/resources/kernel-2.1/include/datacite-relatedIdentifierType-v2.xsd +3 -0
  74. data/resources/kernel-2.1/include/datacite-relationType-v1.1.xsd +29 -0
  75. data/resources/kernel-2.1/include/datacite-relationType-v2.xsd +3 -0
  76. data/resources/kernel-2.1/include/datacite-resourceType-v1.1.xsd +22 -0
  77. data/resources/kernel-2.1/include/datacite-resourceType-v2.xsd +3 -0
  78. data/resources/kernel-2.1/include/datacite-titleType-v1.1.xsd +11 -0
  79. data/resources/kernel-2.1/include/datacite-titleType-v2.xsd +3 -0
  80. data/resources/kernel-2.1/metadata.xsd +315 -0
  81. data/resources/kernel-2.2/include/datacite-contributorType-v2.xsd +29 -0
  82. data/resources/kernel-2.2/include/datacite-dateType-v2.xsd +21 -0
  83. data/resources/kernel-2.2/include/datacite-descriptionType-v2.xsd +15 -0
  84. data/resources/kernel-2.2/include/datacite-relatedIdentifierType-v2.xsd +25 -0
  85. data/resources/kernel-2.2/include/datacite-relationType-v2.xsd +29 -0
  86. data/resources/kernel-2.2/include/datacite-resourceType-v2.xsd +23 -0
  87. data/resources/kernel-2.2/include/datacite-titleType-v2.xsd +10 -0
  88. data/resources/kernel-2.2/metadata.xsd +316 -0
  89. data/resources/kernel-3/include/datacite-contributorType-v3.1.xsd +35 -0
  90. data/resources/kernel-3/include/datacite-dateType-v3.xsd +21 -0
  91. data/resources/kernel-3/include/datacite-descriptionType-v3.xsd +17 -0
  92. data/resources/kernel-3/include/datacite-relatedIdentifierType-v3.1.xsd +30 -0
  93. data/resources/kernel-3/include/datacite-relationType-v3.1.xsd +38 -0
  94. data/resources/kernel-3/include/datacite-resourceType-v3.xsd +26 -0
  95. data/resources/kernel-3/include/datacite-titleType-v3.xsd +12 -0
  96. data/resources/kernel-3/include/xml.xsd +286 -0
  97. data/resources/kernel-3/metadata.xsd +380 -0
  98. data/resources/kernel-3.0/include/datacite-contributorType-v3.xsd +33 -0
  99. data/resources/kernel-3.0/include/datacite-dateType-v3.xsd +21 -0
  100. data/resources/kernel-3.0/include/datacite-descriptionType-v3.xsd +17 -0
  101. data/resources/kernel-3.0/include/datacite-relatedIdentifierType-v3.xsd +27 -0
  102. data/resources/kernel-3.0/include/datacite-relationType-v3.xsd +33 -0
  103. data/resources/kernel-3.0/include/datacite-resourceType-v3.xsd +26 -0
  104. data/resources/kernel-3.0/include/datacite-titleType-v3.xsd +12 -0
  105. data/resources/kernel-3.0/include/xml.xsd +286 -0
  106. data/resources/kernel-3.0/metadata.xsd +377 -0
  107. data/resources/kernel-3.1/include/datacite-contributorType-v3.1.xsd +35 -0
  108. data/resources/kernel-3.1/include/datacite-dateType-v3.xsd +21 -0
  109. data/resources/kernel-3.1/include/datacite-descriptionType-v3.xsd +17 -0
  110. data/resources/kernel-3.1/include/datacite-relatedIdentifierType-v3.1.xsd +30 -0
  111. data/resources/kernel-3.1/include/datacite-relationType-v3.1.xsd +38 -0
  112. data/resources/kernel-3.1/include/datacite-resourceType-v3.xsd +26 -0
  113. data/resources/kernel-3.1/include/datacite-titleType-v3.xsd +12 -0
  114. data/resources/kernel-3.1/include/xml.xsd +286 -0
  115. data/resources/kernel-3.1/metadata.xsd +380 -0
  116. data/resources/kernel-4/include/datacite-contributorType-v4.xsd +37 -0
  117. data/resources/kernel-4/include/datacite-dateType-v4.xsd +27 -0
  118. data/resources/kernel-4/include/datacite-descriptionType-v4.xsd +19 -0
  119. data/resources/kernel-4/include/datacite-funderIdentifierType-v4.xsd +16 -0
  120. data/resources/kernel-4/include/datacite-nameType-v4.xsd +10 -0
  121. data/resources/kernel-4/include/datacite-numberType-v4.xsd +12 -0
  122. data/resources/kernel-4/include/datacite-relatedIdentifierType-v4.xsd +39 -0
  123. data/resources/kernel-4/include/datacite-relationType-v4.xsd +59 -0
  124. data/resources/kernel-4/include/datacite-resourceType-v4.xsd +52 -0
  125. data/resources/kernel-4/include/datacite-titleType-v4.xsd +14 -0
  126. data/resources/kernel-4/include/xml.xsd +286 -0
  127. data/resources/kernel-4/metadata.xsd +715 -0
  128. data/resources/kernel-4.0/include/datacite-contributorType-v4.xsd +35 -0
  129. data/resources/kernel-4.0/include/datacite-dateType-v4.xsd +21 -0
  130. data/resources/kernel-4.0/include/datacite-descriptionType-v4.xsd +19 -0
  131. data/resources/kernel-4.0/include/datacite-funderIdentifierType-v4.xsd +15 -0
  132. data/resources/kernel-4.0/include/datacite-relatedIdentifierType-v4.xsd +32 -0
  133. data/resources/kernel-4.0/include/datacite-relationType-v4.xsd +39 -0
  134. data/resources/kernel-4.0/include/datacite-resourceType-v4.xsd +26 -0
  135. data/resources/kernel-4.0/include/datacite-titleType-v4.xsd +14 -0
  136. data/resources/kernel-4.0/include/xml.xsd +286 -0
  137. data/resources/kernel-4.0/metadata.xsd +470 -0
  138. data/resources/kernel-4.1/include/datacite-contributorType-v4.xsd +35 -0
  139. data/resources/kernel-4.1/include/datacite-dateType-v4.1.xsd +23 -0
  140. data/resources/kernel-4.1/include/datacite-descriptionType-v4.xsd +19 -0
  141. data/resources/kernel-4.1/include/datacite-funderIdentifierType-v4.xsd +15 -0
  142. data/resources/kernel-4.1/include/datacite-nameType-v4.1.xsd +10 -0
  143. data/resources/kernel-4.1/include/datacite-relatedIdentifierType-v4.xsd +32 -0
  144. data/resources/kernel-4.1/include/datacite-relationType-v4.1.xsd +46 -0
  145. data/resources/kernel-4.1/include/datacite-resourceType-v4.1.xsd +28 -0
  146. data/resources/kernel-4.1/include/datacite-titleType-v4.xsd +14 -0
  147. data/resources/kernel-4.1/include/xml.xsd +286 -0
  148. data/resources/kernel-4.1/metadata.xsd +483 -0
  149. data/resources/kernel-4.2/include/datacite-contributorType-v4.xsd +35 -0
  150. data/resources/kernel-4.2/include/datacite-dateType-v4.xsd +25 -0
  151. data/resources/kernel-4.2/include/datacite-descriptionType-v4.xsd +19 -0
  152. data/resources/kernel-4.2/include/datacite-funderIdentifierType-v4.xsd +15 -0
  153. data/resources/kernel-4.2/include/datacite-nameType-v4.xsd +10 -0
  154. data/resources/kernel-4.2/include/datacite-relatedIdentifierType-v4.xsd +34 -0
  155. data/resources/kernel-4.2/include/datacite-relationType-v4.xsd +49 -0
  156. data/resources/kernel-4.2/include/datacite-resourceType-v4.xsd +28 -0
  157. data/resources/kernel-4.2/include/datacite-titleType-v4.xsd +14 -0
  158. data/resources/kernel-4.2/include/xml.xsd +286 -0
  159. data/resources/kernel-4.2/metadata.xsd +479 -0
  160. data/resources/kernel-4.3/include/datacite-contributorType-v4.xsd +35 -0
  161. data/resources/kernel-4.3/include/datacite-dateType-v4.xsd +25 -0
  162. data/resources/kernel-4.3/include/datacite-descriptionType-v4.xsd +19 -0
  163. data/resources/kernel-4.3/include/datacite-funderIdentifierType-v4.xsd +16 -0
  164. data/resources/kernel-4.3/include/datacite-nameType-v4.xsd +10 -0
  165. data/resources/kernel-4.3/include/datacite-relatedIdentifierType-v4.xsd +34 -0
  166. data/resources/kernel-4.3/include/datacite-relationType-v4.xsd +49 -0
  167. data/resources/kernel-4.3/include/datacite-resourceType-v4.xsd +28 -0
  168. data/resources/kernel-4.3/include/datacite-titleType-v4.xsd +14 -0
  169. data/resources/kernel-4.3/include/xml.xsd +286 -0
  170. data/resources/kernel-4.3/metadata.xsd +515 -0
  171. data/resources/kernel-4.4/include/datacite-contributorType-v4.xsd +35 -0
  172. data/resources/kernel-4.4/include/datacite-dateType-v4.xsd +25 -0
  173. data/resources/kernel-4.4/include/datacite-descriptionType-v4.xsd +19 -0
  174. data/resources/kernel-4.4/include/datacite-funderIdentifierType-v4.xsd +16 -0
  175. data/resources/kernel-4.4/include/datacite-nameType-v4.xsd +10 -0
  176. data/resources/kernel-4.4/include/datacite-numberType-v4.xsd +12 -0
  177. data/resources/kernel-4.4/include/datacite-relatedIdentifierType-v4.xsd +34 -0
  178. data/resources/kernel-4.4/include/datacite-relationType-v4.xsd +51 -0
  179. data/resources/kernel-4.4/include/datacite-resourceType-v4.xsd +43 -0
  180. data/resources/kernel-4.4/include/datacite-titleType-v4.xsd +14 -0
  181. data/resources/kernel-4.4/include/xml.xsd +286 -0
  182. data/resources/kernel-4.4/metadata.xsd +707 -0
  183. data/resources/kernel-4.5/include/datacite-contributorType-v4.xsd +35 -0
  184. data/resources/kernel-4.5/include/datacite-dateType-v4.xsd +25 -0
  185. data/resources/kernel-4.5/include/datacite-descriptionType-v4.xsd +19 -0
  186. data/resources/kernel-4.5/include/datacite-funderIdentifierType-v4.xsd +16 -0
  187. data/resources/kernel-4.5/include/datacite-nameType-v4.xsd +10 -0
  188. data/resources/kernel-4.5/include/datacite-numberType-v4.xsd +12 -0
  189. data/resources/kernel-4.5/include/datacite-relatedIdentifierType-v4.xsd +34 -0
  190. data/resources/kernel-4.5/include/datacite-relationType-v4.xsd +53 -0
  191. data/resources/kernel-4.5/include/datacite-resourceType-v4.xsd +45 -0
  192. data/resources/kernel-4.5/include/datacite-titleType-v4.xsd +14 -0
  193. data/resources/kernel-4.5/include/xml.xsd +286 -0
  194. data/resources/kernel-4.5/metadata.xsd +711 -0
  195. data/resources/kernel-4.6/include/datacite-contributorType-v4.xsd +37 -0
  196. data/resources/kernel-4.6/include/datacite-dateType-v4.xsd +27 -0
  197. data/resources/kernel-4.6/include/datacite-descriptionType-v4.xsd +19 -0
  198. data/resources/kernel-4.6/include/datacite-funderIdentifierType-v4.xsd +16 -0
  199. data/resources/kernel-4.6/include/datacite-nameType-v4.xsd +10 -0
  200. data/resources/kernel-4.6/include/datacite-numberType-v4.xsd +12 -0
  201. data/resources/kernel-4.6/include/datacite-relatedIdentifierType-v4.xsd +37 -0
  202. data/resources/kernel-4.6/include/datacite-relationType-v4.xsd +57 -0
  203. data/resources/kernel-4.6/include/datacite-resourceType-v4.xsd +49 -0
  204. data/resources/kernel-4.6/include/datacite-titleType-v4.xsd +14 -0
  205. data/resources/kernel-4.6/include/xml.xsd +286 -0
  206. data/resources/kernel-4.6/metadata.xsd +712 -0
  207. data/resources/kernel-4.7/include/datacite-contributorType-v4.xsd +37 -0
  208. data/resources/kernel-4.7/include/datacite-dateType-v4.xsd +27 -0
  209. data/resources/kernel-4.7/include/datacite-descriptionType-v4.xsd +19 -0
  210. data/resources/kernel-4.7/include/datacite-funderIdentifierType-v4.xsd +16 -0
  211. data/resources/kernel-4.7/include/datacite-nameType-v4.xsd +10 -0
  212. data/resources/kernel-4.7/include/datacite-numberType-v4.xsd +12 -0
  213. data/resources/kernel-4.7/include/datacite-relatedIdentifierType-v4.xsd +39 -0
  214. data/resources/kernel-4.7/include/datacite-relationType-v4.xsd +59 -0
  215. data/resources/kernel-4.7/include/datacite-resourceType-v4.xsd +52 -0
  216. data/resources/kernel-4.7/include/datacite-titleType-v4.xsd +14 -0
  217. data/resources/kernel-4.7/include/xml.xsd +286 -0
  218. data/resources/kernel-4.7/metadata.xsd +715 -0
  219. data/resources/oecd/dfg-mappings.json +1866 -0
  220. data/resources/oecd/for-mappings.json +1101 -0
  221. data/resources/oecd/fos-mappings.json +198 -0
  222. data/resources/schema_org/jsonldcontext.json +7477 -0
  223. data/resources/spdx/licenses.json +5297 -0
  224. data/resources/xml.xsd +286 -0
  225. metadata +478 -150
  226. data/.travis.yml +0 -23
  227. data/lib/bolognese/crossref.rb +0 -202
  228. data/lib/bolognese/datacite.rb +0 -157
  229. data/lib/bolognese/date_utils.rb +0 -48
  230. data/lib/bolognese/github.rb +0 -106
  231. data/lib/bolognese/orcid.rb +0 -24
  232. data/lib/bolognese/pid_utils.rb +0 -23
  233. data/spec/cli_spec.rb +0 -37
  234. data/spec/crossref_spec.rb +0 -113
  235. data/spec/datacite_spec.rb +0 -49
  236. data/spec/doi_spec.rb +0 -89
  237. data/spec/fixtures/crossref.xml +0 -742
  238. data/spec/fixtures/datacite.xml +0 -40
  239. data/spec/fixtures/vcr_cassettes/Bolognese_CLI/read/crossref/as_crossref.yml +0 -760
  240. data/spec/fixtures/vcr_cassettes/Bolognese_CLI/read/crossref/as_schema_org.yml +0 -1476
  241. data/spec/fixtures/vcr_cassettes/Bolognese_CLI/read/datacite/as_datacite.yml +0 -214
  242. data/spec/fixtures/vcr_cassettes/Bolognese_CLI/read/datacite/as_schema_org.yml +0 -384
  243. data/spec/fixtures/vcr_cassettes/Bolognese_Crossref/doi_registration_agency/crossref.yml +0 -44
  244. data/spec/fixtures/vcr_cassettes/Bolognese_Crossref/doi_registration_agency/datacite.yml +0 -44
  245. data/spec/fixtures/vcr_cassettes/Bolognese_Crossref/doi_registration_agency/medra.yml +0 -44
  246. data/spec/fixtures/vcr_cassettes/Bolognese_Crossref/doi_registration_agency/not_found.yml +0 -44
  247. data/spec/fixtures/vcr_cassettes/Bolognese_Crossref/get_metadata/DOI_test.yml +0 -843
  248. data/spec/fixtures/vcr_cassettes/Bolognese_Crossref/get_metadata/DOI_with_SICI_DOI.yml +0 -277
  249. data/spec/fixtures/vcr_cassettes/Bolognese_Crossref/get_metadata/DOI_with_data_citation.yml +0 -15755
  250. data/spec/fixtures/vcr_cassettes/Bolognese_Crossref/get_metadata/date_in_future.yml +0 -2691
  251. data/spec/fixtures/vcr_cassettes/Bolognese_Crossref/get_metadata/journal_article.yml +0 -1857
  252. data/spec/fixtures/vcr_cassettes/Bolognese_Crossref/get_metadata/not_found_error.yml +0 -93
  253. data/spec/fixtures/vcr_cassettes/Bolognese_Crossref/get_metadata/posted_content.yml +0 -5715
  254. data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/get_metadata/BlogPosting.yml +0 -307
  255. data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/get_metadata/Dataset.yml +0 -343
  256. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/find_PID_provider/crossref.yml +0 -44
  257. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/find_PID_provider/crossref_doi_not_url.yml +0 -44
  258. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/find_PID_provider/datacite.yml +0 -44
  259. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/find_PID_provider/datacite_doi_http.yml +0 -44
  260. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/find_PID_provider/orcid.yml +0 -44
  261. data/spec/metadata_spec.rb +0 -35
  262. data/spec/orcid_spec.rb +0 -23
  263. data/spec/spec_helper.rb +0 -88
  264. /data/{LICENSE → LICENSE.md} +0 -0
data/README.md CHANGED
@@ -1,3 +1,1027 @@
1
- # bolognese
1
+ [![Identifier](https://img.shields.io/badge/doi-10.5438%2Fn138--z3mk-fca709.svg)](https://doi.org/10.5438/n138-z3mk)
2
+ [![Gem Version](https://badge.fury.io/rb/bolognese.svg)](https://badge.fury.io/rb/bolognese)
3
+ ![Build Ruby Gem](https://github.com/datacite/bolognese/workflows/Build%20Ruby%20Gem/badge.svg)
4
+ [![Code Climate](https://codeclimate.com/github/datacite/bolognese/badges/gpa.svg)](https://codeclimate.com/github/datacite/bolognese)
5
+ [![Test Coverage](https://codeclimate.com/github/datacite/bolognese/badges/coverage.svg)](https://codeclimate.com/github/datacite/bolognese/coverage)
2
6
 
3
- Command-line utility for conversion of DOI metadata.
7
+ # Bolognese: a Ruby library for conversion of DOI Metadata
8
+
9
+ Ruby gem and command-line utility for conversion of DOI metadata from and to different metadata formats, including [schema.org](https://schema.org).
10
+
11
+
12
+ ## Features
13
+
14
+ Bolognese reads and/or writes these metadata formats:
15
+
16
+ <table class="table table-bordered table-striped">
17
+ <thead>
18
+ <tr>
19
+ <th>Format</th>
20
+ <th>Name</th>
21
+ <th>Content Type</th>
22
+ <th>Read</th>
23
+ <th>Write</th>
24
+ </tr>
25
+ </thead>
26
+ <tbody>
27
+ <tr>
28
+ <td><a href='https://www.crossref.org/schema/documentation/unixref1.1/unixref1.1.html'>CrossRef Unixref XML</a></td>
29
+ <td>crossref</td>
30
+ <td>application/vnd.crossref.unixref+xml</td>
31
+ <td>Yes</td>
32
+ <td>No</td>
33
+ </tr>
34
+ <tr>
35
+ <td><a href='https://schema.datacite.org/'>DataCite XML</a></td>
36
+ <td>datacite</td>
37
+ <td>application/vnd.datacite.datacite+xml</td>
38
+ <td>Yes</td>
39
+ <td>Yes</td>
40
+ </tr>
41
+ <tr>
42
+ <td><a href='https://api.datacite.org/'>DataCite JSON</a></td>
43
+ <td>datacite_json</td>
44
+ <td>application/vnd.datacite.datacite+json</td>
45
+ <td>Yes</td>
46
+ <td>Yes</td>
47
+ </tr>
48
+ <tr>
49
+ <td><a href='http://schema.org/'>Schema.org in JSON-LD</a></td>
50
+ <td>schema_org</td>
51
+ <td>application/vnd.schemaorg.ld+json</td>
52
+ <td>Yes</td>
53
+ <td>Yes</td>
54
+ </tr>
55
+ <tr>
56
+ <td><a href='http://www.w3.org/TR/rdf-syntax-grammar/'>RDF XML</a></td>
57
+ <td>rdf_xml</td>
58
+ <td>application/rdf+xml</td>
59
+ <td>No</td>
60
+ <td>Yes</td>
61
+ </tr>
62
+ <tr>
63
+ <td><a href='http://www.w3.org/TeamSubmission/turtle/'>RDF Turtle</a></td>
64
+ <td>turtle</td>
65
+ <td>text/turtle</td>
66
+ <td>No</td>
67
+ <td>Yes</td>
68
+ </tr>
69
+ <tr>
70
+ <td><a href='https://citationstyles.org/'>Citeproc JSON</a></td>
71
+ <td>citeproc</td>
72
+ <td>application/vnd.citationstyles.csl+json</td>
73
+ <td>Yes</td>
74
+ <td>Yes</td>
75
+ </tr>
76
+ <tr>
77
+ <td><a href='https://citationstyles.org/'>Formatted text citation</a></td>
78
+ <td>citation</td>
79
+ <td>text/x-bibliography</td>
80
+ <td>No</td>
81
+ <td>Yes</td>
82
+ </tr>
83
+ <tr>
84
+ <td><a href='https://codemeta.github.io/'>Codemeta</a></td>
85
+ <td>codemeta</td>
86
+ <td>application/vnd.codemeta.ld+json</td>
87
+ <td>Yes</td>
88
+ <td>Yes</td>
89
+ </tr>
90
+ <tr>
91
+ <td><a href='https://jats.nlm.nih.gov/'>JATS</a></td>
92
+ <td>jats</td>
93
+ <td>application/vnd.jats+xml</td>
94
+ <td>No</td>
95
+ <td>Yes</td>
96
+ </tr>
97
+ <tr>
98
+ <td><a href='https://en.wikipedia.org/wiki/Comma-separated_values'>CSV</a></td>
99
+ <td>csv</td>
100
+ <td>text/csv</td>
101
+ <td>No</td>
102
+ <td>Yes</td>
103
+ </tr>
104
+ <tr>
105
+ <td><a href='http://en.wikipedia.org/wiki/BibTeX'>BibTeX</a></td>
106
+ <td>bibtex</td>
107
+ <td>application/x-bibtex</td>
108
+ <td>Yes</td>
109
+ <td>Yes</td>
110
+ </tr>
111
+ <tr>
112
+ <td><a href='http://en.wikipedia.org/wiki/RIS_(file_format)'>RIS</a></td>
113
+ <td>ris</td>
114
+ <td>application/x-research-info-systems</td>
115
+ <td>Yes</td>
116
+ <td>Yes</td>
117
+ </tr>
118
+ <tr>
119
+ <td><a href='https://citation.crosscite.org/'>Crosscite</a></td>
120
+ <td>crosscite</td>
121
+ <td>application/vnd.crosscite.crosscite+json</td>
122
+ <td>Yes</td>
123
+ <td>Yes</td>
124
+ </tr>
125
+ </tbody>
126
+ </table>
127
+
128
+ **Crosscite** is the format used internally by bolognese.
129
+
130
+ ## Installation
131
+
132
+ Requires Ruby 2.2 or later. Then add the following to your `Gemfile` to install the
133
+ latest version:
134
+
135
+ ```ruby
136
+ gem 'bolognese'
137
+ ```
138
+
139
+ Then run `bundle install` to install into your environment.
140
+
141
+ You can also install the gem system-wide in the usual way:
142
+
143
+ ```bash
144
+ gem install bolognese
145
+ ```
146
+
147
+ ## Commands
148
+
149
+ Run the `bolognese` command with either an identifier (DOI or URL) or filename:
150
+
151
+ ```
152
+ bolognese https://doi.org/10.7554/elife.01567
153
+ ```
154
+
155
+ ```
156
+ bolognese example.xml
157
+ ```
158
+
159
+ Bolognese can read BibTeX files (file extension `.bib`), RIS files (file extension `.ris`), Crossref or DataCite XML files (file extension `.xml`), DataCite JSON files (file extension `Citeproc JSON files ().
160
+
161
+ The input format (e.g. Crossref XML or BibteX) is automatically detected, but
162
+ you can also provide the format with the `--from` or `-f` flag. The supported
163
+ input formats are listed in the table above.
164
+
165
+ The output format is determined by the `--to` or `-t` flag, and defaults to `schema_org`.
166
+
167
+ Show all commands with `bolognese help`:
168
+
169
+ ```
170
+ Commands:
171
+ bolognese # convert metadata
172
+ bolognese --version, -v # print the version
173
+ bolognese help [COMMAND] # Describe available commands or one specific command
174
+ ```
175
+ ## Errors
176
+
177
+ Errors are returned to STDOUT.
178
+
179
+ All DataCite XML input is validated against the corresponding schema version (kernel 2.1, 2.2, 3, or 4).
180
+
181
+ ## Examples
182
+
183
+ Read Crossref XML:
184
+
185
+ ```
186
+ bolognese https://doi.org/10.7554/elife.01567 -t crossref
187
+
188
+ <?xml version="1.0" encoding="UTF-8"?>
189
+ <doi_records>
190
+ <doi_record owner="10.7554" timestamp="2015-08-11 07:35:02">
191
+ <crossref>
192
+ <journal>
193
+ <journal_metadata language="en">
194
+ <full_title>eLife</full_title>
195
+ <issn media_type="electronic">2050-084X</issn>
196
+ </journal_metadata>
197
+ <journal_issue>
198
+ <publication_date media_type="online">
199
+ <month>02</month>
200
+ <day>11</day>
201
+ <year>2014</year>
202
+ </publication_date>
203
+ <journal_volume>
204
+ <volume>3</volume>
205
+ </journal_volume>
206
+ </journal_issue>
207
+ <journal_article publication_type="full_text">
208
+ <titles>
209
+ <title>Automated quantitative histology reveals vascular morphodynamics during Arabidopsis hypocotyl secondary growth</title>
210
+ </titles>
211
+ <contributors>
212
+ <person_name contributor_role="author" sequence="first">
213
+ <given_name>Martial</given_name>
214
+ <surname>Sankar</surname>
215
+ </person_name>
216
+ <person_name contributor_role="author" sequence="additional">
217
+ <given_name>Kaisa</given_name>
218
+ <surname>Nieminen</surname>
219
+ </person_name>
220
+ <person_name contributor_role="author" sequence="additional">
221
+ <given_name>Laura</given_name>
222
+ <surname>Ragni</surname>
223
+ </person_name>
224
+ <person_name contributor_role="author" sequence="additional">
225
+ <given_name>Ioannis</given_name>
226
+ <surname>Xenarios</surname>
227
+ </person_name>
228
+ <person_name contributor_role="author" sequence="additional">
229
+ <given_name>Christian S</given_name>
230
+ <surname>Hardtke</surname>
231
+ </person_name>
232
+ </contributors>
233
+ <publication_date media_type="online">
234
+ <month>02</month>
235
+ <day>11</day>
236
+ <year>2014</year>
237
+ </publication_date>
238
+ <publisher_item>
239
+ <identifier id_type="doi">10.7554/eLife.01567</identifier>
240
+ </publisher_item>
241
+ <crossmark>
242
+ <crossmark_version>1</crossmark_version>
243
+ <crossmark_policy>eLifesciences</crossmark_policy>
244
+ <crossmark_domains>
245
+ <crossmark_domain>
246
+ <domain>www.elifesciences.org</domain>
247
+ </crossmark_domain>
248
+ </crossmark_domains>
249
+ <crossmark_domain_exclusive>false</crossmark_domain_exclusive>
250
+ <custom_metadata>
251
+ <assertion name="received" label="Received" group_name="publication_history" group_label="Publication History" order="0">2013-09-20</assertion>
252
+ <assertion name="accepted" label="Accepted" group_name="publication_history" group_label="Publication History" order="1">2013-12-24</assertion>
253
+ <assertion name="published" label="Published" group_name="publication_history" group_label="Publication History" order="2">2014-02-11</assertion>
254
+ <program name="fundref">
255
+ <assertion name="fundgroup">
256
+ <assertion name="funder_name">SystemsX</assertion>
257
+ </assertion>
258
+ <assertion name="fundgroup">
259
+ <assertion name="funder_name">
260
+ EMBO
261
+ <assertion name="funder_identifier">http://dx.doi.org/10.13039/501100003043</assertion>
262
+ </assertion>
263
+ </assertion>
264
+ <assertion name="fundgroup">
265
+ <assertion name="funder_name">
266
+ Swiss National Science Foundation
267
+ <assertion name="funder_identifier">http://dx.doi.org/10.13039/501100001711</assertion>
268
+ </assertion>
269
+ </assertion>
270
+ <assertion name="fundgroup">
271
+ <assertion name="funder_name">
272
+ University of Lausanne
273
+ <assertion name="funder_identifier" provider="crossref">http://dx.doi.org/10.13039/501100006390</assertion>
274
+ </assertion>
275
+ </assertion>
276
+ </program>
277
+ <program name="AccessIndicators">
278
+ <license_ref applies_to="vor">http://creativecommons.org/licenses/by/3.0/</license_ref>
279
+ <license_ref applies_to="am">http://creativecommons.org/licenses/by/3.0/</license_ref>
280
+ <license_ref applies_to="tdm">http://creativecommons.org/licenses/by/3.0/</license_ref>
281
+ </program>
282
+ </custom_metadata>
283
+ </crossmark>
284
+ <doi_data>
285
+ <doi>10.7554/eLife.01567</doi>
286
+ <resource>http://elifesciences.org/lookup/doi/10.7554/eLife.01567</resource>
287
+ </doi_data>
288
+ <citation_list>
289
+ ...
290
+ <citation key="22">
291
+ <author>Sankar</author>
292
+ <cYear>2014</cYear>
293
+ <doi>10.5061/dryad.b835k</doi>
294
+ </citation>
295
+ ...
296
+ </citation_list>
297
+ <component_list>
298
+ ...
299
+ </component_list>
300
+ </journal_article>
301
+ </journal>
302
+ </crossref>
303
+ </doi_record>
304
+ </doi_records>
305
+ ```
306
+
307
+ Convert Crossref XML to schema.org/JSON-LD:
308
+ ```
309
+ bolognese https://doi.org/10.7554/elife.01567
310
+
311
+ {
312
+ "@context": "http://schema.org",
313
+ "@type": "ScholarlyArticle",
314
+ "@id": "https://doi.org/10.7554/elife.01567",
315
+ "url": "http://elifesciences.org/lookup/doi/10.7554/eLife.01567",
316
+ "additionalType": "JournalArticle",
317
+ "name": "Automated quantitative histology reveals vascular morphodynamics during Arabidopsis hypocotyl secondary growth",
318
+ "author": [{
319
+ "@type": "Person",
320
+ "givenName": "Martial",
321
+ "familyName": "Sankar"
322
+ }, {
323
+ "@type": "Person",
324
+ "givenName": "Kaisa",
325
+ "familyName": "Nieminen"
326
+ }, {
327
+ "@type": "Person",
328
+ "givenName": "Laura",
329
+ "familyName": "Ragni"
330
+ }, {
331
+ "@type": "Person",
332
+ "givenName": "Ioannis",
333
+ "familyName": "Xenarios"
334
+ }, {
335
+ "@type": "Person",
336
+ "givenName": "Christian S",
337
+ "familyName": "Hardtke"
338
+ }],
339
+ "license": "http://creativecommons.org/licenses/by/3.0/",
340
+ "datePublished": "2014-02-11",
341
+ "dateModified": "2015-08-11T05:35:02Z",
342
+ "isPartOf": {
343
+ "@type": "Periodical",
344
+ "name": "eLife",
345
+ "issn": "2050-084X"
346
+ },
347
+ "citation": [{
348
+ "@type": "CreativeWork",
349
+ "@id": "https://doi.org/10.1038/nature02100",
350
+ "position": "1",
351
+ "datePublished": "2003"
352
+ }, {
353
+ "@type": "CreativeWork",
354
+ "@id": "https://doi.org/10.1534/genetics.109.104976",
355
+ "position": "2",
356
+ "datePublished": "2009"
357
+ }, {
358
+ "@type": "CreativeWork",
359
+ "@id": "https://doi.org/10.1034/j.1399-3054.2002.1140413.x",
360
+ "position": "3",
361
+ "datePublished": "2002"
362
+ }, {
363
+ "@type": "CreativeWork",
364
+ "@id": "https://doi.org/10.1162/089976601750399335",
365
+ "position": "4",
366
+ "datePublished": "2001"
367
+ }, {
368
+ "@type": "CreativeWork",
369
+ "position": "5",
370
+ "datePublished": "1995"
371
+ }, {
372
+ "@type": "CreativeWork",
373
+ "position": "6",
374
+ "datePublished": "1993"
375
+ }, {
376
+ "@type": "CreativeWork",
377
+ "@id": "https://doi.org/10.1016/j.semcdb.2009.09.009",
378
+ "position": "7",
379
+ "datePublished": "2009"
380
+ }, {
381
+ "@type": "CreativeWork",
382
+ "@id": "https://doi.org/10.1242/dev.091314",
383
+ "position": "8",
384
+ "datePublished": "2013"
385
+ }, {
386
+ "@type": "CreativeWork",
387
+ "@id": "https://doi.org/10.1371/journal.pgen.1002997",
388
+ "position": "9",
389
+ "datePublished": "2012"
390
+ }, {
391
+ "@type": "CreativeWork",
392
+ "@id": "https://doi.org/10.1038/msb.2010.25",
393
+ "position": "10",
394
+ "datePublished": "2010"
395
+ }, {
396
+ "@type": "CreativeWork",
397
+ "@id": "https://doi.org/10.1016/j.biosystems.2012.07.004",
398
+ "position": "11",
399
+ "datePublished": "2012"
400
+ }, {
401
+ "@type": "CreativeWork",
402
+ "@id": "https://doi.org/10.1016/j.pbi.2005.11.013",
403
+ "position": "12",
404
+ "datePublished": "2006"
405
+ }, {
406
+ "@type": "CreativeWork",
407
+ "@id": "https://doi.org/10.1105/tpc.110.076083",
408
+ "position": "13",
409
+ "datePublished": "2010"
410
+ }, {
411
+ "@type": "CreativeWork",
412
+ "@id": "https://doi.org/10.1073/pnas.0808444105",
413
+ "position": "14",
414
+ "datePublished": "2008"
415
+ }, {
416
+ "@type": "CreativeWork",
417
+ "@id": "https://doi.org/10.1016/0092-8674(89)90900-8",
418
+ "position": "15",
419
+ "datePublished": "1989"
420
+ }, {
421
+ "@type": "CreativeWork",
422
+ "@id": "https://doi.org/10.1126/science.1066609",
423
+ "position": "16",
424
+ "datePublished": "2002"
425
+ }, {
426
+ "@type": "CreativeWork",
427
+ "@id": "https://doi.org/10.1104/pp.104.040212",
428
+ "position": "17",
429
+ "datePublished": "2004"
430
+ }, {
431
+ "@type": "CreativeWork",
432
+ "@id": "https://doi.org/10.1038/nbt1206-1565",
433
+ "position": "18",
434
+ "datePublished": "2006"
435
+ }, {
436
+ "@type": "CreativeWork",
437
+ "@id": "https://doi.org/10.1073/pnas.77.3.1516",
438
+ "position": "19",
439
+ "datePublished": "1980"
440
+ }, {
441
+ "@type": "CreativeWork",
442
+ "@id": "https://doi.org/10.1093/bioinformatics/btq046",
443
+ "position": "20",
444
+ "datePublished": "2010"
445
+ }, {
446
+ "@type": "CreativeWork",
447
+ "@id": "https://doi.org/10.1105/tpc.111.084020",
448
+ "position": "21",
449
+ "datePublished": "2011"
450
+ }, {
451
+ "@type": "CreativeWork",
452
+ "@id": "https://doi.org/10.5061/dryad.b835k",
453
+ "position": "22",
454
+ "datePublished": "2014"
455
+ }, {
456
+ "@type": "CreativeWork",
457
+ "@id": "https://doi.org/10.1016/j.cub.2008.02.070",
458
+ "position": "23",
459
+ "datePublished": "2008"
460
+ }, {
461
+ "@type": "CreativeWork",
462
+ "@id": "https://doi.org/10.1111/j.1469-8137.2010.03236.x",
463
+ "position": "24",
464
+ "datePublished": "2010"
465
+ }, {
466
+ "@type": "CreativeWork",
467
+ "@id": "https://doi.org/10.1007/s00138-011-0345-9",
468
+ "position": "25",
469
+ "datePublished": "2012"
470
+ }, {
471
+ "@type": "CreativeWork",
472
+ "@id": "https://doi.org/10.1016/j.cell.2012.02.048",
473
+ "position": "26",
474
+ "datePublished": "2012"
475
+ }, {
476
+ "@type": "CreativeWork",
477
+ "@id": "https://doi.org/10.1038/ncb2764",
478
+ "position": "27",
479
+ "datePublished": "2013"
480
+ }],
481
+ "funder": [{
482
+ "@type": "Organization",
483
+ "name": "SystemsX"
484
+ }, {
485
+ "@type": "Organization",
486
+ "@id": "https://doi.org/10.13039/501100003043",
487
+ "name": "EMBO"
488
+ }, {
489
+ "@type": "Organization",
490
+ "@id": "https://doi.org/10.13039/501100001711",
491
+ "name": "Swiss National Science Foundation"
492
+ }, {
493
+ "@type": "Organization",
494
+ "@id": "https://doi.org/10.13039/501100006390",
495
+ "name": "University of Lausanne"
496
+ }],
497
+ "provider": {
498
+ "@type": "Organization",
499
+ "name": "Crossref"
500
+ }
501
+ }
502
+ ```
503
+
504
+ Convert Crossref XML to DataCite XML:
505
+ ```
506
+ bolognese https://doi.org/10.7554/elife.01567 -t datacite
507
+
508
+ <?xml version="1.0" encoding="UTF-8"?>
509
+ <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">
510
+ <identifier identifierType="DOI">10.7554/eLife.01567</identifier>
511
+ <creators>
512
+ <creator>
513
+ <creatorName>Sankar, Martial</creatorName>
514
+ <givenName>Martial</givenName>
515
+ <familyName>Sankar</familyName>
516
+ </creator>
517
+ <creator>
518
+ <creatorName>Nieminen, Kaisa</creatorName>
519
+ <givenName>Kaisa</givenName>
520
+ <familyName>Nieminen</familyName>
521
+ </creator>
522
+ <creator>
523
+ <creatorName>Ragni, Laura</creatorName>
524
+ <givenName>Laura</givenName>
525
+ <familyName>Ragni</familyName>
526
+ </creator>
527
+ <creator>
528
+ <creatorName>Xenarios, Ioannis</creatorName>
529
+ <givenName>Ioannis</givenName>
530
+ <familyName>Xenarios</familyName>
531
+ </creator>
532
+ <creator>
533
+ <creatorName>Hardtke, Christian S</creatorName>
534
+ <givenName>Christian S</givenName>
535
+ <familyName>Hardtke</familyName>
536
+ </creator>
537
+ </creators>
538
+ <titles>
539
+ <title>Automated quantitative histology reveals vascular morphodynamics during Arabidopsis hypocotyl secondary growth</title>
540
+ </titles>
541
+ <publisher>eLife</publisher>
542
+ <publicationYear>2014</publicationYear>
543
+ <resourceType resourceTypeGeneral="Text">JournalArticle</resourceType>
544
+ <fundingReferences>
545
+ <fundingReference>
546
+ <funderName>SystemsX</funderName>
547
+ </fundingReference>
548
+ <fundingReference>
549
+ <funderName>EMBO</funderName>
550
+ <funderIdentifier funderIdentifierType="Crossref Funder ID">https://doi.org/10.13039/501100003043</funderIdentifier>
551
+ </fundingReference>
552
+ <fundingReference>
553
+ <funderName>Swiss National Science Foundation</funderName>
554
+ <funderIdentifier funderIdentifierType="Crossref Funder ID">https://doi.org/10.13039/501100001711</funderIdentifier>
555
+ </fundingReference>
556
+ <fundingReference>
557
+ <funderName>University of Lausanne</funderName>
558
+ <funderIdentifier funderIdentifierType="Crossref Funder ID">https://doi.org/10.13039/501100006390</funderIdentifier>
559
+ </fundingReference>
560
+ </fundingReferences>
561
+ <dates>
562
+ <date dateType="Issued">2014-02-11</date>
563
+ <date dateType="Updated">2015-08-11T05:35:02Z</date>
564
+ </dates>
565
+ <relatedIdentifiers>
566
+ <relatedIdentifier relatedIdentifierType="DOI" relationType="References">https://doi.org/10.1038/nature02100</relatedIdentifier>
567
+ <relatedIdentifier relatedIdentifierType="DOI" relationType="References">https://doi.org/10.1534/genetics.109.104976</relatedIdentifier>
568
+ <relatedIdentifier relatedIdentifierType="DOI" relationType="References">https://doi.org/10.1034/j.1399-3054.2002.1140413.x</relatedIdentifier>
569
+ <relatedIdentifier relatedIdentifierType="DOI" relationType="References">https://doi.org/10.1162/089976601750399335</relatedIdentifier>
570
+ <relatedIdentifier relatedIdentifierType="DOI" relationType="References">https://doi.org/10.1016/j.semcdb.2009.09.009</relatedIdentifier>
571
+ <relatedIdentifier relatedIdentifierType="DOI" relationType="References">https://doi.org/10.1242/dev.091314</relatedIdentifier>
572
+ <relatedIdentifier relatedIdentifierType="DOI" relationType="References">https://doi.org/10.1371/journal.pgen.1002997</relatedIdentifier>
573
+ <relatedIdentifier relatedIdentifierType="DOI" relationType="References">https://doi.org/10.1038/msb.2010.25</relatedIdentifier>
574
+ <relatedIdentifier relatedIdentifierType="DOI" relationType="References">https://doi.org/10.1016/j.biosystems.2012.07.004</relatedIdentifier>
575
+ <relatedIdentifier relatedIdentifierType="DOI" relationType="References">https://doi.org/10.1016/j.pbi.2005.11.013</relatedIdentifier>
576
+ <relatedIdentifier relatedIdentifierType="DOI" relationType="References">https://doi.org/10.1105/tpc.110.076083</relatedIdentifier>
577
+ <relatedIdentifier relatedIdentifierType="DOI" relationType="References">https://doi.org/10.1073/pnas.0808444105</relatedIdentifier>
578
+ <relatedIdentifier relatedIdentifierType="DOI" relationType="References">https://doi.org/10.1016/0092-8674(89)90900-8</relatedIdentifier>
579
+ <relatedIdentifier relatedIdentifierType="DOI" relationType="References">https://doi.org/10.1126/science.1066609</relatedIdentifier>
580
+ <relatedIdentifier relatedIdentifierType="DOI" relationType="References">https://doi.org/10.1104/pp.104.040212</relatedIdentifier>
581
+ <relatedIdentifier relatedIdentifierType="DOI" relationType="References">https://doi.org/10.1038/nbt1206-1565</relatedIdentifier>
582
+ <relatedIdentifier relatedIdentifierType="DOI" relationType="References">https://doi.org/10.1073/pnas.77.3.1516</relatedIdentifier>
583
+ <relatedIdentifier relatedIdentifierType="DOI" relationType="References">https://doi.org/10.1093/bioinformatics/btq046</relatedIdentifier>
584
+ <relatedIdentifier relatedIdentifierType="DOI" relationType="References">https://doi.org/10.1105/tpc.111.084020</relatedIdentifier>
585
+ <relatedIdentifier relatedIdentifierType="DOI" relationType="References">https://doi.org/10.5061/dryad.b835k</relatedIdentifier>
586
+ <relatedIdentifier relatedIdentifierType="DOI" relationType="References">https://doi.org/10.1016/j.cub.2008.02.070</relatedIdentifier>
587
+ <relatedIdentifier relatedIdentifierType="DOI" relationType="References">https://doi.org/10.1111/j.1469-8137.2010.03236.x</relatedIdentifier>
588
+ <relatedIdentifier relatedIdentifierType="DOI" relationType="References">https://doi.org/10.1007/s00138-011-0345-9</relatedIdentifier>
589
+ <relatedIdentifier relatedIdentifierType="DOI" relationType="References">https://doi.org/10.1016/j.cell.2012.02.048</relatedIdentifier>
590
+ <relatedIdentifier relatedIdentifierType="DOI" relationType="References">https://doi.org/10.1038/ncb2764</relatedIdentifier>
591
+ </relatedIdentifiers>
592
+ <rightsList>
593
+ <rights rightsURI="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0 (CC-BY 3.0)</rights>
594
+ </rightsList>
595
+ </resource>
596
+ ```
597
+ Convert Crossref XML to BibTeX:
598
+
599
+ ```
600
+ bolognese https://doi.org/10.7554/elife.01567 -t bibtex
601
+
602
+ @article{https://doi.org/10.7554/elife.01567,
603
+ doi = {10.7554/eLife.01567},
604
+ url = {http://elifesciences.org/lookup/doi/10.7554/eLife.01567},
605
+ author = {Sankar, Martial and Nieminen, Kaisa and Ragni, Laura and Xenarios, Ioannis and Hardtke, Christian S},
606
+ title = {Automated quantitative histology reveals vascular morphodynamics during Arabidopsis hypocotyl secondary growth},
607
+ journal = {eLife},
608
+ year = {2014}
609
+ }
610
+ ```
611
+
612
+ Read DataCite XML:
613
+ ```
614
+ bolognese 10.5061/DRYAD.8515 -t datacite
615
+
616
+ <?xml version="1.0" encoding="UTF-8"?>
617
+ <resource
618
+ xmlns="http://datacite.org/schema/kernel-3"
619
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
620
+ xmlns:mets="http://www.loc.gov/METS/"
621
+ xmlns:dspace="http://www.dspace.org/xmlns/dspace/dim"
622
+ xmlns:dim="http://www.dspace.org/xmlns/dspace/dim"
623
+ xmlns:dryad="http://purl.org/dryad/terms/"
624
+ xsi:schemaLocation="http://datacite.org/schema/kernel-3 http://schema.datacite.org/meta/kernel-3/metadata.xsd">
625
+ <identifier identifierType="DOI">10.5061/DRYAD.8515</identifier>
626
+ <version>1</version>
627
+ <creators>
628
+ <creator>
629
+ <creatorName>Ollomo, Benjamin</creatorName>
630
+ </creator>
631
+ <creator>
632
+ <creatorName>Durand, Patrick</creatorName>
633
+ </creator>
634
+ <creator>
635
+ <creatorName>Prugnolle, Franck</creatorName>
636
+ </creator>
637
+ <creator>
638
+ <creatorName>Douzery, Emmanuel J. P.</creatorName>
639
+ </creator>
640
+ <creator>
641
+ <creatorName>Arnathau, Céline</creatorName>
642
+ </creator>
643
+ <creator>
644
+ <creatorName>Nkoghe, Dieudonné</creatorName>
645
+ </creator>
646
+ <creator>
647
+ <creatorName>Leroy, Eric</creatorName>
648
+ </creator>
649
+ <creator>
650
+ <creatorName>Renaud, François</creatorName>
651
+ </creator>
652
+ </creators>
653
+ <titles>
654
+ <title>Data from: A new malaria agent in African hominids.</title>
655
+ </titles>
656
+ <publisher>Dryad Digital Repository</publisher>
657
+ <publicationYear>2011</publicationYear>
658
+ <subjects>
659
+ <subject>Phylogeny</subject>
660
+ <subject>Malaria</subject>
661
+ <subject>Parasites</subject>
662
+ <subject>Taxonomy</subject>
663
+ <subject>Mitochondrial genome</subject>
664
+ <subject>Africa</subject>
665
+ <subject>Plasmodium</subject>
666
+ </subjects>
667
+ <resourceType resourceTypeGeneral="Dataset">DataPackage</resourceType>
668
+ <alternateIdentifiers>
669
+ <alternateIdentifier alternateIdentifierType="citation">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.</alternateIdentifier>
670
+ </alternateIdentifiers>
671
+ <relatedIdentifiers>
672
+ <relatedIdentifier relatedIdentifierType="DOI" relationType="HasPart">10.5061/DRYAD.8515/1</relatedIdentifier>
673
+ <relatedIdentifier relatedIdentifierType="DOI" relationType="HasPart">10.5061/DRYAD.8515/2</relatedIdentifier>
674
+ <relatedIdentifier relatedIdentifierType="DOI" relationType="IsReferencedBy">10.1371/JOURNAL.PPAT.1000446</relatedIdentifier>
675
+ <relatedIdentifier relatedIdentifierType="PMID" relationType="IsReferencedBy">19478877</relatedIdentifier>
676
+ </relatedIdentifiers>
677
+ <rightsList>
678
+ <rights rightsURI="http://creativecommons.org/publicdomain/zero/1.0/"/>
679
+ </rightsList>
680
+ </resource>
681
+ ```
682
+
683
+ Convert DataCite XML to schema.org/JSON-LD:
684
+ ```sh
685
+ bolognese 10.5061/DRYAD.8515
686
+
687
+ {
688
+ "@context": "http://schema.org",
689
+ "@type": "Dataset",
690
+ "@id": "https://doi.org/10.5061/dryad.8515",
691
+ "additionalType": "DataPackage",
692
+ "name": "Data from: A new malaria agent in African hominids.",
693
+ "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.",
694
+ "author": [{
695
+ "@type": "Person",
696
+ "givenName": "Benjamin",
697
+ "familyName": "Ollomo"
698
+ }, {
699
+ "@type": "Person",
700
+ "givenName": "Patrick",
701
+ "familyName": "Durand"
702
+ }, {
703
+ "@type": "Person",
704
+ "givenName": "Franck",
705
+ "familyName": "Prugnolle"
706
+ }, {
707
+ "@type": "Person",
708
+ "givenName": "Emmanuel J. P.",
709
+ "familyName": "Douzery"
710
+ }, {
711
+ "@type": "Person",
712
+ "givenName": "Céline",
713
+ "familyName": "Arnathau"
714
+ }, {
715
+ "@type": "Person",
716
+ "givenName": "Dieudonné",
717
+ "familyName": "Nkoghe"
718
+ }, {
719
+ "@type": "Person",
720
+ "givenName": "Eric",
721
+ "familyName": "Leroy"
722
+ }, {
723
+ "@type": "Person",
724
+ "givenName": "François",
725
+ "familyName": "Renaud"
726
+ }],
727
+ "license": "http://creativecommons.org/publicdomain/zero/1.0/",
728
+ "version": "1",
729
+ "keywords": "Phylogeny, Malaria, Parasites, Taxonomy, Mitochondrial genome, Africa, Plasmodium",
730
+ "datePublished": "2011",
731
+ "hasPart": [{
732
+ "@type": "CreativeWork",
733
+ "@id": "https://doi.org/10.5061/dryad.8515/1"
734
+ }, {
735
+ "@type": "CreativeWork",
736
+ "@id": "https://doi.org/10.5061/dryad.8515/2"
737
+ }],
738
+ "citation": [{
739
+ "@type": "CreativeWork",
740
+ "@id": "https://doi.org/10.1371/journal.ppat.1000446"
741
+ }],
742
+ "schemaVersion": "http://datacite.org/schema/kernel-3",
743
+ "publisher": {
744
+ "@type": "Organization",
745
+ "name": "Dryad Digital Repository"
746
+ },
747
+ "provider": {
748
+ "@type": "Organization",
749
+ "name": "DataCite"
750
+ }
751
+ }
752
+ ```
753
+
754
+ Convert DataCite XML to schema version 4.0:
755
+ ```
756
+ bolognese 10.5061/DRYAD.8515 -t datacite --schema_version http://datacite.org/schema/kernel-4
757
+
758
+ <?xml version="1.0" encoding="UTF-8"?>
759
+ <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">
760
+ <identifier identifierType="DOI">10.5061/DRYAD.8515</identifier>
761
+ <creators>
762
+ <creator>
763
+ <creatorName>Ollomo, Benjamin</creatorName>
764
+ <givenName>Benjamin</givenName>
765
+ <familyName>Ollomo</familyName>
766
+ </creator>
767
+ <creator>
768
+ <creatorName>Durand, Patrick</creatorName>
769
+ <givenName>Patrick</givenName>
770
+ <familyName>Durand</familyName>
771
+ </creator>
772
+ <creator>
773
+ <creatorName>Prugnolle, Franck</creatorName>
774
+ <givenName>Franck</givenName>
775
+ <familyName>Prugnolle</familyName>
776
+ </creator>
777
+ <creator>
778
+ <creatorName>Douzery, Emmanuel J. P.</creatorName>
779
+ <givenName>Emmanuel J. P.</givenName>
780
+ <familyName>Douzery</familyName>
781
+ </creator>
782
+ <creator>
783
+ <creatorName>Arnathau, Céline</creatorName>
784
+ <givenName>Céline</givenName>
785
+ <familyName>Arnathau</familyName>
786
+ </creator>
787
+ <creator>
788
+ <creatorName>Nkoghe, Dieudonné</creatorName>
789
+ <givenName>Dieudonné</givenName>
790
+ <familyName>Nkoghe</familyName>
791
+ </creator>
792
+ <creator>
793
+ <creatorName>Leroy, Eric</creatorName>
794
+ <givenName>Eric</givenName>
795
+ <familyName>Leroy</familyName>
796
+ </creator>
797
+ <creator>
798
+ <creatorName>Renaud, François</creatorName>
799
+ <givenName>François</givenName>
800
+ <familyName>Renaud</familyName>
801
+ </creator>
802
+ </creators>
803
+ <titles>
804
+ <title>Data from: A new malaria agent in African hominids.</title>
805
+ </titles>
806
+ <publisher>Dryad Digital Repository</publisher>
807
+ <publicationYear>2011</publicationYear>
808
+ <resourceType resourceTypeGeneral="Dataset">DataPackage</resourceType>
809
+ <alternateIdentifiers>
810
+ <alternateIdentifier alternateIdentifierType="Local accession number">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.</alternateIdentifier>
811
+ </alternateIdentifiers>
812
+ <subjects>
813
+ <subject>Phylogeny</subject>
814
+ <subject>Malaria</subject>
815
+ <subject>Parasites</subject>
816
+ <subject>Taxonomy</subject>
817
+ <subject>Mitochondrial genome</subject>
818
+ <subject>Africa</subject>
819
+ <subject>Plasmodium</subject>
820
+ </subjects>
821
+ <dates>
822
+ <date dateType="Issued">2011</date>
823
+ </dates>
824
+ <relatedIdentifiers>
825
+ <relatedIdentifier relatedIdentifierType="DOI" relationType="HasPart">https://doi.org/10.5061/dryad.8515/1</relatedIdentifier>
826
+ <relatedIdentifier relatedIdentifierType="DOI" relationType="HasPart">https://doi.org/10.5061/dryad.8515/2</relatedIdentifier>
827
+ <relatedIdentifier relatedIdentifierType="DOI" relationType="References">https://doi.org/10.1371/journal.ppat.1000446</relatedIdentifier>
828
+ </relatedIdentifiers>
829
+ <version>1</version>
830
+ <rightsList>
831
+ <rights rightsURI="http://creativecommons.org/publicdomain/zero/1.0/">Public Domain (CC0 1.0)</rights>
832
+ </rightsList>
833
+ </resource>
834
+ ```
835
+
836
+
837
+ Convert DataCite XML to Codemeta:
838
+
839
+ ```
840
+ bolognese https://doi.org/10.5063/f1m61h5x -t codemeta
841
+
842
+ {
843
+ "@context":"https://raw.githubusercontent.com/codemeta/codemeta/master/codemeta.jsonld",
844
+ "@type":"SoftwareSourceCode",
845
+ "@id":"https://doi.org/10.5063/f1m61h5x",
846
+ "identifier":"https://doi.org/10.5063/f1m61h5x",
847
+ "title":"dataone: R interface to the DataONE network of data repositories",
848
+ "agents":{
849
+ "@type":"Person",
850
+ "givenName":"Matthew B.",
851
+ "familyName":"Jones"
852
+ },
853
+ "datePublished":"2016",
854
+ "publisher":{
855
+ "@type":"Organization",
856
+ "name":"KNB Data Repository"
857
+ }
858
+ }
859
+ ```
860
+
861
+ Convert DataCite XML to BibTeX:
862
+
863
+ ```
864
+ bolognese 10.5061/DRYAD.8515 -t bibtex
865
+
866
+ @misc{https://doi.org/10.5061/dryad.8515,
867
+ doi = {10.5061/DRYAD.8515},
868
+ author = {Ollomo, Benjamin and Durand, Patrick and Prugnolle, Franck and Douzery, Emmanuel J. P. and Arnathau, Céline and Nkoghe, Dieudonné and Leroy, Eric and Renaud, François},
869
+ keywords = {Phylogeny, Malaria, Parasites, Taxonomy, Mitochondrial genome, Africa, Plasmodium},
870
+ title = {Data from: A new malaria agent in African hominids.},
871
+ publisher = {Dryad Digital Repository},
872
+ year = {2011}
873
+ }
874
+ ```
875
+
876
+ Convert schema.org/JSON-LD to DataCite XML:
877
+
878
+ ```
879
+ bolognese https://blog.datacite.org/eating-your-own-dog-food -t datacite
880
+
881
+ <?xml version="1.0" encoding="UTF-8"?>
882
+ <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">
883
+ <identifier identifierType="DOI">10.5438/4k3m-nyvg</identifier>
884
+ <creators>
885
+ <creator>
886
+ <creatorName>Fenner, Martin</creatorName>
887
+ <givenName>Martin</givenName>
888
+ <familyName>Fenner</familyName>
889
+ <nameIdentifier schemeURI="http://orcid.org/" nameIdentifierScheme="ORCID">http://orcid.org/0000-0003-1419-2405</nameIdentifier>
890
+ </creator>
891
+ </creators>
892
+ <titles>
893
+ <title>Eating your own Dog Food</title>
894
+ </titles>
895
+ <publisher>DataCite</publisher>
896
+ <publicationYear>2016</publicationYear>
897
+ <resourceType resourceTypeGeneral="Text">BlogPosting</resourceType>
898
+ <alternateIdentifiers>
899
+ <alternateIdentifier alternateIdentifierType="Local accession number">MS-49-3632-5083</alternateIdentifier>
900
+ </alternateIdentifiers>
901
+ <subjects>
902
+ <subject>datacite</subject>
903
+ <subject>doi</subject>
904
+ <subject>metadata</subject>
905
+ <subject>featured</subject>
906
+ </subjects>
907
+ <dates>
908
+ <date dateType="Created">2016-12-20</date>
909
+ <date dateType="Issued">2016-12-20</date>
910
+ <date dateType="Updated">2016-12-20</date>
911
+ </dates>
912
+ <relatedIdentifiers>
913
+ <relatedIdentifier relatedIdentifierType="DOI" relationType="IsPartOf">https://doi.org/10.5438/0000-00ss</relatedIdentifier>
914
+ <relatedIdentifier relatedIdentifierType="DOI" relationType="References">https://doi.org/10.5438/0012</relatedIdentifier>
915
+ <relatedIdentifier relatedIdentifierType="DOI" relationType="References">https://doi.org/10.5438/55e5-t5c0</relatedIdentifier>
916
+ </relatedIdentifiers>
917
+ <version>1.0</version>
918
+ <rightsList>
919
+ <rights rightsURI="https://creativecommons.org/licenses/by/4.0/"/>
920
+ </rightsList>
921
+ <descriptions>
922
+ <description descriptionType="Abstract">Eating your own dog food is a slang term to describe that an organization should itself use the products and services it provides. For DataCite this means that we should use DOIs with appropriate metadata and strategies for long-term preservation for...</description>
923
+ </descriptions>
924
+ </resource>
925
+ ```
926
+
927
+ Convert schema.org/JSON-LD to BibTeX:
928
+
929
+ ```
930
+ bolognese https://blog.datacite.org/eating-your-own-dog-food -t bibtex
931
+
932
+ @article{https://doi.org/10.5438/4k3m-nyvg,
933
+ doi = {10.5438/4k3m-nyvg},
934
+ url = {https://blog.datacite.org/eating-your-own-dog-food},
935
+ author = {Fenner, Martin},
936
+ keywords = {datacite, doi, metadata, featured},
937
+ title = {Eating your own Dog Food},
938
+ publisher = {DataCite},
939
+ year = {2016}
940
+ }
941
+ ```
942
+
943
+ Convert Codemeta to schema.org/JSON-LD:
944
+
945
+ ```
946
+ bolognese https://github.com/datacite/maremma
947
+
948
+ {
949
+ "@context":"http://schema.org",
950
+ "@type":"SoftwareSourceCode",
951
+ "@id":"https://doi.org/10.5438/qeg0-3gm3",
952
+ "url":"https://github.com/datacite/maremma",
953
+ "name":"Maremma: a Ruby library for simplified network calls",
954
+ "author":{
955
+ "@type":"person",
956
+ "@id":"http://orcid.org/0000-0003-0077-4738",
957
+ "name":"Martin Fenner"
958
+ },
959
+ "description":"Simplifies network calls, including json/xml parsing and error handling. Based on Faraday.",
960
+ "keywords":"faraday, excon, net/http",
961
+ "dateCreated":"2015-11-28",
962
+ "datePublished":"2017-02-24",
963
+ "dateModified":"2017-02-24",
964
+ "publisher":{
965
+ "@type":"Organization",
966
+ "name":"DataCite"
967
+ }
968
+ }
969
+ ```
970
+
971
+ Convert Codemeta to DataCite XML:
972
+
973
+ ```
974
+ bolognese https://github.com/datacite/maremma -t datacite
975
+
976
+ <?xml version="1.0" encoding="UTF-8"?>
977
+ <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">
978
+ <identifier identifierType="DOI">10.5438/qeg0-3gm3</identifier>
979
+ <creators>
980
+ <creator>
981
+ <creatorName>Martin Fenner</creatorName>
982
+ <nameIdentifier schemeURI="http://orcid.org/" nameIdentifierScheme="ORCID">http://orcid.org/0000-0003-0077-4738</nameIdentifier>
983
+ </creator>
984
+ </creators>
985
+ <titles>
986
+ <title>Maremma: a Ruby library for simplified network calls</title>
987
+ </titles>
988
+ <publisher>DataCite</publisher>
989
+ <publicationYear>2017</publicationYear>
990
+ <resourceType resourceTypeGeneral="Software">SoftwareSourceCode</resourceType>
991
+ <subjects>
992
+ <subject>faraday</subject>
993
+ <subject>excon</subject>
994
+ <subject>net/http</subject>
995
+ </subjects>
996
+ <dates>
997
+ <date dateType="Created">2015-11-28</date>
998
+ <date dateType="Issued">2017-02-24</date>
999
+ <date dateType="Updated">2017-02-24</date>
1000
+ </dates>
1001
+ <descriptions>
1002
+ <description descriptionType="Abstract">Simplifies network calls, including json/xml parsing and error handling. Based on Faraday.</description>
1003
+ </descriptions>
1004
+ </resource>
1005
+ ```
1006
+
1007
+ ## Development
1008
+
1009
+ We use rspec for unit testing:
1010
+
1011
+ ```
1012
+ bundle exec rspec
1013
+ ```
1014
+
1015
+ Follow along via [Github Issues](https://github.com/datacite/bolognese/issues).
1016
+ Please open an issue if conversion fails or metadata are not properly supported.
1017
+
1018
+ ### Note on Patches/Pull Requests
1019
+
1020
+ * Fork the project
1021
+ * Write tests for your new feature or a test that reproduces a bug
1022
+ * Implement your feature or make a bug fix
1023
+ * Do not mess with Rakefile, version or history
1024
+ * Commit, push and make a pull request. Bonus points for topical branches.
1025
+
1026
+ ## License
1027
+ **bolognese** is released under the [MIT License](https://github.com/datacite/bolognese/blob/master/LICENSE.md).