dog_biscuits 0.4.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 (272) hide show
  1. checksums.yaml +7 -0
  2. data/.circleci/config.yml +115 -0
  3. data/.codeclimate.yml +52 -0
  4. data/.gitignore +24 -0
  5. data/.rspec +3 -0
  6. data/.rubocop.yml +45 -0
  7. data/.rubocop_todo.yml +92 -0
  8. data/.travis.yml +18 -0
  9. data/CODE_OF_CONDUCT.md +36 -0
  10. data/CONTRIBUTING.md +161 -0
  11. data/Gemfile +40 -0
  12. data/LICENSE +14 -0
  13. data/README.md +98 -0
  14. data/Rakefile +35 -0
  15. data/SUPPORT.md +5 -0
  16. data/bin/console +15 -0
  17. data/bin/setup +7 -0
  18. data/dog_biscuits.gemspec +38 -0
  19. data/lib/dog_biscuits.rb +352 -0
  20. data/lib/dog_biscuits/actors/apply_authorities.rb +32 -0
  21. data/lib/dog_biscuits/actors/singular_attributes.rb +17 -0
  22. data/lib/dog_biscuits/blacklight/commands.rb +118 -0
  23. data/lib/dog_biscuits/configuration.rb +506 -0
  24. data/lib/dog_biscuits/importers/authority.rb +65 -0
  25. data/lib/dog_biscuits/indexers/collection_indexer.rb +10 -0
  26. data/lib/dog_biscuits/indexers/concerns/indexes_common.rb +58 -0
  27. data/lib/dog_biscuits/indexers/conference_item_indexer.rb +17 -0
  28. data/lib/dog_biscuits/indexers/dataset_indexer.rb +25 -0
  29. data/lib/dog_biscuits/indexers/digital_archival_object_indexer.rb +19 -0
  30. data/lib/dog_biscuits/indexers/exam_paper_indexer.rb +10 -0
  31. data/lib/dog_biscuits/indexers/journal_article_indexer.rb +15 -0
  32. data/lib/dog_biscuits/indexers/package_indexer.rb +19 -0
  33. data/lib/dog_biscuits/indexers/published_work_indexer.rb +16 -0
  34. data/lib/dog_biscuits/indexers/thesis_indexer.rb +16 -0
  35. data/lib/dog_biscuits/models/authorities/agent.rb +78 -0
  36. data/lib/dog_biscuits/models/authorities/agents/group.rb +59 -0
  37. data/lib/dog_biscuits/models/authorities/agents/historic_person.rb +55 -0
  38. data/lib/dog_biscuits/models/authorities/agents/organisation.rb +56 -0
  39. data/lib/dog_biscuits/models/authorities/agents/person.rb +75 -0
  40. data/lib/dog_biscuits/models/authorities/concept.rb +91 -0
  41. data/lib/dog_biscuits/models/authorities/concept_scheme.rb +65 -0
  42. data/lib/dog_biscuits/models/authorities/event.rb +74 -0
  43. data/lib/dog_biscuits/models/authorities/place.rb +86 -0
  44. data/lib/dog_biscuits/models/authorities/project.rb +60 -0
  45. data/lib/dog_biscuits/models/authority.rb +42 -0
  46. data/lib/dog_biscuits/models/collections/collection.rb +32 -0
  47. data/lib/dog_biscuits/models/concerns/behaviours/pure_specific_behaviour.rb +17 -0
  48. data/lib/dog_biscuits/models/concerns/behaviours/validate_concept_related.rb +12 -0
  49. data/lib/dog_biscuits/models/concerns/behaviours/validate_concept_scheme.rb +16 -0
  50. data/lib/dog_biscuits/models/concerns/behaviours/validate_label.rb +12 -0
  51. data/lib/dog_biscuits/models/concerns/behaviours/validate_place.rb +12 -0
  52. data/lib/dog_biscuits/models/concerns/behaviours/work_behaviour.rb +21 -0
  53. data/lib/dog_biscuits/models/concerns/extended_solr_document.rb +147 -0
  54. data/lib/dog_biscuits/models/concerns/metadata_properties/archivematica/archivematica.rb +73 -0
  55. data/lib/dog_biscuits/models/concerns/metadata_properties/archives_hub/access_provided_by.rb +14 -0
  56. data/lib/dog_biscuits/models/concerns/metadata_properties/archives_hub/country_code.rb +15 -0
  57. data/lib/dog_biscuits/models/concerns/metadata_properties/archives_hub/hub_dates.rb +17 -0
  58. data/lib/dog_biscuits/models/concerns/metadata_properties/archives_hub/maintenance_agency_code.rb +15 -0
  59. data/lib/dog_biscuits/models/concerns/metadata_properties/bibframe/awarding_institution.rb +13 -0
  60. data/lib/dog_biscuits/models/concerns/metadata_properties/bibframe/edition.rb +13 -0
  61. data/lib/dog_biscuits/models/concerns/metadata_properties/bibframe/identified_by.rb +14 -0
  62. data/lib/dog_biscuits/models/concerns/metadata_properties/bibframe/part.rb +13 -0
  63. data/lib/dog_biscuits/models/concerns/metadata_properties/bibframe/part_of.rb +14 -0
  64. data/lib/dog_biscuits/models/concerns/metadata_properties/bibframe/series.rb +13 -0
  65. data/lib/dog_biscuits/models/concerns/metadata_properties/bibframe/subtitle.rb +14 -0
  66. data/lib/dog_biscuits/models/concerns/metadata_properties/bibo/presented_at.rb +13 -0
  67. data/lib/dog_biscuits/models/concerns/metadata_properties/bibo/publication_status.rb +13 -0
  68. data/lib/dog_biscuits/models/concerns/metadata_properties/datacite/resource_type_general.rb +13 -0
  69. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/abstract.rb +14 -0
  70. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/access_rights.rb +14 -0
  71. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/bibliographic_citation.rb +13 -0
  72. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/contributor.rb +14 -0
  73. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/creator.rb +14 -0
  74. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/date.rb +13 -0
  75. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/date_accepted.rb +13 -0
  76. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/date_available.rb +14 -0
  77. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/date_copyrighted.rb +14 -0
  78. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/date_created.rb +13 -0
  79. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/date_issued.rb +14 -0
  80. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/description.rb +14 -0
  81. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/extent.rb +13 -0
  82. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/format.rb +13 -0
  83. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/identifier.rb +13 -0
  84. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/language.rb +17 -0
  85. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/publisher.rb +14 -0
  86. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/resource_type.rb +13 -0
  87. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/rights.rb +17 -0
  88. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/rights_holder.rb +14 -0
  89. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/simple_versions.rb +18 -0
  90. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/source.rb +13 -0
  91. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/subject.rb +13 -0
  92. data/lib/dog_biscuits/models/concerns/metadata_properties/dwc/event_date.rb +14 -0
  93. data/lib/dog_biscuits/models/concerns/metadata_properties/edm/edm_rights.rb +13 -0
  94. data/lib/dog_biscuits/models/concerns/metadata_properties/fabio/date_collected.rb +15 -0
  95. data/lib/dog_biscuits/models/concerns/metadata_properties/foaf/based_near.rb +12 -0
  96. data/lib/dog_biscuits/models/concerns/metadata_properties/foaf/foaf_name.rb +16 -0
  97. data/lib/dog_biscuits/models/concerns/metadata_properties/frapo/output_of.rb +18 -0
  98. data/lib/dog_biscuits/models/concerns/metadata_properties/geo/geo.rb +27 -0
  99. data/lib/dog_biscuits/models/concerns/metadata_properties/geonames/country_code.rb +15 -0
  100. data/lib/dog_biscuits/models/concerns/metadata_properties/geonames/place_properties.rb +66 -0
  101. data/lib/dog_biscuits/models/concerns/metadata_properties/lc_identifiers/doi.rb +13 -0
  102. data/lib/dog_biscuits/models/concerns/metadata_properties/lc_identifiers/isbn.rb +13 -0
  103. data/lib/dog_biscuits/models/concerns/metadata_properties/lc_identifiers/official_url.rb +13 -0
  104. data/lib/dog_biscuits/models/concerns/metadata_properties/lc_identifiers/orcid.rb +13 -0
  105. data/lib/dog_biscuits/models/concerns/metadata_properties/local/for_indexing.rb +14 -0
  106. data/lib/dog_biscuits/models/concerns/metadata_properties/local/former_identifier.rb +13 -0
  107. data/lib/dog_biscuits/models/concerns/metadata_properties/local/generic_authority_terms.rb +22 -0
  108. data/lib/dog_biscuits/models/concerns/metadata_properties/local/generic_qualifier.rb +16 -0
  109. data/lib/dog_biscuits/models/concerns/metadata_properties/local/last_access.rb +15 -0
  110. data/lib/dog_biscuits/models/concerns/metadata_properties/local/main_file.rb +24 -0
  111. data/lib/dog_biscuits/models/concerns/metadata_properties/local/module_code.rb +13 -0
  112. data/lib/dog_biscuits/models/concerns/metadata_properties/local/number_of_downloads.rb +14 -0
  113. data/lib/dog_biscuits/models/concerns/metadata_properties/local/packaged_by.rb +13 -0
  114. data/lib/dog_biscuits/models/concerns/metadata_properties/local/readme_file.rb +26 -0
  115. data/lib/dog_biscuits/models/concerns/metadata_properties/local/requestor_email.rb +13 -0
  116. data/lib/dog_biscuits/models/concerns/metadata_properties/mads/related_authority.rb +14 -0
  117. data/lib/dog_biscuits/models/concerns/metadata_properties/marc_relators/advisor.rb +14 -0
  118. data/lib/dog_biscuits/models/concerns/metadata_properties/marc_relators/editor.rb +14 -0
  119. data/lib/dog_biscuits/models/concerns/metadata_properties/marc_relators/funder.rb +13 -0
  120. data/lib/dog_biscuits/models/concerns/metadata_properties/marc_relators/place_of_publication.rb +13 -0
  121. data/lib/dog_biscuits/models/concerns/metadata_properties/mods/date_valid.rb +14 -0
  122. data/lib/dog_biscuits/models/concerns/metadata_properties/owl/owl_same_as.rb +13 -0
  123. data/lib/dog_biscuits/models/concerns/metadata_properties/premis/has_restriction.rb +15 -0
  124. data/lib/dog_biscuits/models/concerns/metadata_properties/property_sets/person_properties.rb +92 -0
  125. data/lib/dog_biscuits/models/concerns/metadata_properties/pure/managing_organisation.rb +14 -0
  126. data/lib/dog_biscuits/models/concerns/metadata_properties/pure/pure.rb +28 -0
  127. data/lib/dog_biscuits/models/concerns/metadata_properties/rdf/rdf_type.rb +12 -0
  128. data/lib/dog_biscuits/models/concerns/metadata_properties/rdf/rdfs_label.rb +14 -0
  129. data/lib/dog_biscuits/models/concerns/metadata_properties/rdf/related_url.rb +13 -0
  130. data/lib/dog_biscuits/models/concerns/metadata_properties/schema/alternate_name.rb +13 -0
  131. data/lib/dog_biscuits/models/concerns/metadata_properties/schema/content_version.rb +13 -0
  132. data/lib/dog_biscuits/models/concerns/metadata_properties/schema/date_published.rb +13 -0
  133. data/lib/dog_biscuits/models/concerns/metadata_properties/schema/date_updated.rb +13 -0
  134. data/lib/dog_biscuits/models/concerns/metadata_properties/schema/department.rb +13 -0
  135. data/lib/dog_biscuits/models/concerns/metadata_properties/schema/end_date.rb +13 -0
  136. data/lib/dog_biscuits/models/concerns/metadata_properties/schema/issue_number.rb +13 -0
  137. data/lib/dog_biscuits/models/concerns/metadata_properties/schema/keyword.rb +13 -0
  138. data/lib/dog_biscuits/models/concerns/metadata_properties/schema/location.rb +13 -0
  139. data/lib/dog_biscuits/models/concerns/metadata_properties/schema/pagination.rb +13 -0
  140. data/lib/dog_biscuits/models/concerns/metadata_properties/schema/start_date.rb +13 -0
  141. data/lib/dog_biscuits/models/concerns/metadata_properties/schema/volume_number.rb +13 -0
  142. data/lib/dog_biscuits/models/concerns/metadata_properties/skos/skos_labels.rb +18 -0
  143. data/lib/dog_biscuits/models/concerns/metadata_properties/skos/skos_note.rb +13 -0
  144. data/lib/dog_biscuits/models/concerns/metadata_properties/skos/skos_related.rb +13 -0
  145. data/lib/dog_biscuits/models/concerns/metadata_properties/uketd/date_of_award.rb +13 -0
  146. data/lib/dog_biscuits/models/concerns/metadata_properties/uketd/qualification.rb +17 -0
  147. data/lib/dog_biscuits/models/concerns/metadata_properties/ulcc/date_submitted.rb +14 -0
  148. data/lib/dog_biscuits/models/concerns/metadata_properties/ulcc/official_url.rb +13 -0
  149. data/lib/dog_biscuits/models/concerns/metadata_properties/ulcc/refereed.rb +13 -0
  150. data/lib/dog_biscuits/models/concerns/model_property_sets/common/common_labels.rb +9 -0
  151. data/lib/dog_biscuits/models/concerns/model_property_sets/common/common_metadata.rb +64 -0
  152. data/lib/dog_biscuits/models/concerns/model_property_sets/common/common_rights.rb +10 -0
  153. data/lib/dog_biscuits/models/concerns/model_property_sets/conference_item_metadata.rb +24 -0
  154. data/lib/dog_biscuits/models/concerns/model_property_sets/dataset_metadata.rb +36 -0
  155. data/lib/dog_biscuits/models/concerns/model_property_sets/digital_archival_object_metadata.rb +13 -0
  156. data/lib/dog_biscuits/models/concerns/model_property_sets/exam_paper_metadata.rb +14 -0
  157. data/lib/dog_biscuits/models/concerns/model_property_sets/journal_article_metadata.rb +24 -0
  158. data/lib/dog_biscuits/models/concerns/model_property_sets/package_metadata.rb +13 -0
  159. data/lib/dog_biscuits/models/concerns/model_property_sets/published_work_metadata.rb +26 -0
  160. data/lib/dog_biscuits/models/concerns/model_property_sets/thesis_metadata.rb +17 -0
  161. data/lib/dog_biscuits/models/filesets/file_set.rb +30 -0
  162. data/lib/dog_biscuits/models/to_refactor_or_remove/canvas.rb +15 -0
  163. data/lib/dog_biscuits/models/to_refactor_or_remove/contained_file.rb +13 -0
  164. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_date_certainty.rb +5 -0
  165. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_editorial_note.rb +5 -0
  166. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_entry.rb +19 -0
  167. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_entry_date.rb +10 -0
  168. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_entry_type.rb +5 -0
  169. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_is_referenced_by.rb +5 -0
  170. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_language.rb +5 -0
  171. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_marginalium.rb +5 -0
  172. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_note.rb +5 -0
  173. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_person_as_written.rb +5 -0
  174. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_person_descriptor.rb +5 -0
  175. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_person_descriptor_as_written.rb +5 -0
  176. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_person_note.rb +5 -0
  177. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_person_related_person.rb +5 -0
  178. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_person_related_place.rb +5 -0
  179. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_person_role.rb +5 -0
  180. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_place_as_written.rb +5 -0
  181. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_place_note.rb +5 -0
  182. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_place_role.rb +5 -0
  183. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_place_type.rb +5 -0
  184. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_related_agent.rb +20 -0
  185. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_related_place.rb +13 -0
  186. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_section_type.rb +5 -0
  187. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_single_date.rb +10 -0
  188. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_subject.rb +5 -0
  189. data/lib/dog_biscuits/models/to_refactor_or_remove/entry.rb +59 -0
  190. data/lib/dog_biscuits/models/to_refactor_or_remove/entry/entry_date.rb +17 -0
  191. data/lib/dog_biscuits/models/to_refactor_or_remove/entry/related_agent.rb +62 -0
  192. data/lib/dog_biscuits/models/to_refactor_or_remove/entry/related_place.rb +28 -0
  193. data/lib/dog_biscuits/models/to_refactor_or_remove/entry/single_date.rb +19 -0
  194. data/lib/dog_biscuits/models/to_refactor_or_remove/folio.rb +42 -0
  195. data/lib/dog_biscuits/models/to_refactor_or_remove/image.rb +25 -0
  196. data/lib/dog_biscuits/models/to_refactor_or_remove/manifest.rb +15 -0
  197. data/lib/dog_biscuits/models/to_refactor_or_remove/register.rb +21 -0
  198. data/lib/dog_biscuits/models/work.rb +37 -0
  199. data/lib/dog_biscuits/models/works/conference_item.rb +37 -0
  200. data/lib/dog_biscuits/models/works/dataset.rb +42 -0
  201. data/lib/dog_biscuits/models/works/digital_archival_object.rb +28 -0
  202. data/lib/dog_biscuits/models/works/exam_paper.rb +33 -0
  203. data/lib/dog_biscuits/models/works/journal_article.rb +37 -0
  204. data/lib/dog_biscuits/models/works/package.rb +47 -0
  205. data/lib/dog_biscuits/models/works/published_work.rb +38 -0
  206. data/lib/dog_biscuits/models/works/thesis.rb +34 -0
  207. data/lib/dog_biscuits/property_mappings/property_mappings.rb +585 -0
  208. data/lib/dog_biscuits/railtie.rb +13 -0
  209. data/lib/dog_biscuits/services/table_based_authority_extended.rb +10 -0
  210. data/lib/dog_biscuits/services/terms.rb +57 -0
  211. data/lib/dog_biscuits/services/terms_service.rb +162 -0
  212. data/lib/dog_biscuits/solr/index_types.rb +33 -0
  213. data/lib/dog_biscuits/validators/concept_related_validator.rb +13 -0
  214. data/lib/dog_biscuits/validators/concept_scheme_member_validator.rb +10 -0
  215. data/lib/dog_biscuits/validators/label_validator.rb +55 -0
  216. data/lib/dog_biscuits/validators/place_validator.rb +10 -0
  217. data/lib/dog_biscuits/version.rb +5 -0
  218. data/lib/dog_biscuits/vocab/borthwick_registers.rb +321 -0
  219. data/lib/dog_biscuits/vocab/generic.rb +204 -0
  220. data/lib/dog_biscuits/vocab/oais_archivematica.rb +116 -0
  221. data/lib/dog_biscuits/vocab/pure_terms.rb +65 -0
  222. data/lib/dog_biscuits/vocab/uketd.rb +45 -0
  223. data/lib/dog_biscuits/vocab/ulcc_terms.rb +55 -0
  224. data/lib/generators/dog_biscuits/USAGE +50 -0
  225. data/lib/generators/dog_biscuits/authority_generator.rb +55 -0
  226. data/lib/generators/dog_biscuits/catalog_generator.rb +18 -0
  227. data/lib/generators/dog_biscuits/dates_generator.rb +98 -0
  228. data/lib/generators/dog_biscuits/generate_all_generator.rb +29 -0
  229. data/lib/generators/dog_biscuits/imagify_generator.rb +67 -0
  230. data/lib/generators/dog_biscuits/install_generator.rb +82 -0
  231. data/lib/generators/dog_biscuits/locales_generator.rb +20 -0
  232. data/lib/generators/dog_biscuits/schema_org_generator.rb +20 -0
  233. data/lib/generators/dog_biscuits/templates/_date_template.html.erb +7 -0
  234. data/lib/generators/dog_biscuits/templates/app/controllers/catalog_controller.rb +133 -0
  235. data/lib/generators/dog_biscuits/templates/app/helpers/dog_biscuits_helper.rb +43 -0
  236. data/lib/generators/dog_biscuits/templates/app/renderers/package_ids_renderer.rb +13 -0
  237. data/lib/generators/dog_biscuits/templates/app/renderers/packaged_by_ids_renderer.rb +11 -0
  238. data/lib/generators/dog_biscuits/templates/app/renderers/publication_status_renderer.rb +16 -0
  239. data/lib/generators/dog_biscuits/templates/app/services/concerns/file_authority_concern.rb +14 -0
  240. data/lib/generators/dog_biscuits/templates/app/services/concerns/local_authority_concern.rb +18 -0
  241. data/lib/generators/dog_biscuits/templates/app/services/local_form_metadata_service.rb +15 -0
  242. data/lib/generators/dog_biscuits/templates/app/views/hyrax/base/_form_metadata.html.erb +23 -0
  243. data/lib/generators/dog_biscuits/templates/app/views/records/edit_fields/_abstract.html.erb +5 -0
  244. data/lib/generators/dog_biscuits/templates/app/views/records/edit_fields/_default.html.erb +6 -0
  245. data/lib/generators/dog_biscuits/templates/app/views/records/edit_fields/_funder.html.erb +8 -0
  246. data/lib/generators/dog_biscuits/templates/app/views/records/edit_fields/_note.html.erb +5 -0
  247. data/lib/generators/dog_biscuits/templates/app/views/records/edit_fields/_part_of.html.erb +17 -0
  248. data/lib/generators/dog_biscuits/templates/app/views/records/edit_fields/_publication_status.html.erb +6 -0
  249. data/lib/generators/dog_biscuits/templates/app/views/records/edit_fields/_refereed.html.erb +5 -0
  250. data/lib/generators/dog_biscuits/templates/app/views/records/edit_fields/_resource_type_general.html.erb +2 -0
  251. data/lib/generators/dog_biscuits/templates/authority_service.rb.erb +25 -0
  252. data/lib/generators/dog_biscuits/templates/config/authorities/content_versions.yml +25 -0
  253. data/lib/generators/dog_biscuits/templates/config/authorities/publication_statuses.yml +19 -0
  254. data/lib/generators/dog_biscuits/templates/config/authorities/qualification_levels.yml +13 -0
  255. data/lib/generators/dog_biscuits/templates/config/authorities/qualification_names.yml +31 -0
  256. data/lib/generators/dog_biscuits/templates/config/authorities/resource_type_generals.yml +47 -0
  257. data/lib/generators/dog_biscuits/templates/config/dog_biscuits.yml +3 -0
  258. data/lib/generators/dog_biscuits/templates/config/initializers/catalog_search_builder_overrides.rb +18 -0
  259. data/lib/generators/dog_biscuits/templates/config/initializers/dog_biscuits.rb +144 -0
  260. data/lib/generators/dog_biscuits/templates/dog_biscuits.en.yml.erb +11 -0
  261. data/lib/generators/dog_biscuits/templates/schema_org.yml.erb +4 -0
  262. data/lib/generators/dog_biscuits/work/USAGE +35 -0
  263. data/lib/generators/dog_biscuits/work/templates/README +31 -0
  264. data/lib/generators/dog_biscuits/work/templates/_attribute_rows.html.erb +22 -0
  265. data/lib/generators/dog_biscuits/work/templates/actor.rb.erb +25 -0
  266. data/lib/generators/dog_biscuits/work/templates/form.rb.erb +18 -0
  267. data/lib/generators/dog_biscuits/work/templates/indexer.rb.erb +23 -0
  268. data/lib/generators/dog_biscuits/work/templates/model.rb.erb +16 -0
  269. data/lib/generators/dog_biscuits/work/templates/presenter.rb.erb +20 -0
  270. data/lib/generators/dog_biscuits/work/work_generator.rb +102 -0
  271. data/lib/tasks/authorities.rake +22 -0
  272. metadata +476 -0
