bolognese 0.9.8 → 0.9.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (322) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +16 -16
  3. data/README.md +9 -0
  4. data/lib/bolognese.rb +0 -8
  5. data/lib/bolognese/array.rb +2 -2
  6. data/lib/bolognese/author_utils.rb +18 -6
  7. data/lib/bolognese/cli.rb +2 -17
  8. data/lib/bolognese/datacite_utils.rb +8 -7
  9. data/lib/bolognese/metadata.rb +291 -178
  10. data/lib/bolognese/readers/bibtex_reader.rb +66 -0
  11. data/lib/bolognese/readers/citeproc_reader.rb +74 -0
  12. data/lib/bolognese/readers/codemeta_reader.rb +71 -0
  13. data/lib/bolognese/readers/crosscite_reader.rb +12 -0
  14. data/lib/bolognese/readers/crossref_reader.rb +209 -0
  15. data/lib/bolognese/readers/datacite_json_reader.rb +75 -0
  16. data/lib/bolognese/readers/datacite_reader.rb +181 -0
  17. data/lib/bolognese/readers/ris_reader.rb +84 -0
  18. data/lib/bolognese/readers/schema_org_reader.rb +119 -0
  19. data/lib/bolognese/utils.rb +42 -67
  20. data/lib/bolognese/version.rb +1 -1
  21. data/lib/bolognese/writers/bibtex_writer.rb +25 -0
  22. data/lib/bolognese/writers/citeproc_writer.rb +29 -0
  23. data/lib/bolognese/writers/codemeta_writer.rb +25 -0
  24. data/lib/bolognese/writers/crosscite_writer.rb +49 -0
  25. data/lib/bolognese/writers/crossref_writer.rb +9 -0
  26. data/lib/bolognese/writers/datacite_json_writer.rb +45 -0
  27. data/lib/bolognese/writers/datacite_writer.rb +10 -0
  28. data/lib/bolognese/writers/rdf_xml_writer.rb +9 -0
  29. data/lib/bolognese/writers/ris_writer.rb +26 -0
  30. data/lib/bolognese/writers/schema_org_writer.rb +45 -0
  31. data/lib/bolognese/writers/turtle_writer.rb +9 -0
  32. data/spec/author_utils_spec.rb +74 -34
  33. data/spec/cli_spec.rb +6 -6
  34. data/spec/datacite_utils_spec.rb +10 -11
  35. data/spec/doi_utils_spec.rb +2 -1
  36. data/spec/fixtures/crossref.ris +2 -1
  37. data/spec/fixtures/datacite.json +6 -9
  38. data/spec/fixtures/vcr_cassettes/Bolognese_CLI/convert_from_id/crossref/default.yml +9 -7
  39. data/spec/fixtures/vcr_cassettes/Bolognese_CLI/convert_from_id/crossref/to_bibtex.yml +9 -7
  40. data/spec/fixtures/vcr_cassettes/Bolognese_CLI/convert_from_id/crossref/to_crossref.yml +6 -6
  41. data/spec/fixtures/vcr_cassettes/Bolognese_CLI/convert_from_id/crossref/to_datacite.yml +6 -6
  42. data/spec/fixtures/vcr_cassettes/Bolognese_CLI/convert_from_id/crossref/to_schema_org.yml +8 -6
  43. data/spec/fixtures/vcr_cassettes/Bolognese_CLI/convert_from_id/datacite/default.yml +10 -6
  44. data/spec/fixtures/vcr_cassettes/Bolognese_CLI/convert_from_id/datacite/to_bibtex.yml +8 -6
  45. data/spec/fixtures/vcr_cassettes/Bolognese_CLI/convert_from_id/datacite/to_datacite.yml +11 -7
  46. data/spec/fixtures/vcr_cassettes/Bolognese_CLI/convert_from_id/datacite/to_datacite_json.yml +10 -6
  47. data/spec/fixtures/vcr_cassettes/Bolognese_CLI/convert_from_id/datacite/to_schema_org.yml +10 -6
  48. data/spec/fixtures/vcr_cassettes/Bolognese_CLI/convert_from_id/schema_org/default.yml +201 -200
  49. data/spec/fixtures/vcr_cassettes/Bolognese_CLI/convert_from_id/schema_org/to_bibtex.yml +201 -200
  50. data/spec/fixtures/vcr_cassettes/Bolognese_CLI/convert_from_id/schema_org/to_datacite.yml +201 -200
  51. data/spec/fixtures/vcr_cassettes/Bolognese_CLI/convert_from_id/schema_org/to_schema_org.yml +201 -200
  52. data/spec/fixtures/vcr_cassettes/{Bolognese_Crossref/is_personal_name_/has_type_organization.yml → Bolognese_Metadata/authors_as_string/author.yml} +61 -2
  53. data/spec/fixtures/vcr_cassettes/{Bolognese_Crossref/authors_as_string/single_author.yml → Bolognese_Metadata/authors_as_string/no_author.yml} +60 -3
  54. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/authors_as_string/single_author.yml +203 -0
  55. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/authors_as_string/with_organization.yml +203 -0
  56. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/doi_from_url/doi.yml +203 -0
  57. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/doi_from_url/not_a_doi.yml +203 -0
  58. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/doi_from_url/url.yml +203 -0
  59. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/doi_registration_agency/crossref.yml +204 -6
  60. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/doi_registration_agency/datacite.yml +204 -4
  61. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/doi_registration_agency/medra.yml +204 -4
  62. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/doi_registration_agency/not_a_valid_prefix.yml +203 -0
  63. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/doi_registration_agency/not_found.yml +204 -4
  64. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/find_from_format_by_ID/crossref.yml +102 -4
  65. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/find_from_format_by_ID/crossref_doi_not_url.yml +100 -4
  66. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/find_from_format_by_ID/datacite.yml +102 -4
  67. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/find_from_format_by_ID/datacite_doi_http.yml +100 -4
  68. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/find_from_format_by_ID/github.yml +97 -0
  69. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/find_from_format_by_ID/orcid.yml +99 -0
  70. data/spec/fixtures/vcr_cassettes/{Bolognese_Crossref/get_name_identifier/has_ORCID.yml → Bolognese_Metadata/find_from_format_by_ID/schema_org.yml} +61 -2
  71. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/find_from_format_from_file/bibtex.yml +99 -0
  72. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/find_from_format_from_file/citeproc.yml +99 -0
  73. data/spec/fixtures/vcr_cassettes/{Bolognese_Crossref/get_one_author/has_familyName.yml → Bolognese_Metadata/find_from_format_from_file/codemeta.yml} +61 -2
  74. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/find_from_format_from_file/crossref.yml +99 -0
  75. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/find_from_format_from_file/datacite.yml +99 -0
  76. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/find_from_format_from_file/datacite_json.yml +99 -0
  77. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/find_from_format_from_file/ris.yml +99 -0
  78. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/find_from_format_from_file/schema_org.yml +97 -0
  79. data/spec/fixtures/vcr_cassettes/{Bolognese_Crossref/is_personal_name_/has_no_info.yml → Bolognese_Metadata/from_schema_org/with_id.yml} +59 -2
  80. data/spec/fixtures/vcr_cassettes/{Bolognese_Codemeta/get_metadata → Bolognese_Metadata/get_codemeta_metadata}/maremma.yml +9 -9
  81. data/spec/fixtures/vcr_cassettes/{Bolognese_Codemeta/get_metadata → Bolognese_Metadata/get_codemeta_metadata}/no_codemeta_json.yml +8 -8
  82. data/spec/fixtures/vcr_cassettes/{Bolognese_Codemeta/get_metadata → Bolognese_Metadata/get_codemeta_metadata}/not_found_error.yml +8 -8
  83. data/spec/fixtures/vcr_cassettes/{Bolognese_Crossref/get_metadata → Bolognese_Metadata/get_crossref_metadata}/DOI_with_ORCID_ID.yml +61 -2
  84. data/spec/fixtures/vcr_cassettes/{Bolognese_Crossref/get_metadata → Bolognese_Metadata/get_crossref_metadata}/DOI_with_SICI_DOI.yml +62 -3
  85. data/spec/fixtures/vcr_cassettes/{Bolognese_Crossref/get_metadata → Bolognese_Metadata/get_crossref_metadata}/DOI_with_data_citation.yml +61 -2
  86. data/spec/fixtures/vcr_cassettes/{Bolognese_Crossref/get_metadata → Bolognese_Metadata/get_crossref_metadata}/date_in_future.yml +61 -2
  87. data/spec/fixtures/vcr_cassettes/{Bolognese_Crossref/get_metadata → Bolognese_Metadata/get_crossref_metadata}/journal_article.yml +62 -3
  88. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/not_found_error.yml +97 -0
  89. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/posted_content.yml +203 -0
  90. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_datacite_metadata/BlogPosting.yml +99 -0
  91. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_datacite_metadata/Dataset.yml +99 -0
  92. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_datacite_metadata/Funding_schema_version_4.yml +97 -0
  93. data/spec/fixtures/vcr_cassettes/{Bolognese_Datacite/get_metadata → Bolognese_Metadata/get_datacite_metadata}/author_only_full_name.yml +61 -2
  94. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_datacite_metadata/author_with_scheme.yml +97 -0
  95. data/spec/fixtures/vcr_cassettes/{Bolognese_Crossref/get_name_identifier/has_no_ORCID.yml → Bolognese_Metadata/get_datacite_metadata/date.yml} +63 -2
  96. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_datacite_metadata/funding_schema_version_3.yml +99 -0
  97. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_datacite_metadata/is_identical_to.yml +99 -0
  98. data/spec/fixtures/vcr_cassettes/{Bolognese_Datacite/get_metadata → Bolognese_Metadata/get_datacite_metadata}/keywords_with_attributes.yml +64 -3
  99. data/spec/fixtures/vcr_cassettes/{Bolognese_Datacite/get_metadata → Bolognese_Metadata/get_datacite_metadata}/multiple_author_names_in_one_creatorName.yml +63 -2
  100. data/spec/fixtures/vcr_cassettes/{Bolognese_Crossref/get_one_author/has_name_in_display-order.yml → Bolognese_Metadata/get_datacite_metadata/multiple_licenses.yml} +63 -2
  101. data/spec/fixtures/vcr_cassettes/{Bolognese_Crossref/get_metadata/posted_content.yml → Bolognese_Metadata/get_date_from_date_parts/date.yml} +59 -2
  102. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_date_from_date_parts/year-month.yml +203 -0
  103. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_date_from_date_parts/year.yml +203 -0
  104. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_date_parts/date.yml +203 -0
  105. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_date_parts/year-month.yml +203 -0
  106. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_date_parts/year.yml +201 -0
  107. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_name_identifier/has_ORCID.yml +136 -0
  108. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_name_identifier/has_jacow_org_scheme.yml +136 -0
  109. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_name_identifier/has_no_ORCID.yml +136 -0
  110. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_one_author/has_familyName.yml +136 -0
  111. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_one_author/has_multiple_names_in_display-order.yml +136 -0
  112. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_one_author/has_name_in_Thai.yml +134 -0
  113. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_one_author/has_name_in_display-order.yml +136 -0
  114. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_one_author/has_name_in_display-order_with_ORCID.yml +136 -0
  115. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_one_author/has_name_in_sort-order.yml +136 -0
  116. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_one_author/hyper-authorship.yml +132 -0
  117. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_one_author/is_organization.yml +203 -0
  118. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_one_author/multiple_author_names_in_one_field.yml +136 -0
  119. data/spec/fixtures/vcr_cassettes/{Bolognese_SchemaOrg/get_metadata → Bolognese_Metadata/get_schema_org_metadata}/BlogPosting.yml +201 -200
  120. data/spec/fixtures/vcr_cassettes/{Bolognese_SchemaOrg/get_metadata → Bolognese_Metadata/get_schema_org_metadata}/not_found_error.yml +2 -2
  121. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_alternate_identifiers/insert.yml +97 -0
  122. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_contributors/none.yml +99 -0
  123. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_creators/insert.yml +99 -0
  124. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_dates/insert.yml +99 -0
  125. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_descriptions/insert.yml +99 -0
  126. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_identifier/doi.yml +99 -0
  127. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_person/creator_only_name.yml +99 -0
  128. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_publication_year/insert.yml +99 -0
  129. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_publisher/insert.yml +99 -0
  130. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_related_identifiers/insert.yml +99 -0
  131. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_related_identifiers/related_identifier.yml +99 -0
  132. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_resource_type/insert.yml +99 -0
  133. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_rights_list/insert.yml +97 -0
  134. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_subjects/insert.yml +99 -0
  135. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_titles/insert.yml +99 -0
  136. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_version/insert.yml +97 -0
  137. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/is_personal_name_/has_comma.yml +203 -0
  138. data/spec/fixtures/vcr_cassettes/{Bolognese_Crossref → Bolognese_Metadata}/is_personal_name_/has_family_name.yml +61 -2
  139. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/is_personal_name_/has_id.yml +201 -0
  140. data/spec/fixtures/vcr_cassettes/{Bolognese_Crossref → Bolognese_Metadata}/is_personal_name_/has_known_given_name.yml +61 -2
  141. data/spec/fixtures/vcr_cassettes/{Bolognese_Crossref/is_personal_name_/has_type_person.yml → Bolognese_Metadata/is_personal_name_/has_no_info.yml} +61 -2
  142. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/is_personal_name_/has_type_organization.yml +203 -0
  143. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/jsonlint/missing_comma.yml +99 -0
  144. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/jsonlint/nil.yml +99 -0
  145. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/jsonlint/overlapping_keys.yml +97 -0
  146. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/jsonlint/valid.yml +99 -0
  147. data/spec/fixtures/vcr_cassettes/{Bolognese_Crossref/authors_as_string/author.yml → Bolognese_Metadata/normalize_doi/SICI_doi.yml} +59 -2
  148. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/normalize_doi/doi.yml +203 -0
  149. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/normalize_doi/doi_from_url_without_doi_proxy.yml +203 -0
  150. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/normalize_doi/doi_prefix_too_long.yml +203 -0
  151. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/normalize_doi/doi_prefix_with_string.yml +203 -0
  152. data/spec/fixtures/vcr_cassettes/{Bolognese_Crossref/authors_as_string/no_author.yml → Bolognese_Metadata/normalize_doi/doi_with_protocol.yml} +59 -2
  153. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/normalize_doi/dx_doi_org_url.yml +203 -0
  154. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/normalize_doi/https_url.yml +203 -0
  155. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/normalize_doi/not_valid_doi_prefix.yml +203 -0
  156. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/normalize_doi/url_with_one_slash.yml +203 -0
  157. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/normalize_id/doi.yml +203 -0
  158. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/normalize_id/doi_as_url.yml +203 -0
  159. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/normalize_id/ftp.yml +203 -0
  160. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/normalize_id/invalid_url.yml +203 -0
  161. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/normalize_id/string.yml +203 -0
  162. data/spec/fixtures/vcr_cassettes/{Bolognese_Crossref/get_one_author/is_organization.yml → Bolognese_Metadata/normalize_id/url.yml} +59 -2
  163. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/normalize_id/url_with_utf-8.yml +203 -0
  164. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/normalize_ids/doi.yml +203 -0
  165. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/normalize_ids/url.yml +203 -0
  166. data/spec/fixtures/vcr_cassettes/{Bolognese_Crossref/is_personal_name_/has_comma.yml → Bolognese_Metadata/normalize_url/uri.yml} +2 -2
  167. data/spec/fixtures/vcr_cassettes/{Bolognese_Crossref/authors_as_string/with_organization.yml → Bolognese_Metadata/normalize_url/with_trailing_slash.yml} +2 -2
  168. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/parse_attributes/array.yml +203 -0
  169. data/spec/fixtures/vcr_cassettes/{Bolognese_Crossref/is_personal_name_/has_id.yml → Bolognese_Metadata/parse_attributes/hash.yml} +59 -2
  170. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/parse_attributes/nil.yml +203 -0
  171. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/parse_attributes/string.yml +203 -0
  172. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/sanitize/should_only_keep_specific_tags.yml +203 -0
  173. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/sanitize/should_remove_a_tags.yml +203 -0
  174. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/to_schema_org/with_id.yml +203 -0
  175. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/validate_url/DOI.yml +203 -0
  176. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/validate_url/ISSN.yml +203 -0
  177. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/validate_url/URL.yml +203 -0
  178. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/validate_url/string.yml +203 -0
  179. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_bibtex/BlogPosting.yml +99 -0
  180. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_bibtex/Dataset.yml +99 -0
  181. data/spec/fixtures/vcr_cassettes/{Bolognese_SchemaOrg/get_metadata/BlogPosting_schema_org_JSON.yml → Bolognese_Metadata/write_metadata_as_bibtex/from_schema_org.yml} +201 -200
  182. data/spec/fixtures/vcr_cassettes/{Bolognese_Codemeta/get_metadata_as_datacite_xml → Bolognese_Metadata/write_metadata_as_bibtex}/maremma.yml +9 -9
  183. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_bibtex/with_data_citation.yml +731 -0
  184. data/spec/fixtures/vcr_cassettes/{Bolognese_Crossref/get_metadata_as_citeproc → Bolognese_Metadata/write_metadata_as_bibtex}/with_pages.yml +61 -2
  185. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_citeproc/BlogPosting.yml +99 -0
  186. data/spec/fixtures/vcr_cassettes/{Bolognese_SchemaOrg/get_metadata_as_bibtex/with_data_citation.yml → Bolognese_Metadata/write_metadata_as_citeproc/BlogPosting_schema_org.yml} +201 -200
  187. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_citeproc/Dataset.yml +99 -0
  188. data/spec/fixtures/vcr_cassettes/{Bolognese_Crossref/get_metadata_as_citeproc → Bolognese_Metadata/write_metadata_as_citeproc}/journal_article.yml +62 -3
  189. data/spec/fixtures/vcr_cassettes/{Bolognese_Codemeta/get_metadata_as_ris → Bolognese_Metadata/write_metadata_as_citeproc}/maremma.yml +8 -8
  190. data/spec/fixtures/vcr_cassettes/{Bolognese_Crossref/get_metadata_as_ris → Bolognese_Metadata/write_metadata_as_citeproc}/with_pages.yml +61 -2
  191. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_codemeta/SoftwareSourceCode_DataCite.yml +99 -0
  192. data/spec/fixtures/vcr_cassettes/{Bolognese_Codemeta/get_metadata_as_bibtex → Bolognese_Metadata/write_metadata_as_crosscite}/maremma.yml +9 -9
  193. data/spec/fixtures/vcr_cassettes/{Bolognese_Crossref/get_metadata_as_datacite_xml → Bolognese_Metadata/write_metadata_as_crosscite}/with_ORCID_ID.yml +61 -2
  194. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_crosscite/with_data_citation.yml +731 -0
  195. data/spec/fixtures/vcr_cassettes/{Bolognese_SchemaOrg/get_metadata_as_citeproc/BlogPosting.yml → Bolognese_Metadata/write_metadata_as_crosscite/with_data_citation_schema_org.yml} +201 -200
  196. data/spec/fixtures/vcr_cassettes/{Bolognese_Crossref/get_metadata_as_datacite_xml → Bolognese_Metadata/write_metadata_as_crosscite}/with_editor.yml +62 -3
  197. data/spec/fixtures/vcr_cassettes/{Bolognese_Crossref/get_one_author/has_name_in_sort-order.yml → Bolognese_Metadata/write_metadata_as_crossref/from_DataCite.yml} +61 -2
  198. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_datacite_json/maremma.yml +100 -0
  199. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_datacite_json/with_ORCID_ID.yml +377 -0
  200. data/spec/fixtures/vcr_cassettes/{Bolognese_Crossref/get_metadata_as_datacite_xml → Bolognese_Metadata/write_metadata_as_datacite_json}/with_data_citation.yml +61 -2
  201. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_datacite_json/with_data_citation_schema_org.yml +654 -0
  202. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_datacite_xml/Dataset_in_schema_4_0.yml +97 -0
  203. data/spec/fixtures/vcr_cassettes/{Bolognese_Codemeta/get_metadata_as_citeproc → Bolognese_Metadata/write_metadata_as_datacite_xml}/maremma.yml +9 -9
  204. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_datacite_xml/with_ORCID_ID.yml +377 -0
  205. data/spec/fixtures/vcr_cassettes/{Bolognese_Crossref/get_metadata_as_ris/journal_article.yml → Bolognese_Metadata/write_metadata_as_datacite_xml/with_data_citation.yml} +61 -2
  206. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_datacite_xml/with_data_citation_schema_org.yml +654 -0
  207. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_datacite_xml/with_editor.yml +944 -0
  208. data/spec/fixtures/vcr_cassettes/{Bolognese_DataciteJson/get_metadata_as_rdf_xml → Bolognese_Metadata/write_metadata_as_rdf_xml}/BlogPosting.yml +88 -23
  209. data/spec/fixtures/vcr_cassettes/{Bolognese_Citeproc/get_metadata_as_rdf_xml/BlogPosting.yml → Bolognese_Metadata/write_metadata_as_rdf_xml/BlogPosting_Citeproc_JSON.yml} +26 -20
  210. data/spec/fixtures/vcr_cassettes/{Bolognese_Bibtex/get_metadata_as_rdf_xml → Bolognese_Metadata/write_metadata_as_rdf_xml}/Crossref_DOI.yml +26 -20
  211. data/spec/fixtures/vcr_cassettes/{Bolognese_Crossref/get_metadata_as_rdf_xml → Bolognese_Metadata/write_metadata_as_rdf_xml}/journal_article.yml +87 -22
  212. data/spec/fixtures/vcr_cassettes/{Bolognese_Codemeta/get_metadata_as_rdf_xml → Bolognese_Metadata/write_metadata_as_rdf_xml}/maremma.yml +35 -29
  213. data/spec/fixtures/vcr_cassettes/{Bolognese_Crossref/get_metadata_as_turtle → Bolognese_Metadata/write_metadata_as_rdf_xml}/with_pages.yml +88 -23
  214. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_ris/BlogPosting.yml +99 -0
  215. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_ris/BlogPosting_schema_org.yml +654 -0
  216. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_ris/Dataset.yml +99 -0
  217. data/spec/fixtures/vcr_cassettes/{Bolognese_Crossref/get_metadata_as_bibtex/with_data_citation.yml → Bolognese_Metadata/write_metadata_as_ris/journal_article.yml} +59 -2
  218. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_ris/maremma.yml +100 -0
  219. data/spec/fixtures/vcr_cassettes/{Bolognese_Crossref/get_metadata_as_bibtex → Bolognese_Metadata/write_metadata_as_ris}/with_pages.yml +62 -3
  220. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_schema_org/Schema_org_JSON_IsSupplementTo.yml +99 -0
  221. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_schema_org/Schema_org_JSON_isReferencedBy.yml +99 -0
  222. data/spec/fixtures/vcr_cassettes/{Bolognese_Crossref/get_metadata/Schema_org_JSON.yml → Bolognese_Metadata/write_metadata_as_schema_org/journal_article.yml} +61 -2
  223. data/spec/fixtures/vcr_cassettes/{Bolognese_Codemeta/get_metadata → Bolognese_Metadata/write_metadata_as_schema_org}/maremma_schema_org_JSON.yml +9 -9
  224. data/spec/fixtures/vcr_cassettes/{Bolognese_Datacite/get_metadata_as_rdf_xml → Bolognese_Metadata/write_metadata_as_turtle}/BlogPosting.yml +88 -23
  225. data/spec/fixtures/vcr_cassettes/{Bolognese_Citeproc/get_metadata_as_turtle/BlogPosting.yml → Bolognese_Metadata/write_metadata_as_turtle/BlogPosting_Citeproc_JSON.yml} +26 -20
  226. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_turtle/BlogPosting_DataCite_JSON.yml +4589 -0
  227. data/spec/fixtures/vcr_cassettes/{Bolognese_Bibtex/get_metadata_as_turtle → Bolognese_Metadata/write_metadata_as_turtle}/Crossref_DOI.yml +26 -20
  228. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_turtle/DataONE.yml +4589 -0
  229. data/spec/fixtures/vcr_cassettes/{Bolognese_Datacite/get_metadata_as_turtle → Bolognese_Metadata/write_metadata_as_turtle}/Dataset.yml +88 -23
  230. data/spec/fixtures/vcr_cassettes/{Bolognese_Crossref/get_metadata_as_turtle → Bolognese_Metadata/write_metadata_as_turtle}/journal_article.yml +87 -22
  231. data/spec/fixtures/vcr_cassettes/{Bolognese_Crossref/get_metadata_as_rdf_xml → Bolognese_Metadata/write_metadata_as_turtle}/with_pages.yml +87 -22
  232. data/spec/metadata_spec.rb +8 -2
  233. data/spec/readers/bibtex_reader_spec.rb +30 -0
  234. data/spec/readers/citeproc_reader_spec.rb +28 -0
  235. data/spec/readers/codemeta_reader_spec.rb +90 -0
  236. data/spec/readers/crossref_reader_spec.rb +142 -0
  237. data/spec/readers/datacite_json_reader_spec.rb +48 -0
  238. data/spec/readers/datacite_reader_spec.rb +215 -0
  239. data/spec/readers/ris_reader_spec.rb +32 -0
  240. data/spec/readers/schema_org_reader_spec.rb +63 -0
  241. data/spec/utils_spec.rb +24 -25
  242. data/spec/writers/bibtex_writer_spec.rb +102 -0
  243. data/spec/writers/citeproc_writer_spec.rb +138 -0
  244. data/spec/writers/codemeta_writer_spec.rb +36 -0
  245. data/spec/writers/crosscite_writer_spec.rb +81 -0
  246. data/spec/writers/crossref_writer_spec.rb +19 -0
  247. data/spec/writers/datacite_json_writer_spec.rb +74 -0
  248. data/spec/writers/datacite_writer_spec.rb +124 -0
  249. data/spec/writers/rdf_xml_writer_spec.rb +97 -0
  250. data/spec/writers/ris_writer_spec.rb +153 -0
  251. data/spec/writers/schema_org_writer_spec.rb +59 -0
  252. data/spec/writers/turtle_writer_spec.rb +82 -0
  253. metadata +213 -132
  254. data/codemeta.json +0 -39
  255. data/lib/bolognese/bibtex.rb +0 -163
  256. data/lib/bolognese/citeproc.rb +0 -120
  257. data/lib/bolognese/codemeta.rb +0 -153
  258. data/lib/bolognese/crossref.rb +0 -281
  259. data/lib/bolognese/datacite.rb +0 -288
  260. data/lib/bolognese/datacite_json.rb +0 -220
  261. data/lib/bolognese/ris.rb +0 -117
  262. data/lib/bolognese/schema_org.rb +0 -196
  263. data/spec/bibtex_spec.rb +0 -90
  264. data/spec/citeproc_spec.rb +0 -66
  265. data/spec/codemeta_spec.rb +0 -221
  266. data/spec/crossref_spec.rb +0 -348
  267. data/spec/datacite_json_spec.rb +0 -125
  268. data/spec/datacite_spec.rb +0 -406
  269. data/spec/fixtures/vcr_cassettes/Bolognese_Codemeta/get_metadata_as_schema_org_JSON/maremma.yml +0 -100
  270. data/spec/fixtures/vcr_cassettes/Bolognese_Codemeta/get_metadata_as_turtle/maremma.yml +0 -4680
  271. data/spec/fixtures/vcr_cassettes/Bolognese_Crossref/get_metadata/not_found_error.yml +0 -38
  272. data/spec/fixtures/vcr_cassettes/Bolognese_Crossref/get_metadata_as_string/DOI_with_data_citation.yml +0 -672
  273. data/spec/fixtures/vcr_cassettes/Bolognese_Crossref/get_one_author/author.yml +0 -38
  274. data/spec/fixtures/vcr_cassettes/Bolognese_Crossref/get_one_author/has_multiple_names_in_display-order.yml +0 -38
  275. data/spec/fixtures/vcr_cassettes/Bolognese_Crossref/get_one_author/has_name_in_Thai.yml +0 -38
  276. data/spec/fixtures/vcr_cassettes/Bolognese_Crossref/get_one_author/has_name_in_display-order_with_ORCID.yml +0 -38
  277. data/spec/fixtures/vcr_cassettes/Bolognese_Crossref/get_one_author/hyper-authorship.yml +0 -38
  278. data/spec/fixtures/vcr_cassettes/Bolognese_Crossref/get_one_author/multiple_author_names.yml +0 -38
  279. data/spec/fixtures/vcr_cassettes/Bolognese_Crossref/get_one_author/multiple_author_names_in_one_field.yml +0 -38
  280. data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/get_metadata/BlogPosting.yml +0 -40
  281. data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/get_metadata/Dataset.yml +0 -40
  282. data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/get_metadata/Date.yml +0 -40
  283. data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/get_metadata/Funding_schema_version_3.yml +0 -40
  284. data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/get_metadata/Funding_schema_version_4.yml +0 -38
  285. data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/get_metadata/Schema_org_JSON_IsSupplementTo.yml +0 -40
  286. data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/get_metadata/Schema_org_JSON_isReferencedBy.yml +0 -40
  287. data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/get_metadata/author.yml +0 -38
  288. data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/get_metadata/author_with_scheme.yml +0 -38
  289. data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/get_metadata/is_identical_to.yml +0 -40
  290. data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/get_metadata/jsonlint.yml +0 -38
  291. data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/get_metadata/multiple_licenses.yml +0 -40
  292. data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/get_metadata_as_bibtex/BlogPosting.yml +0 -40
  293. data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/get_metadata_as_bibtex/Dataset.yml +0 -40
  294. data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/get_metadata_as_citeproc/BlogPosting.yml +0 -38
  295. data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/get_metadata_as_citeproc/Dataset.yml +0 -40
  296. data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/get_metadata_as_codemeta/SoftwareSourceCode.yml +0 -40
  297. data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/get_metadata_as_datacite_xml_4_0/Dataset.yml +0 -40
  298. data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/get_metadata_as_ris/BlogPosting.yml +0 -40
  299. data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/get_metadata_as_ris/Dataset.yml +0 -40
  300. data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/get_metadata_as_turtle/BlogPosting.yml +0 -4620
  301. data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/insert_alternate_identifiers/insert.yml +0 -38
  302. data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/insert_contributors/none.yml +0 -40
  303. data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/insert_creators/insert.yml +0 -40
  304. data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/insert_dates/insert.yml +0 -40
  305. data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/insert_descriptions/insert.yml +0 -38
  306. data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/insert_identifier/doi.yml +0 -40
  307. data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/insert_person/creator_only_name.yml +0 -38
  308. data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/insert_publication_year/insert.yml +0 -38
  309. data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/insert_publisher/insert.yml +0 -38
  310. data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/insert_related_identifiers/insert.yml +0 -38
  311. data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/insert_related_identifiers/related_identifier.yml +0 -40
  312. data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/insert_resource_type/insert.yml +0 -40
  313. data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/insert_rights_list/insert.yml +0 -40
  314. data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/insert_subjects/insert.yml +0 -40
  315. data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/insert_titles/insert.yml +0 -40
  316. data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/insert_version/insert.yml +0 -40
  317. data/spec/fixtures/vcr_cassettes/Bolognese_DataciteJson/get_metadata_as_turtle/BlogPosting.yml +0 -4583
  318. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/generate/datacite.yml +0 -40
  319. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/read/datacite.yml +0 -40
  320. data/spec/fixtures/vcr_cassettes/Bolognese_SchemaOrg/get_metadata_as_datacite_xml/with_data_citation.yml +0 -653
  321. data/spec/fixtures/vcr_cassettes/Bolognese_SchemaOrg/get_metadata_as_ris/BlogPosting.yml +0 -653
  322. data/spec/schema_org_spec.rb +0 -151
