dog_biscuits 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
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