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,60 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DogBiscuits
4
+ class Project < Authority
5
+ include DogBiscuits::FoafName
6
+ include DogBiscuits::GenericAuthorityTerms
7
+ include DogBiscuits::Identifier
8
+ include DogBiscuits::Funder
9
+
10
+ type [::RDF::URI.new('http://xmlns.com/foaf/0.1/Project')]
11
+
12
+ def agent?
13
+ false
14
+ end
15
+
16
+ def concept?
17
+ false
18
+ end
19
+
20
+ def concept_scheme?
21
+ false
22
+ end
23
+
24
+ def event?
25
+ false
26
+ end
27
+
28
+ def group?
29
+ false
30
+ end
31
+
32
+ def organisation?
33
+ false
34
+ end
35
+
36
+ def person?
37
+ false
38
+ end
39
+
40
+ def place?
41
+ false
42
+ end
43
+
44
+ def project?
45
+ true
46
+ end
47
+
48
+ # Generate a rdfs label from the name parts. Overwrite the existing label.
49
+ def add_label
50
+ self.rdfs_label = name if name.present?
51
+ self.rdfs_label += " (id: #{identifier.join})" if identifier.present?
52
+ add_preflabel
53
+ end
54
+
55
+ # Generate a preflabel from rdfs label.
56
+ def add_preflabel
57
+ self.preflabel = rdfs_label
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DogBiscuits
4
+ # All authority classes inherit from this.
5
+ class Authority < ActiveFedora::Base
6
+ include DogBiscuits::CommonLabels
7
+ include DogBiscuits::SkosNote
8
+ include DogBiscuits::ValidateLabel
9
+
10
+ before_save :add_label
11
+
12
+ belongs_to :concept_scheme,
13
+ class_name: 'DogBiscuits::ConceptScheme',
14
+ predicate: ::RDF::Vocab::SKOS.inScheme
15
+
16
+ def authority?
17
+ true
18
+ end
19
+
20
+ def work?
21
+ false
22
+ end
23
+
24
+ def file_set?
25
+ false
26
+ end
27
+
28
+ def collection?
29
+ false
30
+ end
31
+
32
+ def edit_groups
33
+ ['admin']
34
+ end
35
+
36
+ # Ensure rdfs label and pref label and the same. Prefer preflabel.
37
+ def add_label
38
+ self.rdfs_label = preflabel if preflabel.present?
39
+ self.preflabel = rdfs_label if rdfs_label.present?
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DogBiscuits
4
+ class Collection < ActiveFedora::Base
5
+ include ::Hyrax::CollectionBehavior
6
+ include DogBiscuits::CommonMetadata
7
+
8
+ def authority?
9
+ false
10
+ end
11
+
12
+ def agent?
13
+ false
14
+ end
15
+
16
+ def work?
17
+ false
18
+ end
19
+
20
+ def file_set?
21
+ false
22
+ end
23
+
24
+ def collection?
25
+ true
26
+ end
27
+
28
+ def self.indexer
29
+ CollectionIndexer
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DogBiscuits
4
+ # Behaviour only used where data is being pulled in from the PURE CRIS system.
5
+ module PureSpecificBehaviour
6
+ extend ActiveSupport::Concern
7
+
8
+ included do
9
+ before_save :add_pure_type
10
+
11
+ def add_pure_type
12
+ rdf_type << DogBiscuits::Vocab::PureTerms.Organisation unless pure_uuid.nil? && organisation?
13
+ rdf_type << DogBiscuits::Vocab::PureTerms.Person unless pure_uuid.nil? && person?
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DogBiscuits
4
+ # Validate see also references.
5
+ module ValidateConceptRelated
6
+ extend ActiveSupport::Concern
7
+
8
+ included do
9
+ validates_with DogBiscuits::ConceptRelatedValidator
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DogBiscuits
4
+ # Validates members of a concept scheme.
5
+ module ValidateConceptScheme
6
+ extend ActiveSupport::Concern
7
+
8
+ included do
9
+ def self.type_validator
10
+ Hydra::PCDM::Validators::CompositeValidator.new(
11
+ DogBiscuits::ConceptSchemeMemberValidator
12
+ )
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DogBiscuits
4
+ # Validate labels.
5
+ module ValidateLabel
6
+ extend ActiveSupport::Concern
7
+
8
+ included do
9
+ validates_with DogBiscuits::LabelValidator
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DogBiscuits
4
+ # Validate place name.
5
+ module ValidatePlace
6
+ extend ActiveSupport::Concern
7
+
8
+ included do
9
+ validates_with DogBiscuits::PlaceValidator
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DogBiscuits
4
+ module WorkBehaviour
5
+ extend ActiveSupport::Concern
6
+
7
+ # In order to be used, the work classes require various 'Behaviors' from Hyrax
8
+ # In Hyrax, this is included like so:
9
+ # include Hyrax::WorkBehavior
10
+
11
+ # When using these models within a Hyrax application, the WorkBehavior mixin is added to the model
12
+ # We can also include it here, but that means 'double-loading'
13
+ # Also, Hyrax::NestedWorks is one of the mixins included in WorkBehavior and this will cause an error:
14
+ # RuntimeError: Circular dependency detected in calling app
15
+
16
+ # The approach taken is *not* to include behavior within DogBiscuits, but instead leave it to the calling Hyrax
17
+ # application to do so.
18
+
19
+ # For spec tests, these are performed on the generated model in Hyrax *not* on the DogBiscuits model
20
+ end
21
+ end
@@ -0,0 +1,147 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DogBiscuits
4
+ module ExtendedSolrDocument
5
+ extend ActiveSupport::Concern
6
+
7
+ # Duplicated from https://github.com/samvera/hyrax/blob/master/app/models/concerns/hyrax/solr_document/metadata.rb
8
+
9
+ class_methods do
10
+ def attribute(name, type, field)
11
+ define_method name do
12
+ type.coerce(self[field])
13
+ end
14
+ end
15
+
16
+ def solr_name(*args)
17
+ ActiveFedora.index_field_mapper.solr_name(*args)
18
+ end
19
+ end
20
+
21
+ module Solr
22
+ class Array
23
+ # @return [Array]
24
+ def self.coerce(input)
25
+ ::Array.wrap(input)
26
+ end
27
+ end
28
+
29
+ class String
30
+ # @return [String]
31
+ def self.coerce(input)
32
+ ::Array.wrap(input).first
33
+ end
34
+ end
35
+
36
+ class Date
37
+ # @return [Date]
38
+ def self.coerce(input)
39
+ field = String.coerce(input)
40
+ return if field.blank?
41
+ begin
42
+ ::Date.parse(field)
43
+ rescue ArgumentError
44
+ Rails.logger.info "Unable to parse date: #{field.first.inspect}"
45
+ end
46
+ end
47
+ end
48
+ end
49
+
50
+ # Keep these alphebetized; comments indicate those in basic_metadata
51
+ # see https://github.com/samvera/hyrax/blob/master/app/models/concerns/hyrax/solr_document/metadata.rb
52
+ included do
53
+ attribute :abstract, Solr::Array, solr_name('abstract')
54
+ attribute :access_provided_by, Solr::Array, solr_name('access_provided_by')
55
+ attribute :advisor, Solr::Array, solr_name('advisor')
56
+ attribute :alt, Solr::Array, solr_name('alt')
57
+ attribute :awarding_institution, Solr::Array, solr_name('awarding_institution')
58
+ # based_near and based_near
59
+ attribute :content_version, Solr::Array, solr_name('content_version')
60
+ # contributor
61
+ # creator
62
+ attribute :date, Solr::Array, solr_name('date')
63
+ attribute :date_accepted, Solr::Array, solr_name('date_accepted')
64
+ attribute :date_available, Solr::Array, solr_name('date_available')
65
+ attribute :date_collected, Solr::Array, solr_name('date_collected')
66
+ attribute :date_copyrighted, Solr::Array, solr_name('date_copyrighted')
67
+ attribute :date_issued, Solr::Array, solr_name('date_issued')
68
+ # date_created
69
+ attribute :date_of_award, Solr::Array, solr_name('date_of_award')
70
+ attribute :date_published, Solr::Array, solr_name('date_published')
71
+ attribute :date_submitted, Solr::Array, solr_name('date_submitted')
72
+ attribute :date_updated, Solr::Array, solr_name('date_updated')
73
+ attribute :date_valid, Solr::Array, solr_name('date_valid')
74
+ attribute :dc_access_rights, Solr::Array, solr_name('dc_access_rights')
75
+ attribute :department, Solr::Array, solr_name('department')
76
+ # description
77
+ attribute :doi, Solr::Array, solr_name('doi')
78
+ attribute :edition, Solr::Array, solr_name('edition')
79
+ attribute :editor, Solr::Array, solr_name('editor')
80
+ attribute :end_date, Solr::Array, solr_name('end_date')
81
+ attribute :event_date, Solr::Array, solr_name('event_date')
82
+ attribute :extent, Solr::Array, solr_name('extent')
83
+ attribute :dc_format, Solr::Array, solr_name('dc_format')
84
+ attribute :former_identifier, Solr::Array, solr_name('former_identifier')
85
+ attribute :funder, Solr::Array, solr_name('funder')
86
+ attribute :resource_type_general, Solr::Array, solr_name('resource_type_general')
87
+ attribute :has_restriction, Solr::Array, solr_name('has_restriction')
88
+ # rubocop:enable Naming/PredicateName
89
+
90
+ # identifier
91
+ attribute :isbn, Solr::Array, solr_name('isbn')
92
+ attribute :issue_number, Solr::Array, solr_name('issue_number')
93
+ # keyword
94
+ # language
95
+ attribute :last_access, Solr::Array, solr_name('last_access')
96
+ attribute :lat, Solr::Array, solr_name('lat')
97
+ # license
98
+ attribute :location, Solr::Array, solr_name('location')
99
+ attribute :long, Solr::Array, solr_name('long')
100
+ attribute :managing_organisation, Solr::Array, solr_name('managing_organisation')
101
+ attribute :module_code, Solr::Array, solr_name('module_code')
102
+ attribute :note, Solr::Array, solr_name('note')
103
+ attribute :number_of_downloads, Solr::Array, solr_name('last_access')
104
+ attribute :official_url, Solr::Array, solr_name('official_url')
105
+ attribute :output_of, Solr::Array, solr_name('output_of')
106
+ attribute :official_url, Solr::Array, solr_name('official_url')
107
+ attribute :packaged_by_ids, Solr::Array, solr_name('packaged_by_ids', :symbol)
108
+ attribute :package_ids, Solr::Array, solr_name('package_ids', :symbol)
109
+ attribute :pagination, Solr::Array, solr_name('pagination')
110
+ attribute :part, Solr::Array, solr_name('part')
111
+ attribute :place_of_publication, Solr::Array, solr_name('place_of_publication')
112
+ attribute :presented_at, Solr::Array, solr_name('presented_at')
113
+ attribute :part_of, Solr::Array, solr_name('part_of')
114
+ attribute :project, Solr::Array, solr_name('project')
115
+ attribute :publication_status, Solr::Array, solr_name('publication_status')
116
+ # publisher
117
+ attribute :qualification_level, Solr::Array, solr_name('qualification_level')
118
+ attribute :qualification_name, Solr::Array, solr_name('qualification_name')
119
+ attribute :refereed, Solr::Array, solr_name('refereed')
120
+ attribute :related_url, Solr::Array, solr_name('related_url')
121
+ # resource_type
122
+ # rights_statement
123
+ attribute :series, Solr::Array, solr_name('series')
124
+ # source
125
+ attribute :start_date, Solr::Array, solr_name('start_date')
126
+ # subject
127
+ attribute :subtitle, Solr::Array, solr_name('subtitle')
128
+ attribute :volume_number, Solr::Array, solr_name('volume_number')
129
+ # archivematica
130
+ attribute :aip_uuid, Solr::Array, solr_name('aip_uuid')
131
+ attribute :transfer_uuid, Solr::Array, solr_name('transfer_uuid')
132
+ attribute :sip_uuid, Solr::Array, solr_name('sip_uuid')
133
+ attribute :dip_uuid, Solr::Array, solr_name('dip_uuid')
134
+ attribute :aip_status, Solr::Array, solr_name('aip_status')
135
+ attribute :dip_status, Solr::Array, solr_name('dip_status')
136
+ attribute :aip_size, Solr::Array, solr_name('aip_size')
137
+ attribute :dip_size, Solr::Array, solr_name('dip_size')
138
+ attribute :aip_current_path, Solr::Array, solr_name('aip_current_path')
139
+ attribute :dip_current_path, Solr::Array, solr_name('dip_current_path')
140
+ attribute :aip_current_location, Solr::Array, solr_name('aip_current_location')
141
+ attribute :dip_current_location, Solr::Array, solr_name('dip_current_location')
142
+ attribute :aip_resource_uri, Solr::Array, solr_name('aip_resource_uri')
143
+ attribute :dip_resource_uri, Solr::Array, solr_name('dip_resource_uri')
144
+ attribute :origin_pipeline, Solr::Array, solr_name('origin_pipeline')
145
+ end
146
+ end
147
+ end
@@ -0,0 +1,73 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DogBiscuits
4
+ module Archivematica
5
+ extend ActiveSupport::Concern
6
+
7
+ included do
8
+ property :aip_uuid,
9
+ predicate: DogBiscuits::Vocab::OaisArchivematica.aipUuid do |index|
10
+ index.as :stored_searchable
11
+ end
12
+ property :transfer_uuid,
13
+ predicate: DogBiscuits::Vocab::OaisArchivematica.transferUuid do |index|
14
+ index.as :stored_searchable
15
+ end
16
+ property :sip_uuid,
17
+ predicate: DogBiscuits::Vocab::OaisArchivematica.sipUuid do |index|
18
+ index.as :stored_searchable
19
+ end
20
+ property :dip_uuid,
21
+ predicate: DogBiscuits::Vocab::OaisArchivematica.dipUuid do |index|
22
+ index.as :stored_searchable
23
+ end
24
+ property :aip_status,
25
+ predicate: DogBiscuits::Vocab::OaisArchivematica.aipStatus do |index|
26
+ index.as :stored_searchable
27
+ end
28
+ property :dip_status,
29
+ predicate: DogBiscuits::Vocab::OaisArchivematica.dipStatus do |index|
30
+ index.as :stored_searchable
31
+ end
32
+ property :aip_size,
33
+ predicate: DogBiscuits::Vocab::OaisArchivematica.aipSize do |index|
34
+ index.as :stored_searchable
35
+ end
36
+ property :dip_size,
37
+ predicate: DogBiscuits::Vocab::OaisArchivematica.dipSize do |index|
38
+ index.as :stored_searchable
39
+ end
40
+ property :aip_current_path,
41
+ predicate: DogBiscuits::Vocab::OaisArchivematica.aipCurrentPath do |index|
42
+ index.as :stored_searchable
43
+ end
44
+ property :dip_current_path,
45
+ predicate: DogBiscuits::Vocab::OaisArchivematica.dipCurrentPath do |index|
46
+ index.as :stored_searchable
47
+ end
48
+ property :aip_current_location,
49
+ predicate:
50
+ DogBiscuits::Vocab::OaisArchivematica.aipCurrentLocation do |index|
51
+ index.as :stored_searchable
52
+ end
53
+ property :dip_current_location,
54
+ predicate:
55
+ DogBiscuits::Vocab::OaisArchivematica.dipCurrentLocation do |index|
56
+ index.as :stored_searchable
57
+ end
58
+ property :aip_resource_uri,
59
+ predicate: DogBiscuits::Vocab::OaisArchivematica.aipResourceUri do |index|
60
+ index.as :stored_searchable
61
+ end
62
+ property :dip_resource_uri,
63
+ predicate: DogBiscuits::Vocab::OaisArchivematica.dipResourceUri do |index|
64
+ index.as :stored_searchable
65
+ end
66
+ # This will always be the same for both AIP and DIP
67
+ property :origin_pipeline,
68
+ predicate: DogBiscuits::Vocab::OaisArchivematica.originPipeline do |index|
69
+ index.as :stored_searchable
70
+ end
71
+ end
72
+ end
73
+ end