data/codemeta.json DELETED
@@ -1,39 +0,0 @@
1
- {
2
- "@context": "https://raw.githubusercontent.com/codemeta/codemeta/master/codemeta.jsonld",
3
- "@type": "SoftwareSourceCode",
4
- "@id": "https://doi.org/10.5438/N138-Z3MK",
5
- "agents": {
6
- "@id": "http://orcid.org/0000-0003-0077-4738",
7
- "@type": "person",
8
- "name": "Martin Fenner",
9
- "affiliation": "DataCite",
10
- "mustBeCited": true,
11
- "isMaintainer": true,
12
- "isRightsHolder": true
13
- },
14
- "identifier": "https://doi.org/10.5438/N138-Z3MK",
15
- "codeRepository": "https://github.com/datacite/bolognese",
16
- "dateCreated": "2017-02-13",
17
- "datePublished": "2017-02-25",
18
- "dateModified": "2017-02-25",
19
- "description": "Ruby gem and command-line utility for conversion of DOI metadata from and to different metadata formats, including schema.org.",
20
- "isAutomatedBuild": true,
21
- "licenseId": "MIT",
22
- "publisher": "DataCite",
23
- "tags": [
24
- "doi",
25
- "metadata",
26
- "crossref",
27
- "datacite",
28
- "schema.org",
29
- "bibtex",
30
- "codemeta"
31
- ],
32
- "title": "Bolognese: a Ruby library for conversion of DOI Metadata",
33
- "programmingLanguage": {
34
- "name": "Ruby",
35
- "version": "≥ 2.3.3",
36
- "URL": "https://www.ruby-lang.org"
37
- },
38
- "readme": "https://github.com/datacite/bolognese/blob/master/README.md"
39
- }
@@ -1,163 +0,0 @@
1
- module Bolognese
2
- class Bibtex < Metadata
3
-
4
- BIB_TO_SO_TRANSLATIONS = {
5
- "article" => "ScholarlyArticle"
6
- }
7
-
8
- SO_TO_BIB_TRANSLATIONS = {
9
- "Article" => "article",
10
- "AudioObject" => "misc",
11
- "Blog" => "misc",
12
- "BlogPosting" => "article",
13
- "Collection" => "misc",
14
- "CreativeWork" => "misc",
15
- "DataCatalog" => "misc",
16
- "Dataset" => "misc",
17
- "Event" => "misc",
18
- "ImageObject" => "misc",
19
- "Movie" => "misc",
20
- "PublicationIssue" => "misc",
21
- "ScholarlyArticle" => "article",
22
- "Service" => "misc",
23
- "SoftwareSourceCode" => "misc",
24
- "VideoObject" => "misc",
25
- "WebPage" => "misc",
26
- "WebSite" => "misc"
27
- }
28
-
29
- BIB_TO_CP_TRANSLATIONS = {
30
- "article" => "article-journal"
31
- }
32
-
33
- BIB_TO_RIS_TRANSLATIONS = {
34
- "article" => "JOUR",
35
- "book" => "BOOK",
36
- "inbook" => "CHAP",
37
- "inproceedings" => "CPAPER",
38
- "manual" => nil,
39
- "misc" => "GEN",
40
- "phdthesis" => "THES",
41
- "proceedings" => "CONF",
42
- "techreport" => "RPRT",
43
- "unpublished" => "UNPD"
44
- }
45
-
46
- SO_TO_RIS_TRANSLATIONS = {
47
- "Article" => "",
48
- "AudioObject" => "song",
49
- "Blog" => nil,
50
- "BlogPosting" => "BLOG",
51
- "Collection" => nil,
52
- "CreativeWork" => "GEN",
53
- "DataCatalog" => "CTLG",
54
- "Dataset" => "DATA",
55
- "Event" => nil,
56
- "ImageObject" => "FIGURE",
57
- "Movie" => "MPCT",
58
- "PublicationIssue" => nil,
59
- "ScholarlyArticle" => "JOUR",
60
- "Service" => nil,
61
- "SoftwareSourceCode" => "COMP",
62
- "VideoObject" => "VIDEO",
63
- "WebPage" => "ELEC",
64
- "WebSite" => nil
65
- }
66
-
67
- def initialize(string: nil)
68
- @raw = string
69
- end
70
-
71
- def metadata
72
- @metadata ||= raw.present? ? BibTeX.parse(raw).first : {}
73
- end
74
-
75
- def exists?
76
- metadata.present?
77
- end
78
-
79
- def valid?
80
- bibtex.present?
81
- end
82
-
83
- def type
84
- BIB_TO_SO_TRANSLATIONS[metadata.type.to_s] || "ScholarlyArticle"
85
- end
86
-
87
- def citeproc_type
88
- BIB_TO_CP_TRANSLATIONS[metadata.type.to_s] || "misc"
89
- end
90
-
91
- def ris_type
92
- BIB_TO_RIS_TRANSLATIONS[metadata.type.to_s] || "GEN"
93
- end
94
-
95
- def resource_type_general
96
- SO_TO_DC_TRANSLATIONS[type]
97
- end
98
-
99
- def doi
100
- metadata.doi
101
- end
102
-
103
- def url
104
- metadata.url
105
- end
106
-
107
- def id
108
- normalize_doi(doi)
109
- end
110
-
111
- def author
112
- Array(metadata.author).map do |a|
113
- { "@type" => "Person",
114
- "givenName" => a.first,
115
- "familyName" => a.last }.compact
116
- end
117
- end
118
-
119
- def title
120
- metadata.title
121
- end
122
-
123
- def container_title
124
- metadata.journal.to_s.presence || metadata.publisher.to_s
125
- end
126
-
127
- alias_method :journal, :container_title
128
-
129
- def date_published
130
- metadata.date.to_s.presence
131
- end
132
-
133
- def publication_year
134
- metadata.year.to_s.presence
135
- end
136
-
137
- def volume
138
- metadata.volume.to_s.presence
139
- end
140
-
141
- def pagination
142
- metadata.pages.to_s.presence
143
- end
144
-
145
- def is_part_of
146
- if metadata.journal.present?
147
- { "type" => "Periodical",
148
- "name" => metadata.journal.to_s,
149
- "issn" => metadata.issn.to_s.presence }.compact
150
- else
151
- nil
152
- end
153
- end
154
-
155
- def description
156
- { "text" => metadata.field?(:abstract) && metadata.abstract.to_s.presence }
157
- end
158
-
159
- def license
160
- { "id" => metadata.field?(:copyright) && metadata.copyright.to_s.presence }
161
- end
162
- end
163
- end
@@ -1,120 +0,0 @@
1
- module Bolognese
2
- class Citeproc < Metadata
3
-
4
- SO_TO_DC_RELATION_TYPES = {
5
- "citation" => "References",
6
- "sameAs" => "IsIdenticalTo",
7
- "isPartOf" => "IsPartOf",
8
- "hasPart" => "HasPart",
9
- "isPredecessor" => "IsPreviousVersionOf",
10
- "isSuccessor" => "IsNewVersionOf"
11
- }
12
-
13
- def initialize(string: nil)
14
- @raw = string
15
- end
16
-
17
- def metadata
18
- @metadata ||= raw.present? && valid? ? Maremma.from_json(raw) : {}
19
- end
20
-
21
- def exists?
22
- metadata.present?
23
- end
24
-
25
- def errors
26
- jsonlint(raw)
27
- end
28
-
29
- def valid?
30
- errors.empty?
31
- end
32
-
33
- def doi
34
- metadata.fetch("DOI", nil)
35
- end
36
-
37
- def id
38
- normalize_id(metadata.fetch("id", nil))
39
- end
40
-
41
- def url
42
- normalize_id(metadata.fetch("URL", nil))
43
- end
44
-
45
- def resource_type_general
46
- SO_TO_DC_TRANSLATIONS[type]
47
- end
48
-
49
- def type
50
- CP_TO_SO_TRANSLATIONS[citeproc_type] || "CreativeWork"
51
- end
52
-
53
- def citeproc_type
54
- metadata.fetch("type", nil)
55
- end
56
-
57
- def additional_type
58
- metadata.fetch("additionalType", nil)
59
- end
60
-
61
- def bibtex_type
62
- Bolognese::Bibtex::SO_TO_BIB_TRANSLATIONS[type] || "misc"
63
- end
64
-
65
- def ris_type
66
- CP_TO_RIS_TRANSLATIONS[type] || "GEN"
67
- end
68
-
69
- def title
70
- metadata.fetch("title", nil)
71
- end
72
-
73
- def author
74
- authors = from_citeproc(Array.wrap(metadata.fetch("author", nil)))
75
- get_authors(authors)
76
- end
77
-
78
- def editor
79
- editors = from_citeproc(Array.wrap(metadata.fetch("editor", nil)))
80
- get_authors(editors)
81
- end
82
-
83
- def description
84
- { "text" => metadata.fetch("abstract", nil) }
85
- end
86
-
87
- def version
88
- metadata.fetch("version", nil)
89
- end
90
-
91
- def keywords
92
- metadata.fetch("categories", nil)
93
- end
94
-
95
- def date_published
96
- issued = metadata.fetch("issued", nil)
97
- get_date_from_date_parts(issued)
98
- end
99
-
100
- def publication_year
101
- date_published[0..3].to_i.presence
102
- end
103
-
104
- def is_part_of
105
- if container_title.present?
106
- { "type" => "Periodical",
107
- "name" => container_title,
108
- "issn" => metadata.fetch("ISSN", nil) }.compact
109
- end
110
- end
111
-
112
- def publisher
113
- metadata.fetch("publisher", nil)
114
- end
115
-
116
- def container_title
117
- metadata.fetch("container-title", nil)
118
- end
119
- end
120
- end
@@ -1,153 +0,0 @@
1
- module Bolognese
2
- class Codemeta < Metadata
3
-
4
- def initialize(id: nil, string: nil)
5
- id = normalize_id(id) if id.present?
6
-
7
- if string.present?
8
- @raw = string
9
- elsif id.present?
10
- response = Maremma.get(github_as_codemeta_url(id), raw: true)
11
- @raw = response.body.fetch("data", nil)
12
- end
13
- end
14
-
15
- def metadata
16
- @metadata ||= raw.present? && valid? ? Maremma.from_json(raw) : {}
17
- end
18
-
19
- def exists?
20
- metadata.present?
21
- end
22
-
23
- def errors
24
- jsonlint(raw)
25
- end
26
-
27
- def valid?
28
- errors.empty?
29
- end
30
-
31
- def doi
32
- validate_doi(id)
33
- end
34
-
35
- def id
36
- normalize_id(metadata.fetch("@id", nil) || identifier)
37
- end
38
-
39
- def identifier
40
- metadata.fetch("identifier", nil)
41
- end
42
-
43
- def url
44
- normalize_id(metadata.fetch("codeRepository", nil))
45
- end
46
-
47
- def resource_type_general
48
- SO_TO_DC_TRANSLATIONS[type]
49
- end
50
-
51
- def type
52
- metadata.fetch("@type", nil)
53
- end
54
-
55
- def citeproc_type
56
- "computer_program"
57
- end
58
-
59
- def ris_type
60
- SO_TO_RIS_TRANSLATIONS[type] || "GEN"
61
- end
62
-
63
- def additional_type
64
- metadata.fetch("additionalType", nil)
65
- end
66
-
67
- def bibtex_type
68
- Bolognese::Bibtex::SO_TO_BIB_TRANSLATIONS[type] || "misc"
69
- end
70
-
71
- def title
72
- metadata.fetch("title", nil)
73
- end
74
-
75
- def alternate_name
76
- metadata.fetch("alternateName", nil)
77
- end
78
-
79
- def author
80
- authors = from_schema_org(Array.wrap(metadata.fetch("agents", nil)))
81
- get_authors(authors)
82
- end
83
-
84
- def editor
85
- editors = from_schema_org(Array.wrap(metadata.fetch("editor", nil)))
86
- get_authors(editors)
87
- end
88
-
89
- def description
90
- { "text" => metadata.fetch("description", nil) }
91
- end
92
-
93
- def license
94
- { "id" => metadata.fetch("license", nil) }
95
- end
96
-
97
- def version
98
- metadata.fetch("version", nil)
99
- end
100
-
101
- def keywords
102
- Array.wrap(metadata.fetch("tags", nil)).join(", ").presence
103
- end
104
-
105
- def date_created
106
- metadata.fetch("dateCreated", nil)
107
- end
108
-
109
- def date_published
110
- metadata.fetch("datePublished", nil)
111
- end
112
-
113
- def date_modified
114
- metadata.fetch("dateModified", nil)
115
- end
116
-
117
- def related_identifiers(relation_type)
118
- normalize_ids(ids: metadata.fetch(relation_type, nil), relation_type: relation_type)
119
- end
120
-
121
- def same_as
122
- related_identifiers("isIdenticalTo")
123
- end
124
-
125
- def is_part_of
126
- related_identifiers("isPartOf")
127
- end
128
-
129
- def has_part
130
- related_identifiers("hasPart")
131
- end
132
-
133
- def citation
134
- related_identifiers("citation")
135
- end
136
-
137
- def publisher
138
- metadata.fetch("publisher", nil)
139
- end
140
-
141
- def container_title
142
- if publisher.is_a?(Hash)
143
- publisher.fetch("name", nil)
144
- elsif publisher.is_a?(String)
145
- publisher
146
- end
147
- end
148
-
149
- def provider
150
- metadata.fetch("provider", nil)
151
- end
152
- end
153
- end