bolognese 2.0.1 → 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 (587) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +1 -1
  3. data/.github/workflows/release.yml +2 -2
  4. data/Gemfile +1 -1
  5. data/Gemfile.lock +199 -167
  6. data/README.md +1 -1
  7. data/bolognese.gemspec +30 -37
  8. data/lib/bolognese/author_utils.rb +6 -48
  9. data/lib/bolognese/citeproc_extensions.rb +48 -0
  10. data/lib/bolognese/datacite_utils.rb +17 -7
  11. data/lib/bolognese/doi_utils.rb +4 -3
  12. data/lib/bolognese/metadata.rb +8 -5
  13. data/lib/bolognese/metadata_utils.rb +20 -5
  14. data/lib/bolognese/readers/citeproc_reader.rb +7 -1
  15. data/lib/bolognese/readers/codemeta_reader.rb +1 -1
  16. data/lib/bolognese/readers/crossref_reader.rb +50 -4
  17. data/lib/bolognese/readers/datacite_reader.rb +23 -49
  18. data/lib/bolognese/readers/ris_reader.rb +1 -1
  19. data/lib/bolognese/readers/schema_org_reader.rb +27 -5
  20. data/lib/bolognese/utils.rb +109 -122
  21. data/lib/bolognese/version.rb +1 -1
  22. data/lib/bolognese/writers/csv_writer.rb +3 -5
  23. data/lib/bolognese/writers/datacite_json_writer.rb +1 -4
  24. data/lib/bolognese/writers/jats_writer.rb +7 -3
  25. data/lib/bolognese/writers/schema_org_writer.rb +5 -1
  26. data/lib/bolognese.rb +1 -4
  27. data/resources/kernel-4/include/datacite-contributorType-v4.xsd +3 -1
  28. data/resources/kernel-4/include/datacite-dateType-v4.xsd +3 -1
  29. data/resources/kernel-4/include/datacite-relatedIdentifierType-v4.xsd +7 -2
  30. data/resources/kernel-4/include/datacite-relationType-v4.xsd +9 -3
  31. data/resources/kernel-4/include/datacite-resourceType-v4.xsd +8 -1
  32. data/resources/kernel-4/include/datacite-titleType-v4.xsd +1 -1
  33. data/resources/kernel-4/metadata.xsd +5 -1
  34. data/resources/kernel-4.6/include/datacite-contributorType-v4.xsd +37 -0
  35. data/resources/kernel-4.6/include/datacite-dateType-v4.xsd +27 -0
  36. data/resources/kernel-4.6/include/datacite-descriptionType-v4.xsd +19 -0
  37. data/resources/kernel-4.6/include/datacite-funderIdentifierType-v4.xsd +16 -0
  38. data/resources/kernel-4.6/include/datacite-nameType-v4.xsd +10 -0
  39. data/resources/kernel-4.6/include/datacite-numberType-v4.xsd +12 -0
  40. data/resources/kernel-4.6/include/datacite-relatedIdentifierType-v4.xsd +37 -0
  41. data/resources/kernel-4.6/include/datacite-relationType-v4.xsd +57 -0
  42. data/resources/kernel-4.6/include/datacite-resourceType-v4.xsd +49 -0
  43. data/resources/kernel-4.6/include/datacite-titleType-v4.xsd +14 -0
  44. data/resources/kernel-4.6/include/xml.xsd +286 -0
  45. data/resources/kernel-4.6/metadata.xsd +712 -0
  46. data/resources/kernel-4.7/include/datacite-contributorType-v4.xsd +37 -0
  47. data/resources/kernel-4.7/include/datacite-dateType-v4.xsd +27 -0
  48. data/resources/kernel-4.7/include/datacite-descriptionType-v4.xsd +19 -0
  49. data/resources/kernel-4.7/include/datacite-funderIdentifierType-v4.xsd +16 -0
  50. data/resources/kernel-4.7/include/datacite-nameType-v4.xsd +10 -0
  51. data/resources/kernel-4.7/include/datacite-numberType-v4.xsd +12 -0
  52. data/resources/kernel-4.7/include/datacite-relatedIdentifierType-v4.xsd +39 -0
  53. data/resources/kernel-4.7/include/datacite-relationType-v4.xsd +59 -0
  54. data/resources/kernel-4.7/include/datacite-resourceType-v4.xsd +52 -0
  55. data/resources/kernel-4.7/include/datacite-titleType-v4.xsd +14 -0
  56. data/resources/kernel-4.7/include/xml.xsd +286 -0
  57. data/resources/kernel-4.7/metadata.xsd +715 -0
  58. metadata +147 -733
  59. data/spec/array_spec.rb +0 -22
  60. data/spec/author_utils_spec.rb +0 -253
  61. data/spec/cli_spec.rb +0 -226
  62. data/spec/datacite_utils_spec.rb +0 -207
  63. data/spec/doi_utils_spec.rb +0 -314
  64. data/spec/find_from_format_spec.rb +0 -114
  65. data/spec/fixtures/aida.json +0 -82
  66. data/spec/fixtures/cgimp_package.json +0 -18
  67. data/spec/fixtures/cit_package.json +0 -19
  68. data/spec/fixtures/citeproc-no-author.json +0 -26
  69. data/spec/fixtures/citeproc-no-categories.json +0 -21
  70. data/spec/fixtures/citeproc.json +0 -32
  71. data/spec/fixtures/codemeta.json +0 -86
  72. data/spec/fixtures/codemeta_v2.json +0 -86
  73. data/spec/fixtures/crosscite.json +0 -63
  74. data/spec/fixtures/crossref.bib +0 -14
  75. data/spec/fixtures/crossref.ris +0 -15
  76. data/spec/fixtures/crossref.xml +0 -606
  77. data/spec/fixtures/datacite-empty-sizes.xml +0 -57
  78. data/spec/fixtures/datacite-example-ROR-nameIdentifiers.xml +0 -117
  79. data/spec/fixtures/datacite-example-affiliation.xml +0 -114
  80. data/spec/fixtures/datacite-example-ancientdates-v4.3.xml +0 -29
  81. data/spec/fixtures/datacite-example-complicated-tba.xml +0 -56
  82. data/spec/fixtures/datacite-example-complicated-v3.0.xml +0 -48
  83. data/spec/fixtures/datacite-example-complicated-v4.0.xml +0 -54
  84. data/spec/fixtures/datacite-example-complicated-v4.1.xml +0 -57
  85. data/spec/fixtures/datacite-example-dissertation-v4.4.xml +0 -56
  86. data/spec/fixtures/datacite-example-escaped-text.xml +0 -56
  87. data/spec/fixtures/datacite-example-full-v4.4.xml +0 -114
  88. data/spec/fixtures/datacite-example-full-v4.5.xml +0 -255
  89. data/spec/fixtures/datacite-example-geolocation-2.xml +0 -141
  90. data/spec/fixtures/datacite-example-geolocation.xml +0 -66
  91. data/spec/fixtures/datacite-example-nameIdentifier-with-schemeURI.xml +0 -94
  92. data/spec/fixtures/datacite-example-polygon-v4.1.xml +0 -163
  93. data/spec/fixtures/datacite-example-relateditems-with-attributes.xml +0 -61
  94. data/spec/fixtures/datacite-example-relateditems.xml +0 -61
  95. data/spec/fixtures/datacite-example-xs-string.xml +0 -28
  96. data/spec/fixtures/datacite-formats-with-xs.xml +0 -22
  97. data/spec/fixtures/datacite-funderIdentifier.xml +0 -98
  98. data/spec/fixtures/datacite-geolocation-empty.xml +0 -159
  99. data/spec/fixtures/datacite-geolocationpolygons-multiple.xml +0 -76
  100. data/spec/fixtures/datacite-metadata-sample-complicated-v2.2.xml +0 -52
  101. data/spec/fixtures/datacite-multiple-language.xml +0 -38
  102. data/spec/fixtures/datacite-multiple-rights.xml +0 -59
  103. data/spec/fixtures/datacite-schema-2.2.xml +0 -80
  104. data/spec/fixtures/datacite-seriesinformation.xml +0 -46
  105. data/spec/fixtures/datacite-space-in-sizes.xml +0 -52
  106. data/spec/fixtures/datacite-xml-lang.xml +0 -51
  107. data/spec/fixtures/datacite.json +0 -89
  108. data/spec/fixtures/datacite.xml +0 -40
  109. data/spec/fixtures/datacite_dataset.xml +0 -58
  110. data/spec/fixtures/datacite_malformed_creator.xml +0 -52
  111. data/spec/fixtures/datacite_missing_creator.xml +0 -33
  112. data/spec/fixtures/datacite_schema_3.xml +0 -58
  113. data/spec/fixtures/datacite_software.json +0 -21
  114. data/spec/fixtures/datacite_software_missing_comma.json +0 -18
  115. data/spec/fixtures/datacite_software_overlapping_keys.json +0 -18
  116. data/spec/fixtures/datacite_software_version.json +0 -74
  117. data/spec/fixtures/edam_package.json +0 -12
  118. data/spec/fixtures/funding_reference.xml +0 -53
  119. data/spec/fixtures/gtex.xml +0 -71
  120. data/spec/fixtures/maremma/codemeta.json +0 -36
  121. data/spec/fixtures/nist.xml +0 -35
  122. data/spec/fixtures/ns0.xml +0 -2
  123. data/spec/fixtures/pure.bib +0 -14
  124. data/spec/fixtures/pure.ris +0 -15
  125. data/spec/fixtures/pure.xml +0 -188
  126. data/spec/fixtures/ris_bug.ris +0 -9
  127. data/spec/fixtures/schema_4.0.xml +0 -140
  128. data/spec/fixtures/schema_org.json +0 -49
  129. data/spec/fixtures/schema_org_geolocation.json +0 -82
  130. data/spec/fixtures/schema_org_geoshape.json +0 -550
  131. data/spec/fixtures/schema_org_gtex.json +0 -75
  132. data/spec/fixtures/schema_org_list.json +0 -12623
  133. data/spec/fixtures/schema_org_tdl_iodp_invalid_authors.json +0 -25
  134. data/spec/fixtures/schema_org_topmed.json +0 -53
  135. data/spec/fixtures/schema_org_type_as_array.json +0 -41
  136. data/spec/fixtures/vcr_cassettes/Bolognese_CLI/convert_from_id/crossref/default.yml +0 -106
  137. data/spec/fixtures/vcr_cassettes/Bolognese_CLI/convert_from_id/crossref/to_bibtex.yml +0 -106
  138. data/spec/fixtures/vcr_cassettes/Bolognese_CLI/convert_from_id/crossref/to_citation.yml +0 -106
  139. data/spec/fixtures/vcr_cassettes/Bolognese_CLI/convert_from_id/crossref/to_crossref.yml +0 -106
  140. data/spec/fixtures/vcr_cassettes/Bolognese_CLI/convert_from_id/crossref/to_datacite.yml +0 -106
  141. data/spec/fixtures/vcr_cassettes/Bolognese_CLI/convert_from_id/crossref/to_jats.yml +0 -106
  142. data/spec/fixtures/vcr_cassettes/Bolognese_CLI/convert_from_id/crossref/to_schema_org.yml +0 -106
  143. data/spec/fixtures/vcr_cassettes/Bolognese_CLI/convert_from_id/datacite/default.yml +0 -106
  144. data/spec/fixtures/vcr_cassettes/Bolognese_CLI/convert_from_id/datacite/to_bibtex.yml +0 -106
  145. data/spec/fixtures/vcr_cassettes/Bolognese_CLI/convert_from_id/datacite/to_citation.yml +0 -106
  146. data/spec/fixtures/vcr_cassettes/Bolognese_CLI/convert_from_id/datacite/to_datacite.yml +0 -106
  147. data/spec/fixtures/vcr_cassettes/Bolognese_CLI/convert_from_id/datacite/to_datacite_json.yml +0 -106
  148. data/spec/fixtures/vcr_cassettes/Bolognese_CLI/convert_from_id/datacite/to_jats.yml +0 -106
  149. data/spec/fixtures/vcr_cassettes/Bolognese_CLI/convert_from_id/datacite/to_schema_org.yml +0 -106
  150. data/spec/fixtures/vcr_cassettes/Bolognese_CLI/convert_from_id/schema_org/default.yml +0 -117
  151. data/spec/fixtures/vcr_cassettes/Bolognese_CLI/convert_from_id/schema_org/to_datacite.yml +0 -117
  152. data/spec/fixtures/vcr_cassettes/Bolognese_CLI/convert_from_id/schema_org/to_schema_org.yml +0 -115
  153. data/spec/fixtures/vcr_cassettes/Bolognese_CLI/find_from_format_by_id/crossref.yml +0 -54
  154. data/spec/fixtures/vcr_cassettes/Bolognese_CLI/find_from_format_by_id/datacite.yml +0 -54
  155. data/spec/fixtures/vcr_cassettes/Bolognese_CLI/find_from_format_by_id/jalc.yml +0 -54
  156. data/spec/fixtures/vcr_cassettes/Bolognese_CLI/find_from_format_by_id/kisti.yml +0 -54
  157. data/spec/fixtures/vcr_cassettes/Bolognese_CLI/find_from_format_by_id/medra.yml +0 -54
  158. data/spec/fixtures/vcr_cassettes/Bolognese_CLI/find_from_format_by_id/op.yml +0 -54
  159. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/authors_as_string/author.yml +0 -48
  160. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/authors_as_string/no_author.yml +0 -48
  161. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/authors_as_string/single_author.yml +0 -48
  162. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/authors_as_string/with_organization.yml +0 -48
  163. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/change_datacite_metadata/change_state.yml +0 -106
  164. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/change_datacite_metadata/change_title.yml +0 -106
  165. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/change_metadata_as_datacite_xml/change_description.yml +0 -55
  166. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/change_metadata_as_datacite_xml/change_identifiers.yml +0 -55
  167. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/change_metadata_as_datacite_xml/change_license.yml +0 -55
  168. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/change_metadata_as_datacite_xml/change_license_name.yml +0 -55
  169. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/change_metadata_as_datacite_xml/change_license_url.yml +0 -55
  170. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/change_metadata_as_datacite_xml/change_state.yml +0 -55
  171. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/change_metadata_as_datacite_xml/validates_against_schema.yml +0 -55
  172. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/change_metadata_as_datacite_xml/with_data_citation.yml +0 -55
  173. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/doi_api_url/doi.yml +0 -48
  174. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/doi_api_url/doi_with_protocol.yml +0 -48
  175. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/doi_api_url/dx_doi_org_url.yml +0 -48
  176. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/doi_api_url/force_test_resolver.yml +0 -48
  177. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/doi_api_url/https_url.yml +0 -48
  178. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/doi_api_url/test_resolver.yml +0 -48
  179. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/doi_api_url/test_resolver_http.yml +0 -48
  180. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/doi_from_url/doi.yml +0 -48
  181. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/doi_from_url/doi_with_special_characters.yml +0 -48
  182. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/doi_from_url/not_a_doi.yml +0 -48
  183. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/doi_from_url/sandbox_url.yml +0 -48
  184. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/doi_from_url/url.yml +0 -48
  185. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/doi_registration_agency/crossref.yml +0 -99
  186. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/doi_registration_agency/datacite.yml +0 -99
  187. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/doi_registration_agency/jalc.yml +0 -99
  188. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/doi_registration_agency/kisti.yml +0 -99
  189. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/doi_registration_agency/medra.yml +0 -99
  190. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/doi_registration_agency/not_a_valid_prefix.yml +0 -48
  191. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/doi_registration_agency/not_found.yml +0 -99
  192. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/doi_registration_agency/op.yml +0 -99
  193. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/doi_resolver/doi.yml +0 -48
  194. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/doi_resolver/doi_with_protocol.yml +0 -48
  195. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/doi_resolver/dx_doi_org_url.yml +0 -48
  196. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/doi_resolver/force_stage_resolver.yml +0 -48
  197. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/doi_resolver/https_url.yml +0 -48
  198. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/doi_resolver/stage_resolver.yml +0 -48
  199. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/doi_resolver/stage_resolver_http.yml +0 -48
  200. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/find_from_format_by_ID/crossref.yml +0 -157
  201. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/find_from_format_by_ID/crossref_doi_not_url.yml +0 -157
  202. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/find_from_format_by_ID/datacite.yml +0 -157
  203. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/find_from_format_by_ID/datacite_doi_http.yml +0 -157
  204. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/find_from_format_by_ID/github.yml +0 -106
  205. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/find_from_format_by_ID/orcid.yml +0 -106
  206. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/find_from_format_by_ID/schema_org.yml +0 -106
  207. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/find_from_format_by_ID/unknown_DOI_registration_agency.yml +0 -157
  208. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/find_from_format_from_file/bibtex.yml +0 -106
  209. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/find_from_format_from_file/citeproc.yml +0 -106
  210. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/find_from_format_from_file/codemeta.yml +0 -106
  211. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/find_from_format_from_file/crosscite.yml +0 -106
  212. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/find_from_format_from_file/crossref.yml +0 -106
  213. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/find_from_format_from_file/datacite.yml +0 -106
  214. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/find_from_format_from_file/datacite_json.yml +0 -106
  215. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/find_from_format_from_file/ris.yml +0 -106
  216. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/find_from_format_from_file/schema_org.yml +0 -106
  217. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/find_from_format_from_string/crosscite.yml +0 -106
  218. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/fos/hsh_to_fos_for_match.yml +0 -48
  219. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/fos/hsh_to_fos_for_with_schemeUri_in_hash.yml +0 -48
  220. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/fos/hsh_to_fos_match.yml +0 -48
  221. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/fos/hsh_to_fos_no_match.yml +0 -48
  222. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/fos/name_to_fos_for_match.yml +0 -48
  223. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/fos/name_to_fos_match.yml +0 -48
  224. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/fos/name_to_fos_no_match.yml +0 -48
  225. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/from_schema_org/with_id.yml +0 -48
  226. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/from_schema_org_creators/with_affiliation.yml +0 -48
  227. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/from_schema_org_creators/without_affiliation.yml +0 -48
  228. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_codemeta_metadata/maremma.yml +0 -75
  229. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_codemeta_metadata/metadata_reports.yml +0 -75
  230. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/DOI_with_ORCID_ID.yml +0 -103
  231. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/DOI_with_SICI_DOI.yml +0 -102
  232. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/DOI_with_data_citation.yml +0 -106
  233. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/JaLC.yml +0 -137
  234. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/KISTI.yml +0 -158
  235. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/OP.yml +0 -100
  236. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/affiliation_is_space.yml +0 -101
  237. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/another_book.yml +0 -138
  238. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/another_book_chapter.yml +0 -100
  239. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/article_id_as_page_number.yml +0 -101
  240. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/author_literal.yml +0 -108
  241. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/book.yml +0 -99
  242. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/book_chapter.yml +0 -170
  243. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/book_chapter_with_RDF_for_container.yml +0 -99
  244. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/book_oup.yml +0 -98
  245. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/component.yml +0 -120
  246. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/dataset.yml +0 -130
  247. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/dataset_usda.yml +0 -143
  248. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/date_in_future.yml +0 -101
  249. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/dissertation.yml +0 -129
  250. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/empty_given_name.yml +0 -101
  251. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/invalid_date.yml +0 -101
  252. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/journal_article.yml +0 -100
  253. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/journal_article_original_language_title.yml +0 -99
  254. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/journal_article_with.yml +0 -104
  255. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/journal_article_with_RDF_for_container.yml +0 -99
  256. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/journal_article_with_funding.yml +0 -100
  257. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/journal_issue.yml +0 -127
  258. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/mEDRA.yml +0 -98
  259. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/markup.yml +0 -105
  260. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/missing_creator.yml +0 -100
  261. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/multiple_issn.yml +0 -99
  262. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/multiple_titles.yml +0 -98
  263. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/multiple_titles_with_missing.yml +0 -450
  264. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/not_found_error.yml +0 -97
  265. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/peer_review.yml +0 -103
  266. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/posted_content.yml +0 -99
  267. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/posted_content_copernicus.yml +0 -102
  268. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/report_osti.yml +0 -144
  269. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/vor_with_url.yml +0 -102
  270. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/yet_another_book.yml +0 -99
  271. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/yet_another_book_chapter.yml +0 -99
  272. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_datacite_json_metadata/metadata_from_api.yml +0 -106
  273. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_datacite_metadata/BlogPosting.yml +0 -106
  274. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_datacite_metadata/DOI_in_staging_system.yml +0 -106
  275. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_datacite_metadata/DOI_in_staging_system_schema_3.yml +0 -106
  276. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_datacite_metadata/DOI_in_with_related_id_system.yml +0 -106
  277. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_datacite_metadata/DOI_not_found.yml +0 -102
  278. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_datacite_metadata/Dataset.yml +0 -106
  279. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_datacite_metadata/Funding.yml +0 -106
  280. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_datacite_metadata/Funding_empty_awardTitle.yml +0 -106
  281. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_datacite_metadata/Funding_schema_version_4.yml +0 -106
  282. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_datacite_metadata/Referee_report_in_staging_system.yml +0 -106
  283. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_datacite_metadata/Schema_org_type.yml +0 -106
  284. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_datacite_metadata/author_only_full_name.yml +0 -106
  285. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_datacite_metadata/author_with_scheme.yml +0 -106
  286. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_datacite_metadata/author_with_wrong_orcid_scheme.yml +0 -106
  287. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_datacite_metadata/cc-by_3_0_us.yml +0 -106
  288. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_datacite_metadata/content_url.yml +0 -106
  289. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_datacite_metadata/date.yml +0 -106
  290. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_datacite_metadata/dissertation.yml +0 -106
  291. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_datacite_metadata/doi_with_sign.yml +0 -106
  292. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_datacite_metadata/empty_subject.yml +0 -106
  293. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_datacite_metadata/even_more_subject_scheme_FOR.yml +0 -106
  294. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_datacite_metadata/funding_references.yml +0 -106
  295. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_datacite_metadata/funding_schema_version_3.yml +0 -106
  296. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_datacite_metadata/is_identical_to.yml +0 -106
  297. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_datacite_metadata/keywords_with_attributes.yml +0 -106
  298. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_datacite_metadata/leading_and_trailing_whitespace.yml +0 -106
  299. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_datacite_metadata/more_subject_scheme_FOR.yml +0 -106
  300. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_datacite_metadata/multiple_author_names_in_one_creatorsName.yml +0 -106
  301. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_datacite_metadata/multiple_licenses.yml +0 -106
  302. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_datacite_metadata/series-information.yml +0 -106
  303. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_datacite_metadata/subject_scheme.yml +0 -106
  304. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_datacite_metadata/subject_scheme_FOR.yml +0 -106
  305. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_date/publication_date.yml +0 -48
  306. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_date_from_date_parts/date.yml +0 -48
  307. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_date_from_date_parts/year-month.yml +0 -48
  308. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_date_from_date_parts/year.yml +0 -48
  309. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_date_from_parts/date.yml +0 -48
  310. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_date_from_parts/year-month.yml +0 -48
  311. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_date_from_parts/year.yml +0 -48
  312. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_date_parts/date.yml +0 -48
  313. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_date_parts/year-month.yml +0 -48
  314. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_date_parts/year.yml +0 -48
  315. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_datetime_from_time/future.yml +0 -48
  316. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_datetime_from_time/invalid.yml +0 -48
  317. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_datetime_from_time/nil.yml +0 -48
  318. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_datetime_from_time/past.yml +0 -48
  319. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_datetime_from_time/present.yml +0 -48
  320. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_one_author/has_familyName.yml +0 -55
  321. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_one_author/has_name_in_Thai.yml +0 -55
  322. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_one_author/has_name_in_display-order.yml +0 -55
  323. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_one_author/has_name_in_display-order_with_ORCID.yml +0 -55
  324. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_one_author/has_name_in_sort-order.yml +0 -55
  325. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_one_author/hyper-authorship.yml +0 -55
  326. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_one_author/is_organization.yml +0 -48
  327. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_one_author/multiple_author_names_in_one_field.yml +0 -55
  328. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_one_author/multiple_name_identifier.yml +0 -55
  329. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_one_author/name_with_affiliation.yml +0 -55
  330. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_one_author/name_with_affiliation_and_country.yml +0 -114
  331. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_one_author/name_with_role.yml +0 -55
  332. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_one_author/only_familyName_and_givenName.yml +0 -57
  333. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_schema_org_metadata/BlogPosting.yml +0 -117
  334. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_schema_org_metadata/BlogPosting_with_new_DOI.yml +0 -117
  335. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_schema_org_metadata/harvard_dataverse.yml +0 -40
  336. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_schema_org_metadata/pangaea.yml +0 -57
  337. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_schema_org_metadata/zenodo.yml +0 -62
  338. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_series_information/only_title.yml +0 -48
  339. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_series_information/title_and_pages.yml +0 -48
  340. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_series_information/title_volume_and_pages.yml +0 -48
  341. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_series_information/title_volume_issue_and_pages.yml +0 -48
  342. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/github/github_as_codemeta_url.yml +0 -48
  343. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/github/github_from_url.yml +0 -48
  344. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/github/github_from_url_file.yml +0 -48
  345. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/handle_input/DOI_RA_not_Crossref_or_DataCite.yml +0 -54
  346. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/handle_input/unknown_DOI_prefix.yml +0 -54
  347. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_contributors/none.yml +0 -55
  348. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_creators/insert.yml +0 -55
  349. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_dates/insert.yml +0 -55
  350. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_descriptions/insert.yml +0 -55
  351. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_identifier/doi.yml +0 -55
  352. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_language/insert.yml +0 -55
  353. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_person/creator_only_name.yml +0 -55
  354. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_publication_year/insert.yml +0 -55
  355. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_publisher/insert.yml +0 -55
  356. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_related_identifiers/insert.yml +0 -55
  357. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_related_identifiers/related_identifier.yml +0 -55
  358. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_related_items/insert.yml +0 -73
  359. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_resource_type/insert.yml +0 -55
  360. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_rights_list/insert.yml +0 -55
  361. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_sizes/insert.yml +0 -55
  362. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_subjects/insert.yml +0 -73
  363. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_titles/insert.yml +0 -55
  364. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_version/insert.yml +0 -55
  365. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/is_personal_name_/has_comma.yml +0 -48
  366. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/is_personal_name_/has_family_name.yml +0 -48
  367. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/is_personal_name_/has_id.yml +0 -48
  368. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/is_personal_name_/has_known_given_name.yml +0 -48
  369. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/is_personal_name_/has_no_info.yml +0 -48
  370. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/is_personal_name_/has_orcid_id.yml +0 -48
  371. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/is_personal_name_/has_type_organization.yml +0 -48
  372. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/jsonlint/missing_comma.yml +0 -106
  373. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/jsonlint/nil.yml +0 -106
  374. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/jsonlint/overlapping_keys.yml +0 -106
  375. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/jsonlint/valid.yml +0 -106
  376. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/normalize_cc_url/not_found.yml +0 -48
  377. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/normalize_cc_url/with_trailing_slash.yml +0 -48
  378. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/normalize_cc_url/with_trailing_slash_and_to_https.yml +0 -48
  379. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/normalize_doi/SICI_doi.yml +0 -48
  380. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/normalize_doi/doi.yml +0 -48
  381. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/normalize_doi/doi_force_datacite_sandbox.yml +0 -48
  382. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/normalize_doi/doi_from_datacite_sandbox.yml +0 -48
  383. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/normalize_doi/doi_from_url_without_doi_proxy.yml +0 -48
  384. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/normalize_doi/doi_prefix_too_long.yml +0 -48
  385. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/normalize_doi/doi_prefix_with_string.yml +0 -48
  386. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/normalize_doi/doi_with_protocol.yml +0 -48
  387. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/normalize_doi/dx_doi_org_url.yml +0 -48
  388. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/normalize_doi/https_url.yml +0 -48
  389. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/normalize_doi/not_valid_doi_prefix.yml +0 -48
  390. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/normalize_doi/url_with_one_slash.yml +0 -48
  391. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/normalize_id/doi.yml +0 -48
  392. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/normalize_id/doi_as_url.yml +0 -48
  393. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/normalize_id/ftp.yml +0 -48
  394. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/normalize_id/invalid_url.yml +0 -48
  395. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/normalize_id/sandbox_via_options.yml +0 -48
  396. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/normalize_id/sandbox_via_url.yml +0 -48
  397. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/normalize_id/string.yml +0 -48
  398. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/normalize_id/url.yml +0 -48
  399. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/normalize_id/url_with_utf-8.yml +0 -48
  400. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/normalize_ids/doi.yml +0 -48
  401. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/normalize_ids/url.yml +0 -48
  402. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/normalize_issn/from_array.yml +0 -48
  403. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/normalize_issn/from_empty_array.yml +0 -48
  404. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/normalize_issn/from_hash.yml +0 -48
  405. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/normalize_issn/from_string.yml +0 -48
  406. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/normalize_url/uri.yml +0 -48
  407. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/normalize_url/with_trailing_slash.yml +0 -48
  408. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/normalize_url/with_trailing_slash_and_to_https.yml +0 -48
  409. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/parse_attributes/array.yml +0 -48
  410. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/parse_attributes/array_of_strings.yml +0 -48
  411. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/parse_attributes/first.yml +0 -48
  412. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/parse_attributes/hash.yml +0 -48
  413. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/parse_attributes/nil.yml +0 -48
  414. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/parse_attributes/string.yml +0 -48
  415. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/sanitize/should_only_keep_specific_tags.yml +0 -48
  416. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/sanitize/should_remove_a_tags.yml +0 -48
  417. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/spdx/hsh_to_spdx_id.yml +0 -48
  418. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/spdx/hsh_to_spdx_not_found.yml +0 -48
  419. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/spdx/hsh_to_spdx_url.yml +0 -48
  420. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/spdx/name_to_spdx_exists.yml +0 -48
  421. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/spdx/name_to_spdx_id.yml +0 -48
  422. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/to_schema_org/with_id.yml +0 -48
  423. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/to_schema_org_identifiers/with_identifiers.yml +0 -48
  424. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/validate_doi/doi.yml +0 -48
  425. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/validate_funder_doi/1_7_10.yml +0 -48
  426. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/validate_funder_doi/1_7_11.yml +0 -48
  427. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/validate_funder_doi/1_7_12.yml +0 -48
  428. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/validate_funder_doi/1_7_13.yml +0 -48
  429. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/validate_funder_doi/1_7_14.yml +0 -48
  430. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/validate_funder_doi/1_7_4.yml +0 -48
  431. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/validate_funder_doi/1_7_5.yml +0 -48
  432. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/validate_funder_doi/1_7_6.yml +0 -48
  433. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/validate_funder_doi/1_7_7.yml +0 -48
  434. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/validate_funder_doi/1_7_8.yml +0 -48
  435. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/validate_funder_doi/1_7_9.yml +0 -48
  436. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/validate_funder_doi/funder_doi.yml +0 -48
  437. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/validate_funder_doi/funder_doi_without_prefix.yml +0 -48
  438. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/validate_funder_doi/non-funder_doi.yml +0 -48
  439. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/validate_orcid/validate_orcid.yml +0 -48
  440. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/validate_orcid/validate_orcid_https.yml +0 -48
  441. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/validate_orcid/validate_orcid_id.yml +0 -48
  442. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/validate_orcid/validate_orcid_sandbox.yml +0 -65
  443. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/validate_orcid/validate_orcid_sandbox_https.yml +0 -65
  444. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/validate_orcid/validate_orcid_with_spaces.yml +0 -48
  445. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/validate_orcid/validate_orcid_wrong_id.yml +0 -48
  446. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/validate_orcid/validate_orcid_www.yml +0 -48
  447. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/validate_orcid_scheme/validate_orcid_scheme.yml +0 -48
  448. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/validate_orcid_scheme/validate_orcid_scheme_https.yml +0 -48
  449. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/validate_orcid_scheme/validate_orcid_scheme_trailing_slash.yml +0 -48
  450. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/validate_orcid_scheme/validate_orcid_scheme_www.yml +0 -48
  451. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/validate_prefix/doi.yml +0 -48
  452. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/validate_prefix/doi_as_url.yml +0 -48
  453. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/validate_prefix/doi_with_protocol.yml +0 -48
  454. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/validate_prefix/only_prefix.yml +0 -48
  455. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/validate_url/DOI.yml +0 -48
  456. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/validate_url/ISSN.yml +0 -48
  457. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/validate_url/URL.yml +0 -48
  458. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/validate_url/string.yml +0 -48
  459. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_bibtex/BlogPosting.yml +0 -55
  460. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_bibtex/Dataset.yml +0 -55
  461. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_bibtex/authors_with_affiliations.yml +0 -114
  462. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_bibtex/climate_data.yml +0 -55
  463. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_bibtex/from_schema_org.yml +0 -115
  464. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_bibtex/keywords_subject_scheme.yml +0 -55
  465. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_bibtex/maremma.yml +0 -75
  466. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_bibtex/text.yml +0 -55
  467. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_bibtex/with_data_citation.yml +0 -55
  468. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_bibtex/with_pages.yml +0 -52
  469. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_citation/Dataset.yml +0 -55
  470. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_citation/Journal_article.yml +0 -55
  471. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_citation/Journal_article_vancouver_style.yml +0 -55
  472. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_citation/Missing_author.yml +0 -49
  473. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_citation/interactive_resource_without_dates.yml +0 -55
  474. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_citation/software_w/version.yml +0 -55
  475. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_citeproc/Another_dataset.yml +0 -55
  476. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_citeproc/BlogPosting.yml +0 -55
  477. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_citeproc/BlogPosting_schema_org.yml +0 -115
  478. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_citeproc/Dataset.yml +0 -55
  479. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_citeproc/container_title.yml +0 -55
  480. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_citeproc/interactive_resource_without_dates.yml +0 -55
  481. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_citeproc/journal_article.yml +0 -55
  482. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_citeproc/keywords_subject_scheme.yml +0 -55
  483. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_citeproc/maremma.yml +0 -75
  484. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_citeproc/missing_creator.yml +0 -49
  485. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_citeproc/multiple_abstracts.yml +0 -55
  486. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_citeproc/organization_author.yml +0 -52
  487. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_citeproc/software.yml +0 -55
  488. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_citeproc/software_w/version.yml +0 -55
  489. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_citeproc/with_only_first_page.yml +0 -50
  490. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_citeproc/with_pages.yml +0 -52
  491. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_codemeta/SoftwareSourceCode_DataCite.yml +0 -55
  492. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_codemeta/SoftwareSourceCode_DataCite_check_codemeta_v2.yml +0 -55
  493. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_crosscite/datacite_database_attributes.yml +0 -55
  494. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_crosscite/maremma.yml +0 -75
  495. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_crosscite/with_ORCID_ID.yml +0 -52
  496. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_crosscite/with_data_citation.yml +0 -55
  497. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_crosscite/with_data_citation_schema_org.yml +0 -117
  498. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_crossref/from_DataCite.yml +0 -55
  499. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_csv/climate_data.yml +0 -55
  500. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_csv/maremma.yml +0 -75
  501. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_csv/text.yml +0 -55
  502. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_csv/with_data_citation.yml +0 -55
  503. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_csv/with_pages.yml +0 -52
  504. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_datacite_json/maremma.yml +0 -75
  505. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_datacite_json/with_ORCID_ID.yml +0 -52
  506. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_datacite_json/with_data_citation.yml +0 -55
  507. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_datacite_json/with_data_citation_schema_org.yml +0 -117
  508. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_datacite_xml/DOI_not_found.yml +0 -51
  509. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_datacite_xml/Dataset_in_schema_4_0.yml +0 -55
  510. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_datacite_xml/Text_pass-thru.yml +0 -55
  511. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_datacite_xml/Text_pass-thru_with_doi_in_options.yml +0 -55
  512. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_datacite_xml/maremma.yml +0 -75
  513. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_datacite_xml/with_ORCID_ID.yml +0 -52
  514. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_datacite_xml/with_data_citation.yml +0 -55
  515. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_datacite_xml/with_data_citation_schema_org.yml +0 -115
  516. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_datacite_xml/with_editor.yml +0 -49
  517. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_datacite_xml/with_version.yml +0 -55
  518. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_jats_xml/Dataset_in_schema_4_0.yml +0 -55
  519. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_jats_xml/Text_pass-thru.yml +0 -55
  520. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_jats_xml/book_chapter.yml +0 -88
  521. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_jats_xml/interactive_resource_without_dates.yml +0 -55
  522. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_jats_xml/maremma.yml +0 -75
  523. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_jats_xml/with_ORCID_ID.yml +0 -52
  524. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_jats_xml/with_data_citation.yml +0 -55
  525. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_jats_xml/with_data_citation_schema_org.yml +0 -117
  526. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_jats_xml/with_editor.yml +0 -49
  527. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_rdf_xml/BlogPosting.yml +0 -55
  528. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_rdf_xml/BlogPosting_schema_org.yml +0 -117
  529. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_rdf_xml/journal_article.yml +0 -55
  530. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_rdf_xml/maremma.yml +0 -75
  531. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_rdf_xml/with_pages.yml +0 -52
  532. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_ris/BlogPosting.yml +0 -55
  533. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_ris/BlogPosting_schema_org.yml +0 -117
  534. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_ris/Dataset.yml +0 -55
  535. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_ris/alternate_name.yml +0 -55
  536. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_ris/journal_article.yml +0 -55
  537. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_ris/keywords_with_subject_scheme.yml +0 -55
  538. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_ris/maremma.yml +0 -75
  539. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_ris/with_pages.yml +0 -52
  540. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_schema_org/Funding.yml +0 -106
  541. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_schema_org/Funding_OpenAIRE.yml +0 -106
  542. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_schema_org/Schema_org_JSON.yml +0 -55
  543. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_schema_org/Schema_org_JSON_Cyark.yml +0 -106
  544. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_schema_org/Schema_org_JSON_IsSupplementTo.yml +0 -106
  545. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_schema_org/Schema_org_JSON_isReferencedBy.yml +0 -55
  546. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_schema_org/alternate_identifiers.yml +0 -55
  547. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_schema_org/data_catalog.yml +0 -55
  548. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_schema_org/geo_location_box.yml +0 -55
  549. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_schema_org/interactive_resource_without_dates.yml +0 -55
  550. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_schema_org/journal_article.yml +0 -55
  551. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_schema_org/maremma_schema_org_JSON.yml +0 -75
  552. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_schema_org/series_information.yml +0 -55
  553. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_schema_org/subject_scheme.yml +0 -55
  554. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_schema_org/subject_scheme_multiple_keywords.yml +0 -55
  555. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_turtle/BlogPosting.yml +0 -55
  556. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_turtle/BlogPosting_schema_org.yml +0 -117
  557. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_turtle/Dataset.yml +0 -55
  558. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_turtle/journal_article.yml +0 -55
  559. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_turtle/with_pages.yml +0 -52
  560. data/spec/fixtures/vivli.xml +0 -1
  561. data/spec/metadata_spec.rb +0 -165
  562. data/spec/readers/bibtex_reader_spec.rb +0 -65
  563. data/spec/readers/citeproc_reader_spec.rb +0 -64
  564. data/spec/readers/codemeta_reader_spec.rb +0 -138
  565. data/spec/readers/crosscite_reader_spec.rb +0 -43
  566. data/spec/readers/crossref_reader_spec.rb +0 -1102
  567. data/spec/readers/datacite_json_reader_spec.rb +0 -82
  568. data/spec/readers/datacite_reader_spec.rb +0 -1762
  569. data/spec/readers/npm_reader_spec.rb +0 -68
  570. data/spec/readers/ris_reader_spec.rb +0 -78
  571. data/spec/readers/schema_org_reader_spec.rb +0 -344
  572. data/spec/spec_helper.rb +0 -95
  573. data/spec/utils_spec.rb +0 -666
  574. data/spec/writers/bibtex_writer_spec.rb +0 -195
  575. data/spec/writers/citation_writer_spec.rb +0 -52
  576. data/spec/writers/citeproc_writer_spec.rb +0 -290
  577. data/spec/writers/codemeta_writer_spec.rb +0 -45
  578. data/spec/writers/crosscite_writer_spec.rb +0 -129
  579. data/spec/writers/crossref_writer_spec.rb +0 -21
  580. data/spec/writers/csv_writer_spec.rb +0 -94
  581. data/spec/writers/datacite_json_writer_spec.rb +0 -128
  582. data/spec/writers/datacite_writer_spec.rb +0 -507
  583. data/spec/writers/jats_writer_spec.rb +0 -201
  584. data/spec/writers/rdf_xml_writer_spec.rb +0 -93
  585. data/spec/writers/ris_writer_spec.rb +0 -207
  586. data/spec/writers/schema_org_writer_spec.rb +0 -369
  587. data/spec/writers/turtle_writer_spec.rb +0 -102