@@ -0,0 +1,56 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DogBiscuits
4
+ class Organisation < DogBiscuits::Agent
5
+ # Local
6
+ include DogBiscuits::GenericQualifier
7
+ include DogBiscuits::CountryCode
8
+ include DogBiscuits::MaintenanceAgencyCode
9
+ include DogBiscuits::HubDates
10
+ include DogBiscuits::Pure
11
+ include DogBiscuits::PureSpecificBehaviour
12
+ include DogBiscuits::RdfType
13
+
14
+ type [::RDF::Vocab::FOAF.Agent,
15
+ ::RDF::Vocab::FOAF.Organization]
16
+
17
+ def concept?
18
+ false
19
+ end
20
+
21
+ def concept_scheme?
22
+ false
23
+ end
24
+
25
+ def group?
26
+ false
27
+ end
28
+
29
+ def organisation?
30
+ true
31
+ end
32
+
33
+ def person?
34
+ false
35
+ end
36
+
37
+ def place?
38
+ false
39
+ end
40
+
41
+ def project?
42
+ false
43
+ end
44
+
45
+ # Generate a preflabel from the name parts. Overwrite the existing preflabel.
46
+ def add_label
47
+ label = ''
48
+ label += ", #{name}" if name.present?
49
+ label += ", #{dates}" if dates.present?
50
+ label += ", #{qualifier}" if qualifier.present?
51
+ label = label.sub(', ', '') if label.starts_with? ', '
52
+ self.rdfs_label = label
53
+ add_preflabel
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,75 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DogBiscuits
4
+ class Person < DogBiscuits::Agent
5
+ # HyBox
6
+ include DogBiscuits::AlternateName
7
+ include DogBiscuits::PersonProperties
8
+ # Additional
9
+ include DogBiscuits::HubDates
10
+ include DogBiscuits::Pure # Metadata from PURE web service
11
+ include DogBiscuits::PureSpecificBehaviour # Behaviour for dealing with PURE records
12
+ include DogBiscuits::RdfType
13
+ include DogBiscuits::Orcid
14
+
15
+ type [::RDF::Vocab::FOAF.Agent,
16
+ ::RDF::Vocab::FOAF.Person]
17
+
18
+ def concept?
19
+ false
20
+ end
21
+
22
+ def concept_scheme?
23
+ false
24
+ end
25
+
26
+ def group?
27
+ false
28
+ end
29
+
30
+ def organisation?
31
+ false
32
+ end
33
+
34
+ def person?
35
+ true
36
+ end
37
+
38
+ def place?
39
+ false
40
+ end
41
+
42
+ def project?
43
+ false
44
+ end
45
+
46
+ # Generate dates string from birth/death.
47
+ def add_dates
48
+ dt = ''
49
+ dt += "#{birth_date}-" if birth_date.present?
50
+ dt += death_date if death_date.present?
51
+ self.dates = dt if dt.present?
52
+ end
53
+
54
+ # Generate the name from parts.
55
+ def add_name
56
+ nm = ''
57
+ nm += prefix if prefix.present?
58
+ nm += " #{given_name}" if given_name.present?
59
+ nm += " #{family_name}" if family_name.present?
60
+ nm += " #{suffix}" if suffix.present?
61
+ nm = nm.sub(' ', '') if nm.starts_with? ' '
62
+ self.name = nm if nm.present?
63
+ end
64
+
65
+ # Generate a rdfs label from the name parts. Overwrite the existing label.
66
+ def add_label
67
+ add_name
68
+ add_dates
69
+ label = name if name.present?
70
+ label += ", #{dates}" if name.present? && dates.present?
71
+ self.rdfs_label = label
72
+ add_preflabel
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,91 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DogBiscuits
4
+ class Concept < Authority
5
+ include DogBiscuits::GenericAuthorityTerms
6
+ include DogBiscuits::OwlSameAs
7
+ include DogBiscuits::SkosRelated
8
+ include DogBiscuits::ValidateConceptRelated
9
+
10
+ # Use for nested schemes.
11
+ has_and_belongs_to_many :top_concept_of,
12
+ class_name: 'DogBiscuits::ConceptScheme',
13
+ predicate: ::RDF::Vocab::SKOS.topConceptOf,
14
+ inverse_of: :has_top_concept
15
+
16
+ # Use only for Broader. Narrower will be added by default as the inverse.
17
+ has_and_belongs_to_many :broader,
18
+ class_name: 'DogBiscuits::Concept',
19
+ predicate: ::RDF::Vocab::SKOS.broader,
20
+ inverse_of: :narrower
21
+ has_and_belongs_to_many :narrower,
22
+ class_name: 'DogBiscuits::Concept',
23
+ predicate: ::RDF::Vocab::SKOS.narrower,
24
+ inverse_of: :broader
25
+
26
+ # MUST NOT be the same as broader/narrower; validator in place
27
+ has_and_belongs_to_many :related,
28
+ class_name: 'DogBiscuits::Concept',
29
+ predicate: ::RDF::Vocab::SKOS.related,
30
+ inverse_of: :related
31
+
32
+ type [::RDF::URI.intern('http://www.w3.org/2004/02/skos/core#Concept')]
33
+
34
+ property :definition, predicate: ::RDF::Vocab::SKOS.definition,
35
+ multiple: false do |index|
36
+ index.as :stored_searchable
37
+ end
38
+
39
+ property :exact_match, predicate: ::RDF::Vocab::SKOS.exactMatch do |index|
40
+ index.as :stored_searchable
41
+ end
42
+
43
+ property :close_match, predicate: ::RDF::Vocab::SKOS.closeMatch do |index|
44
+ index.as :stored_searchable
45
+ end
46
+
47
+ def agent?
48
+ false
49
+ end
50
+
51
+ def concept?
52
+ true
53
+ end
54
+
55
+ def concept_scheme?
56
+ false
57
+ end
58
+
59
+ def event?
60
+ false
61
+ end
62
+
63
+ def group?
64
+ false
65
+ end
66
+
67
+ def organisation?
68
+ false
69
+ end
70
+
71
+ def person?
72
+ false
73
+ end
74
+
75
+ def place?
76
+ false
77
+ end
78
+
79
+ def project?
80
+ false
81
+ end
82
+
83
+ def topconcept?
84
+ if top_concept_of.first.is_a? DogBiscuits::ConceptScheme
85
+ true
86
+ else
87
+ false
88
+ end
89
+ end
90
+ end
91
+ end
@@ -0,0 +1,65 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DogBiscuits
4
+ class ConceptScheme < Authority
5
+ include DogBiscuits::Description
6
+
7
+ has_many :concepts, class_name: 'DogBiscuits::Concept', inverse_of: :concept_scheme
8
+ has_many :organisations, class_name: 'DogBiscuits::Organisation', inverse_of: :concept_scheme
9
+ has_many :departments, class_name: 'DogBiscuits::Organisation', inverse_of: :concept_scheme
10
+ has_many :people, class_name: 'DogBiscuits::Person', inverse_of: :concept_scheme
11
+ has_many :places, class_name: 'DogBiscuits::Place', inverse_of: :concept_scheme
12
+ has_many :groups, class_name: 'DogBiscuits::Group', inverse_of: :concept_scheme
13
+ has_many :projects, class_name: 'DogBiscuits::Project', inverse_of: :concept_scheme
14
+
15
+ # Used for nested schemes. Will be added automatically via inverse.
16
+ has_and_belongs_to_many :has_top_concept,
17
+ class_name: 'DogBiscuits::Concept',
18
+ predicate: ::RDF::Vocab::SKOS.hasTopConcept,
19
+ inverse_of: :top_concept_of
20
+
21
+ type [::RDF::URI.new('http://www.w3.org/2004/02/skos/core#ConceptScheme')]
22
+
23
+ def agent?
24
+ false
25
+ end
26
+
27
+ def concept?
28
+ false
29
+ end
30
+
31
+ def concept_scheme?
32
+ true
33
+ end
34
+
35
+ def event?
36
+ false
37
+ end
38
+
39
+ def group?
40
+ false
41
+ end
42
+
43
+ def organisation?
44
+ false
45
+ end
46
+
47
+ def person?
48
+ false
49
+ end
50
+
51
+ def place?
52
+ false
53
+ end
54
+
55
+ def project?
56
+ false
57
+ end
58
+
59
+ # Ensure rdfs label and pref label and the same.
60
+ def add_label
61
+ self.rdfs_label = preflabel if preflabel.present?
62
+ self.preflabel = rdfs_label if rdfs_label.present?
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,74 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DogBiscuits
4
+ class Event < Authority
5
+ include DogBiscuits::FoafName
6
+ include DogBiscuits::GenericAuthorityTerms
7
+ include DogBiscuits::Identifier
8
+ include DogBiscuits::Funder
9
+ include DogBiscuits::StartDate
10
+ include DogBiscuits::EndDate
11
+ include DogBiscuits::Location
12
+
13
+ type [::RDF::URI.new('http://schema.org/Event')]
14
+
15
+ def agent?
16
+ false
17
+ end
18
+
19
+ def concept?
20
+ false
21
+ end
22
+
23
+ def concept_scheme?
24
+ false
25
+ end
26
+
27
+ def group?
28
+ false
29
+ end
30
+
31
+ def organisation?
32
+ false
33
+ end
34
+
35
+ def person?
36
+ false
37
+ end
38
+
39
+ def place?
40
+ false
41
+ end
42
+
43
+ def project?
44
+ false
45
+ end
46
+
47
+ def event?
48
+ true
49
+ end
50
+
51
+ # Generate a rdfs label from the name parts. Overwrite the existing label.
52
+ def add_label
53
+ self.rdfs_label = name if name.present?
54
+ if start_date.present? && end_date.present?
55
+ self.rdfs_label += " (#{start_date.first} - #{end_date.first})"
56
+ elsif start_date.present?
57
+ self.rdfs_label += " (#{start_date.first})"
58
+ elsif end_date.present?
59
+ self.rdfs_label += " (#{end_date.first})"
60
+ end
61
+ add_preflabel
62
+ end
63
+
64
+ # Generate a preflabel from rdfs label.
65
+ def add_preflabel
66
+ self.preflabel = rdfs_label
67
+ end
68
+
69
+ id_blank = proc { |attributes| attributes[:id].blank? }
70
+ class_attribute :controlled_properties
71
+ self.controlled_properties = [:location]
72
+ accepts_nested_attributes_for :location, reject_if: id_blank, allow_destroy: true
73
+ end
74
+ end
@@ -0,0 +1,86 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DogBiscuits
4
+ class Place < Authority
5
+ include DogBiscuits::PlaceProperties
6
+ include DogBiscuits::CountryCode
7
+ include DogBiscuits::Geo
8
+ include DogBiscuits::OwlSameAs
9
+ include DogBiscuits::RelatedAuthority
10
+ include DogBiscuits::GenericAuthorityTerms
11
+
12
+ include DogBiscuits::ValidatePlace
13
+
14
+ # Possible alternative approach to parent_ADMx
15
+ # has_and_belongs_to_many :contained_in_place,
16
+ # class_name: 'DogBiscuits::Place',
17
+ # predicate: ::RDF::URI.new('https://schema.org/containedInPlace'),
18
+ # inverse_of: :contains_place
19
+ # has_and_belongs_to_many :contains_place,
20
+ # class_name: 'DogBiscuits::Place',
21
+ # predicate: ::RDF::URI.new('https://schema.org/containsPlace'),
22
+ # inverse_of: :contained_in_place
23
+
24
+ type [::RDF::Vocab::SCHEMA.Place,
25
+ ::RDF::Vocab::EDM.Place]
26
+
27
+ def agent?
28
+ false
29
+ end
30
+
31
+ def concept?
32
+ false
33
+ end
34
+
35
+ def concept_scheme?
36
+ false
37
+ end
38
+
39
+ def event?
40
+ false
41
+ end
42
+
43
+ def group?
44
+ false
45
+ end
46
+
47
+ def organisation?
48
+ false
49
+ end
50
+
51
+ def person?
52
+ false
53
+ end
54
+
55
+ def place?
56
+ true
57
+ end
58
+
59
+ def project?
60
+ false
61
+ end
62
+
63
+ # Generate a rdfs label from the name parts. Overwrite the existing label.
64
+ def add_label
65
+ label = place_name
66
+ label = add_adm_parts(label)
67
+ label += ", #{parent_country}" if parent_country.present?
68
+ self.rdfs_label = label
69
+ add_preflabel
70
+ end
71
+
72
+ # Generate a parent parts.
73
+ def add_adm_parts(label)
74
+ label += ", #{parent_ADM4}" if parent_ADM4.present?
75
+ label += ", #{parent_ADM3}" if parent_ADM3.present?
76
+ label += ", #{parent_ADM2}" if parent_ADM2.present?
77
+ label += ", #{parent_ADM1}" if parent_ADM1.present?
78
+ label
79
+ end
80
+
81
+ # Generate a preflabel from rdfs label.
82
+ def add_preflabel
83
+ self.preflabel = rdfs_label
84
+ end
85
+ end
86
+ end