@@ -4,9 +4,6 @@ require 'namae'
4
4
 
5
5
  module Bolognese
6
6
  module AuthorUtils
7
- # include BenchmarkMethods
8
- #
9
- # benchmark :get_authors
10
7
 
11
8
  IDENTIFIER_SCHEME_URIS = {
12
9
  "ORCID" => "https://orcid.org/"
@@ -24,83 +21,45 @@ module Bolognese
24
21
  given_name = parse_attributes(author.fetch("givenName", nil))
25
22
  family_name = parse_attributes(author.fetch("familyName", nil))
26
23
  name = cleanup_author(name)
27
- name = [family_name, given_name].join(", ") if family_name.present? && given_name.present?
28
24
  contributor_type = parse_attributes(author.fetch("contributorType", nil))
29
25
 
30
26
  name_type = parse_attributes(author.fetch("creatorName", nil), content: "nameType", first: true) || parse_attributes(author.fetch("contributorName", nil), content: "nameType", first: true)
31
27
 
32
28
  name_identifiers = Array.wrap(author.fetch("nameIdentifier", nil)).map do |ni|
33
- ni["__content__"] = ni["__content__"].strip
29
+ name_identifier = ni["__content__"].strip if ni["__content__"].present?
34
30
  if ni["nameIdentifierScheme"] == "ORCID"
35
31
  {
36
- "nameIdentifier" => normalize_orcid(ni["__content__"]),
32
+ "nameIdentifier" => normalize_orcid(name_identifier),
37
33
  "schemeUri" => "https://orcid.org",
38
34
  "nameIdentifierScheme" => "ORCID" }.compact
39
35
  elsif ni["nameIdentifierScheme"] == "ROR"
40
36
  {
41
- "nameIdentifier" => normalize_ror(ni["__content__"]),
37
+ "nameIdentifier" => normalize_ror(name_identifier),
42
38
  "schemeUri" => "https://ror.org",
43
39
  "nameIdentifierScheme" => "ROR" }.compact
44
40
  else
45
41
  {
46
- "nameIdentifier" => ni["__content__"],
42
+ "nameIdentifier" => name_identifier,
47
43
  "schemeUri" => ni.fetch("schemeURI", nil),
48
44
  "nameIdentifierScheme" => ni["nameIdentifierScheme"] }.compact
49
45
  end
50
46
  end.presence
51
47
 
52
- author = { "nameType" => name_type,
48
+ { "nameType" => name_type,
53
49
  "name" => name,
54
50
  "givenName" => given_name,
55
51
  "familyName" => family_name,
56
52
  "nameIdentifiers" => name_identifiers,
57
53
  "affiliation" => get_affiliations(author.fetch("affiliation", nil)),
58
54
  "contributorType" => contributor_type }.compact
59
-
60
- return author if family_name.present?
61
-
62
- if is_personal_name?(author)
63
- Namae.options[:include_particle_in_family] = true
64
- names = Namae.parse(name)
65
- parsed_name = names.first
66
-
67
- if parsed_name.present?
68
- given_name = parsed_name.given
69
- family_name = parsed_name.family
70
- name = [family_name, given_name].join(", ")
71
- else
72
- given_name = nil
73
- family_name = nil
74
- end
75
-
76
- { "nameType" => "Personal",
77
- "name" => name,
78
- "givenName" => given_name,
79
- "familyName" => family_name,
80
- "nameIdentifiers" => Array.wrap(name_identifiers),
81
- "affiliation" => Array.wrap(author.fetch("affiliation", nil)),
82
- "contributorType" => contributor_type }.compact
83
- else
84
- { "nameType" => name_type,
85
- "name" => name,
86
- "nameIdentifiers" => Array.wrap(name_identifiers),
87
- "affiliation" => Array.wrap(author.fetch("affiliation", nil)),
88
- "contributorType" => contributor_type }.compact
89
- end
90
55
  end
91
56
 
92
57
  def cleanup_author(author)
93
58
  return nil unless author.present?
94
59
 
95
- # detect pattern "Smith J.", but not "Smith, John K."
96
- author = author.gsub(/[[:space:]]([A-Z]\.)?(-?[A-Z]\.)$/, ', \1\2') unless author.include?(",")
97
-
98
- # remove spaces around hyphens
99
- author = author.gsub(" - ", "-")
100
-
101
60
  # titleize strings
102
61
  # remove non-standard space characters
103
- author.my_titleize.gsub(/[[:space:]]/, ' ')
62
+ author.gsub(/[[:space:]]/, ' ')
104
63
  end
105
64
 
106
65
  def is_personal_name?(author)
@@ -158,7 +117,6 @@ module Bolognese
158
117
  # when `normalize_id` method could not normalize, it returns nil, hence we have following condition
159
118
  if affiliation_identifier.nil?
160
119
  if a["affiliationIdentifierScheme"] == "ROR"
161
- scheme_uri = "https://ror.org"
162
120
  affiliation_identifier = normalize_ror(a["affiliationIdentifier"])
163
121
  else
164
122
  affiliation_identifier = a["affiliationIdentifier"]
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Minimal patch for csl-ruby and citeproc-ruby compatibility
4
+ # Root cause: 'contributor' is not recognized as a names variable in citeproc gem
5
+ # https://github.com/inukshuk/citeproc/blob/121fa4a950b9bd71960e42d20db96bcea1165201/lib/citeproc/variable.rb#L20-L24
6
+
7
+ module CiteProc
8
+ class Variable
9
+ # Unfreeze, modify, and refreeze the fields to add 'contributor' and 'accepted-date'
10
+ if @fields
11
+ # Unfreeze the fields hash temporarily
12
+ fields_dup = @fields.dup
13
+
14
+ # Add contributor to names (make a new unfrozen array)
15
+ fields_dup[:names] = (@fields[:names] + [:contributor]).uniq
16
+
17
+ # Add accepted-date to dates (make a new unfrozen array)
18
+ fields_dup[:date] = (@fields[:date] + [:'accepted-date']).uniq
19
+
20
+ # Rebuild the types mapping - only use actual type keys, not aliases like :all, :any, etc.
21
+ types_hash = Hash[*[:date, :names, :number, :text].map { |k| fields_dup[k].map { |n| [n, k] } }.flatten]
22
+
23
+ # Update the class instance variables
24
+ @fields = fields_dup
25
+ @types = Hash.new { |h,k| h.fetch(k.to_sym, nil) }.merge(types_hash).freeze
26
+
27
+ # Rebuild @factories from the new @types
28
+ # This maps each field name to its Variable subclass (Names, Date, Text, Number)
29
+ @factories = Hash.new { |h,k| h.fetch(k.to_s.intern, CiteProc::Variable) }.merge(
30
+ Hash[*@types.map { |field_name, type|
31
+ [field_name, CiteProc.const_get(type.to_s.capitalize)]
32
+ }.flatten]
33
+ ).freeze
34
+
35
+ # Recreate the aliases
36
+ @fields[:name] = @fields[:names]
37
+ @fields[:dates] = @fields[:date]
38
+ @fields[:numbers] = @fields[:number]
39
+
40
+ # Recreate :all and :any
41
+ @fields[:all] = @fields[:any] =
42
+ [:date, :names, :text, :number].reduce([]) { |s,a| s.concat(@fields[a]) }.sort
43
+
44
+ # Refreeze fields
45
+ @fields.freeze
46
+ end
47
+ end
48
+ end
@@ -69,7 +69,7 @@ module Bolognese
69
69
 
70
70
  xml.contributors do
71
71
  Array.wrap(contributors).each do |con|
72
- xml.contributor("contributorType" => con["contributorType"] || "Other") do
72
+ xml.contributor("contributorType" => con["contributorType"]) do
73
73
  insert_person(xml, con, "contributor")
74
74
  end
75
75
  end
@@ -128,7 +128,7 @@ module Bolognese
128
128
  def insert_resource_type(xml)
129
129
  return xml unless types.is_a?(Hash) && (types["schemaOrg"].present? || types["resourceTypeGeneral"])
130
130
 
131
- xml.resourceType(types["resourceType"] || types["schemaOrg"],
131
+ xml.resourceType(types["resourceType"],
132
132
  'resourceTypeGeneral' => types["resourceTypeGeneral"] || Metadata::SO_TO_DC_TRANSLATIONS[types["schemaOrg"]] || "Other")
133
133
  end
134
134
 
@@ -209,7 +209,9 @@ module Bolognese
209
209
  attributes = {
210
210
  'relatedIdentifierType' => related_identifier["relatedIdentifierType"],
211
211
  'relationType' => related_identifier["relationType"],
212
- 'resourceTypeGeneral' => related_identifier["resourceTypeGeneral"] }.compact
212
+ 'relationTypeInformation' => related_identifier["relationTypeInformation"],
213
+ 'resourceTypeGeneral' => related_identifier["resourceTypeGeneral",
214
+ ] }.compact
213
215
 
214
216
  attributes.merge({ 'relatedMetadataScheme' => related_identifier["relatedMetadataSchema"],
215
217
  'schemeURI' => related_identifier["schemeUri"],
@@ -228,6 +230,7 @@ module Bolognese
228
230
  attributes = {
229
231
  'relatedItemType' => related_item["relatedItemType"],
230
232
  'relationType' => related_item["relationType"],
233
+ 'relationTypeInformation' => related_item["relationTypeInformation"],
231
234
  }.compact
232
235
 
233
236
  xml.relatedItem(related_item["relatedItem"], attributes) do
@@ -337,7 +340,7 @@ module Bolognese
337
340
  return xml unless descriptions.present? || container && container["title"].present?
338
341
 
339
342
  xml.descriptions do
340
- if container && container["title"].present?
343
+ if (respond_to?(:from) && !from.to_s.include?("datacite")) && container && container["title"].present?
341
344
  issue = container["issue"].present? ? "(#{container["issue"]})" : nil
342
345
  volume_issue = container["volume"].present? ? [container["volume"], issue].join("") : nil
343
346
  pages = [container["firstPage"], container["lastPage"]].compact.join("-") if container["firstPage"].present?
@@ -387,9 +390,16 @@ module Bolognese
387
390
  if geo_location["geoLocationPolygon"]
388
391
  xml.geoLocationPolygon do
389
392
  Array.wrap(geo_location["geoLocationPolygon"]).each do |polygon_point|
390
- xml.polygonPoint do
391
- xml.pointLatitude(polygon_point.dig("polygonPoint", "pointLatitude"))
392
- xml.pointLongitude(polygon_point.dig("polygonPoint", "pointLongitude"))
393
+ if polygon_point.has_key?("polygonPoint")
394
+ xml.polygonPoint do
395
+ xml.pointLatitude(polygon_point.dig("polygonPoint", "pointLatitude"))
396
+ xml.pointLongitude(polygon_point.dig("polygonPoint", "pointLongitude"))
397
+ end
398
+ else
399
+ xml.inPolygonPoint do
400
+ xml.pointLatitude(polygon_point.dig("inPolygonPoint", "pointLatitude"))
401
+ xml.pointLongitude(polygon_point.dig("inPolygonPoint", "pointLongitude"))
402
+ end
393
403
  end
394
404
  end
395
405
  end
@@ -13,11 +13,12 @@ module Bolognese
13
13
  end
14
14
 
15
15
  def validate_funder_doi(doi)
16
- doi = Array(/\A(?:(http|https):\/(\/)?(dx\.)?(doi.org|handle.stage.datacite.org|handle.test.datacite.org)\/)?(doi:)?(10\.13039\/)?([1-9]\d+)\z/.match(doi)).last
16
+ match = Array(/\A(?:(http|https):\/(\/)?(dx\.)?(doi.org|handle.stage.datacite.org|handle.test.datacite.org)\/)?(doi:)?(10\.13039\/)?([1-9]\d+)\z/.match(doi)).last
17
+ return doi unless match
17
18
 
18
19
  # remove non-printing whitespace and downcase
19
- if doi.present?
20
- doi.delete("\u200B").downcase
20
+ if match.present?
21
+ doi = match.delete("\u200B").downcase
21
22
  "https://doi.org/10.13039/#{doi}"
22
23
  end
23
24
  end
@@ -1,10 +1,11 @@
1
- # frozen_string_literal: true
1
+ # frozen_string_literal: false
2
2
 
3
3
  require_relative 'metadata_utils'
4
4
 
5
5
  module Bolognese
6
6
  class Metadata
7
7
  include Bolognese::MetadataUtils
8
+ include Bolognese::Utils
8
9
 
9
10
  attr_accessor :string, :from, :sandbox, :meta, :regenerate, :issue, :show_errors
10
11
  attr_reader :doc, :page_start, :page_end
@@ -75,8 +76,8 @@ module Bolognese
75
76
  end
76
77
 
77
78
  # make sure input is encoded as utf8
78
- string = string.force_encoding("UTF-8") if string.present?
79
- @string = string
79
+ string1 = string.dup.force_encoding("UTF-8") if string.present?
80
+ @string = string1
80
81
 
81
82
  # input options for citation formatting
82
83
  @style = options[:style]
@@ -119,7 +120,7 @@ module Bolognese
119
120
 
120
121
  @regenerate = options[:regenerate] || read_options.present?
121
122
  # generate name for method to call dynamically
122
- opts = { string: string, sandbox: options[:sandbox], doi: options[:doi], id: id, ra: ra }.merge(read_options)
123
+ opts = { string: string1, sandbox: options[:sandbox], doi: options[:doi], id: id, ra: ra }.merge(read_options)
123
124
  @meta = @from.present? ? send("read_" + @from, **opts) : {}
124
125
  end
125
126
 
@@ -205,7 +206,9 @@ module Bolognese
205
206
  end
206
207
 
207
208
  def container
208
- @container ||= meta.fetch("container", nil)
209
+ @container ||= begin
210
+ generate_container(types, related_items, related_identifiers, descriptions) || meta.fetch("container", nil)
211
+ end
209
212
  end
210
213
 
211
214
  def geo_locations
@@ -33,7 +33,6 @@ require_relative 'writers/turtle_writer'
33
33
 
34
34
  module Bolognese
35
35
  module MetadataUtils
36
- # include BenchmarkMethods
37
36
  include Bolognese::DoiUtils
38
37
  include Bolognese::AuthorUtils
39
38
  include Bolognese::DataciteUtils
@@ -96,7 +95,7 @@ module Bolognese
96
95
  if container.present?
97
96
  container["title"]
98
97
  elsif types["citeproc"] == "article-journal"
99
- publisher
98
+ publisher["name"] if publisher.present?
100
99
  else
101
100
  nil
102
101
  end
@@ -140,27 +139,43 @@ module Bolognese
140
139
  author = to_citeproc(creators)
141
140
  end
142
141
 
143
- if types["resourceTypeGeneral"] == "Software" && version_info.present?
144
- type = "book"
142
+ if types["resourceTypeGeneral"] == "Software"
143
+ type = "software"
145
144
  else
146
145
  type = types["citeproc"]
147
146
  end
148
147
 
148
+ # Filter out contributors who are already creators, editors, or translators to avoid duplication
149
+ creator_names = Array.wrap(creators).map { |c| c["name"] || [c["givenName"], c["familyName"]].compact.join(" ") }.compact
150
+ unique_contributors = Array.wrap(contributors).reject do |c|
151
+ contributor_name = c["name"] || [c["givenName"], c["familyName"]].compact.join(" ")
152
+ creator_names.include?(contributor_name) ||
153
+ c["contributorType"] == "Editor" ||
154
+ c["contributorType"] == "Translator"
155
+ end
156
+
149
157
  {
150
158
  "type" => type,
151
159
  "id" => normalize_doi(doi),
152
160
  "categories" => Array.wrap(subjects).map { |k| parse_attributes(k, content: "subject", first: true) }.presence,
153
161
  "language" => language,
154
162
  "author" => author,
155
- "contributor" => to_citeproc(contributors),
163
+ "contributor" => unique_contributors.presence ? to_citeproc(unique_contributors) : nil,
164
+ "editor" => contributors ? to_citeproc(contributors.select { |c| c["contributorType"] == "Editor" }) : nil,
165
+ "translator" => contributors ? to_citeproc(contributors.select { |c| c["contributorType"] == "Translator" }) : nil,
156
166
  "issued" => get_date(dates, "Issued") ? get_date_parts(get_date(dates, "Issued")) : get_date_parts(publication_year.to_s),
157
167
  "submitted" => Array.wrap(dates).find { |d| d["dateType"] == "Submitted" }.to_h.fetch("__content__", nil),
168
+ "available-date" => Array.wrap(dates).find { |d| d["dateType"] == "Available" }.to_h.fetch("__content__", nil),
158
169
  "abstract" => parse_attributes(descriptions, content: "description", first: true),
159
170
  "container-title" => container_title,
160
171
  "DOI" => doi,
161
172
  "volume" => container.to_h["volume"],
162
173
  "issue" => container.to_h["issue"],
174
+ "number" => container.to_h["number"],
175
+ "chapter-number" => container.to_h["chapterNumber"],
176
+ "edition" => container.to_h["edition"],
163
177
  "page" => page,
178
+ "page-first" => container.to_h["firstPage"],
164
179
  "publisher" => publisher["name"],
165
180
  "title" => parse_attributes(titles, content: "title", first: true),
166
181
  "URL" => url,
@@ -52,6 +52,12 @@ module Bolognese
52
52
  [{ "nameType" => "Organizational", "name" => ":(unav)" }]
53
53
  end
54
54
  contributors = get_authors(from_citeproc(Array.wrap(meta.fetch("editor", nil))))
55
+ translators = get_authors(from_citeproc(Array.wrap(meta.fetch("translator", nil))))
56
+ translators.each do |translator|
57
+ translator["contributorType"] = "Translator"
58
+ end
59
+ contributors += translators
60
+
55
61
  dates = if date = get_date_from_date_parts(meta.fetch("issued", nil))
56
62
  if Date.edtf(date).present?
57
63
  [{ "date" => date,
@@ -90,7 +96,7 @@ module Bolognese
90
96
 
91
97
  state = id.present? || read_options.present? ? "findable" : "not_found"
92
98
  subjects = Array.wrap(meta.fetch("categories", nil)).reduce([]) do |sum, subject|
93
- sum += name_to_fos(subject)
99
+ sum += name_to_subject(subject)
94
100
 
95
101
  sum
96
102
  end
@@ -55,7 +55,7 @@ module Bolognese
55
55
  "ris" => Bolognese::Utils::SO_TO_RIS_TRANSLATIONS[schema_org] || "GEN"
56
56
  }.compact
57
57
  subjects = Array.wrap(meta.fetch("tags", nil)).reduce([]) do |sum, subject|
58
- sum += name_to_fos(subject)
58
+ sum += name_to_subject(subject)
59
59
 
60
60
  sum
61
61
  end
@@ -4,6 +4,12 @@ module Bolognese
4
4
  module Readers
5
5
  module CrossrefReader
6
6
  # CrossRef types from https://api.crossref.org/types
7
+
8
+ CR_TO_DC_CONTRIBUTOR_TYPES = {
9
+ "editor" => "Editor",
10
+ "translator" => "Translator",
11
+ }
12
+
7
13
  def get_crossref(id: nil, **options)
8
14
  return { "string" => nil, "state" => "not_found" } unless id.present?
9
15
 
@@ -138,7 +144,7 @@ module Bolognese
138
144
 
139
145
  state = meta.present? || read_options.present? ? "findable" : "not_found"
140
146
 
141
- related_identifiers = Array.wrap(crossref_is_part_of(journal_metadata)) + Array.wrap(crossref_references(bibliographic_metadata))
147
+ related_identifiers = Array.wrap(crossref_is_part_of(journal_metadata)) + Array.wrap(crossref_references(bibliographic_metadata)) + Array.wrap(crossref_has_translation(program_metadata)) + Array.wrap(crossref_is_translation_of(program_metadata)) + Array.wrap(crossref_is_related_material(program_metadata))
142
148
 
143
149
  container = if journal_metadata.present?
144
150
  issn = normalize_issn(journal_metadata.to_h.fetch("issn", nil))
@@ -187,7 +193,7 @@ module Bolognese
187
193
  "titles" => titles,
188
194
  "identifiers" => identifiers,
189
195
  "creators" => crossref_people(bibliographic_metadata, "author"),
190
- "contributors" => crossref_people(bibliographic_metadata, "editor"),
196
+ "contributors" => crossref_people(bibliographic_metadata, "editor") + crossref_people(bibliographic_metadata, "translator"),
191
197
  "funding_references" => crossref_funding_reference(program_metadata),
192
198
  "publisher" => publisher,
193
199
  "container" => container,
@@ -282,10 +288,11 @@ module Bolognese
282
288
  "givenName" => given_name,
283
289
  "familyName" => family_name,
284
290
  "affiliation" => affiliation.presence,
285
- "contributorType" => contributor_role == "editor" ? "Editor" : nil }.compact
291
+ "contributorType" => contributor_role == 'author' ? nil : CR_TO_DC_CONTRIBUTOR_TYPES[a["contributor_role"]] }.compact
286
292
  else
287
293
  { "nameType" => "Organizational",
288
- "name" => a["name"] || a["__content__"] }
294
+ "name" => a["name"] || a["__content__"],
295
+ "contributorType" => contributor_role == 'author' ? nil : CR_TO_DC_CONTRIBUTOR_TYPES[a["contributor_role"]] }.compact
289
296
  end
290
297
  end
291
298
  end
@@ -362,6 +369,45 @@ module Bolognese
362
369
  end
363
370
  end.compact.unwrap
364
371
  end
372
+
373
+ def crossref_has_translation(program_metadata)
374
+ refs = program_metadata.dig("related_item") if program_metadata.is_a?(Hash)
375
+ Array.wrap(refs).select { |a| a.dig("intra_work_relation", "relationship_type") == "hasTranslation" }.map do |c|
376
+ if c.dig("intra_work_relation", "identifier_type") == "doi"
377
+ { "relatedIdentifier" => parse_attributes(c["intra_work_relation"]).downcase,
378
+ "relationType" => "HasTranslation",
379
+ "relatedIdentifierType" => "DOI" }.compact
380
+ else
381
+ nil
382
+ end
383
+ end.compact.unwrap
384
+ end
385
+
386
+ def crossref_is_translation_of(program_metadata)
387
+ refs = program_metadata.dig("related_item") if program_metadata.is_a?(Hash)
388
+ Array.wrap(refs).select { |a| a.dig("intra_work_relation", "relationship_type") == "isTranslationOf" }.map do |c|
389
+ if c.dig("intra_work_relation", "identifier_type") == "doi"
390
+ { "relatedIdentifier" => parse_attributes(c["intra_work_relation"]).downcase,
391
+ "relationType" => "IsTranslationOf",
392
+ "relatedIdentifierType" => "DOI" }.compact
393
+ else
394
+ nil
395
+ end
396
+ end.compact.unwrap
397
+ end
398
+
399
+ def crossref_is_related_material(program_metadata)
400
+ refs = program_metadata.dig("related_item") if program_metadata.is_a?(Hash)
401
+ Array.wrap(refs).select { |a| a.dig("interwork_relation", "relationship_type") == "isRelatedMaterial" }.map do |c|
402
+ if c.dig("inter_work_relation", "identifier_type") == "doi"
403
+ { "relatedIdentifier" => parse_attributes(c["inter_work_relation"]).downcase,
404
+ "relationType" => "Other",
405
+ "relatedIdentifierType" => "DOI" }.compact
406
+ else
407
+ nil
408
+ end
409
+ end.compact.unwrap
410
+ end
365
411
  end
366
412
  end
367
413
  end
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'base64'
4
+
3
5
  module Bolognese
4
6
  module Readers
5
7
  module DataciteReader
@@ -101,7 +103,7 @@ module Bolognese
101
103
  { "name" => r.strip }
102
104
  elsif r.is_a?(Hash)
103
105
  {
104
- "name" => r["__content__"].strip,
106
+ "name" => r["__content__"].present? ? r["__content__"].strip : nil,
105
107
  "publisherIdentifier" => r["publisherIdentifierScheme"] == "ROR" ? normalize_ror(r["publisherIdentifier"]) : r["publisherIdentifier"],
106
108
  "publisherIdentifierScheme" => r["publisherIdentifierScheme"],
107
109
  "schemeUri" => r["schemeURI"],
@@ -131,9 +133,9 @@ module Bolognese
131
133
 
132
134
  subjects = Array.wrap(meta.dig("subjects", "subject")).reduce([]) do |sum, subject|
133
135
  if subject.is_a?(String)
134
- sum += name_to_fos(subject)
136
+ sum += name_to_subject(subject)
135
137
  elsif subject.is_a?(Hash)
136
- sum += hsh_to_fos(subject)
138
+ sum += hsh_to_subject(subject)
137
139
  end
138
140
 
139
141
  sum
@@ -141,15 +143,12 @@ module Bolognese
141
143
 
142
144
  dates = Array.wrap(meta.dig("dates", "date")).map do |r|
143
145
  if r.is_a?(Hash) && date = sanitize(r["__content__"]).presence
144
- if Date.edtf(date).present? || Bolognese::Utils::UNKNOWN_INFORMATION.key?(date)
145
- { "date" => date,
146
- "dateType" => parse_attributes(r, content: "dateType"),
147
- "dateInformation" => parse_attributes(r, content: "dateInformation")
148
- }.compact
149
- end
146
+ { "date" => date,
147
+ "dateType" => parse_attributes(r, content: "dateType"),
148
+ "dateInformation" => parse_attributes(r, content: "dateInformation")
149
+ }.compact
150
150
  end
151
151
  end.compact
152
- dates << { "date" => meta.fetch("publicationYear", nil), "dateType" => "Issued" } if meta.fetch("publicationYear", nil).present? && get_date(dates, "Issued").blank?
153
152
  sizes = Array.wrap(meta.dig("sizes", "size")).map do |k|
154
153
  if k.blank?
155
154
  nil
@@ -177,8 +176,7 @@ module Bolognese
177
176
  if funder_identifier_type == "Crossref Funder ID"
178
177
  funder_identifier = validate_funder_doi(funder_identifier)
179
178
  elsif funder_identifier_type == "ROR"
180
- funder_identifier = normalize_ror(funder_identifier)
181
- scheme_uri = "https://ror.org"
179
+ funder_identifier = normalize_ror(funder_identifier)
182
180
  else
183
181
  funder_identifier = normalize_id(funder_identifier) ? normalize_id(funder_identifier) : funder_identifier
184
182
  end
@@ -194,7 +192,8 @@ module Bolognese
194
192
  end
195
193
  related_identifiers = Array.wrap(meta.dig("relatedIdentifiers", "relatedIdentifier")).map do |ri|
196
194
  if ri["relatedIdentifierType"] == "DOI"
197
- rid = validate_doi(ri["__content__"].to_s.downcase)
195
+ doi = ri["__content__"].to_s.downcase
196
+ rid = validate_doi(doi) || doi
198
197
  else
199
198
  rid = ri["__content__"]
200
199
  end
@@ -206,7 +205,8 @@ module Bolognese
206
205
  "resourceTypeGeneral" => ri["resourceTypeGeneral"],
207
206
  "relatedMetadataScheme" => ri["relatedMetadataScheme"],
208
207
  "schemeUri" => ri["schemeURI"],
209
- "schemeType" => ri["schemeType"]
208
+ "schemeType" => ri["schemeType"],
209
+ "relationTypeInformation" => ri["relationTypeInformation"]
210
210
  }.compact
211
211
  end
212
212
 
@@ -216,7 +216,8 @@ module Bolognese
216
216
  relatedItemIdentifier = nil
217
217
  if rii
218
218
  if rii["relatedItemIdentifierType"] == "DOI"
219
- rid = validate_doi(rii["__content__"].to_s.downcase)
219
+ doi = rii["__content__"].to_s.downcase
220
+ rid = validate_doi(doi) || doi
220
221
  else
221
222
  rid = rii["__content__"]
222
223
  end
@@ -226,14 +227,13 @@ module Bolognese
226
227
  "relatedItemIdentifierType" => rii["relatedItemIdentifierType"],
227
228
  "relatedMetadataScheme" => rii["relatedMetadataScheme"],
228
229
  "schemeURI" => rii["schemeURI"],
229
- "schemeType" => rii["schemeType"]
230
+ "schemeType" => rii["schemeType"],
230
231
  }.compact
231
232
  end
232
233
 
233
234
  number = ri["number"]
234
235
  if number.is_a?(String)
235
236
  number = number
236
- numberType = nil
237
237
  else
238
238
  number = ri.dig("number", "__content__")
239
239
  numberType = ri.dig("number", "numberType")
@@ -241,6 +241,7 @@ module Bolognese
241
241
 
242
242
  a = {
243
243
  "relationType" => ri["relationType"],
244
+ "relationTypeInformation" => ri["relationTypeInformation"],
244
245
  "relatedItemType" => ri["relatedItemType"],
245
246
  "relatedItemIdentifier" => relatedItemIdentifier,
246
247
  "creators" => get_authors(Array.wrap(ri.dig("creators", "creator"))),
@@ -262,17 +263,13 @@ module Bolognese
262
263
  if !gl.is_a?(Hash) || gl["geoLocationPoint"].is_a?(String) || gl["geoLocationBox"].is_a?(String) || gl["geoLocationPolygon"].is_a?(String)
263
264
  nil
264
265
  else
265
-
266
- # Handle scenario where multiple geoLocationPolygons are allowed within a single geoLocation
267
- # we want to return an array if it's already an array (i.e. multiple geoLocationPolygons)
268
- # vs if it's singular just return the object
269
- # This is for backwards compatability to allow both scenarios.
266
+ ## Array of geoLocationPolygons within a geoLocation is Unsupported in JSON.
270
267
  if gl.dig("geoLocationPolygon").kind_of?(Array)
271
- geoLocationPolygon = gl.dig("geoLocationPolygon").map do |glp|
272
- Array.wrap(glp.dig("polygonPoint")).map { |glpp| { "polygonPoint" => glpp } }.compact.presence
273
- end.compact.presence
268
+ geoLocationPolygon = nil
274
269
  else
275
- geoLocationPolygon = Array.wrap(gl.dig("geoLocationPolygon", "polygonPoint")).map { |glp| { "polygonPoint" => glp } }.compact.presence
270
+ geoLocationPolygon = Array.wrap(gl.dig("geoLocationPolygon", "polygonPoint")).map { |glp| { "polygonPoint" => glp } }
271
+ .push(Array.wrap(gl.dig("geoLocationPolygon", "inPolygonPoint")).map { |glp| { "inPolygonPoint" => glp } }.first)
272
+ .compact.presence
276
273
  end
277
274
 
278
275
  {
@@ -302,7 +299,6 @@ module Bolognese
302
299
  "titles" => titles,
303
300
  "creators" => get_authors(Array.wrap(meta.dig("creators", "creator"))),
304
301
  "contributors" => get_authors(Array.wrap(meta.dig("contributors", "contributor"))),
305
- "container" => set_container(meta),
306
302
  "publisher" => publisher,
307
303
  "agency" => "datacite",
308
304
  "funding_references" => funding_references,
@@ -323,28 +319,6 @@ module Bolognese
323
319
  }.merge(read_options)
324
320
  end
325
321
 
326
- def set_container(meta)
327
- series_information = Array.wrap(meta.dig("descriptions", "description")).find { |r| r["descriptionType"] == "SeriesInformation" }.to_h.fetch("__content__", nil)
328
- si = get_series_information(series_information)
329
-
330
- is_part_of = Array.wrap(meta.dig("relatedIdentifiers", "relatedIdentifier")).find { |ri| ri["relationType"] == "IsPartOf" }.to_h
331
-
332
- if si["title"].present? || is_part_of.present?
333
- {
334
- "type" => meta.dig("resourceType", "resourceTypeGeneral") == "Dataset" ? "DataRepository" : "Series",
335
- "identifier" => is_part_of["__content__"],
336
- "identifierType" => is_part_of["relatedIdentifierType"],
337
- "title" => si["title"],
338
- "volume" => si["volume"],
339
- "issue" => si["issue"],
340
- "firstPage" => si["firstPage"],
341
- "lastPage" => si["lastPage"]
342
- }.compact
343
- else
344
- {}
345
- end
346
- end
347
-
348
322
  def get_titles(meta)
349
323
  titles = Array.wrap(meta.dig("titles", "title")).map do |r|
350
324
  if r.blank?
@@ -78,7 +78,7 @@ module Bolognese
78
78
  end
79
79
  state = meta.fetch("DO", nil).present? || read_options.present? ? "findable" : "not_found"
80
80
  subjects = Array.wrap(meta.fetch("KW", nil)).reduce([]) do |sum, subject|
81
- sum += name_to_fos(subject)
81
+ sum += name_to_subject(subject)
82
82
 
83
83
  sum
84
84
  end