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,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'dog_biscuits'
4
+ require 'rails'
5
+ module DogBiscuits
6
+ class Railtie < Rails::Railtie
7
+ railtie_name :dog_biscuits
8
+
9
+ rake_tasks do
10
+ load "tasks/authorities.rake"
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DogBiscuits
4
+ class TableBasedAuthorityExtended < Qa::Authorities::Local::TableBasedAuthority
5
+ def search(q)
6
+ return [] if q.blank?
7
+ output_set(base_relation.where('lower(label) like ?', "%#{q.downcase}%").limit(25))
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,57 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DogBiscuits
4
+ module Terms
5
+ include Qa::Authorities::WebServiceBase
6
+
7
+ class DepartmentsTerms < TermsService
8
+ def terms_list
9
+ 'departments'
10
+ end
11
+ end
12
+
13
+ class EventsTerms < TermsService
14
+ def terms_list
15
+ 'events'
16
+ end
17
+ end
18
+
19
+ class GroupsTerms < TermsService
20
+ def terms_list
21
+ 'groups'
22
+ end
23
+ end
24
+
25
+ class PeopleTerms < TermsService
26
+ def terms_list
27
+ 'people'
28
+ end
29
+ end
30
+
31
+ class PlacesTerms < TermsService
32
+ def terms_list
33
+ 'places'
34
+ end
35
+ end
36
+
37
+ class OrganisationsTerms < TermsService
38
+ def terms_list
39
+ 'organisations'
40
+ end
41
+ end
42
+
43
+ class ProjectsTerms < TermsService
44
+ def terms_list
45
+ 'projects'
46
+ end
47
+ end
48
+
49
+ # Conflicts with table-based auth registered by hyrax
50
+ # Use concepts instead
51
+ class ConceptsTerms < TermsService
52
+ def terms_list
53
+ 'concepts'
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,162 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DogBiscuits
4
+ class TermsService < Hyrax::QaSelectService
5
+ def initialize(_authority = nil)
6
+ @authority = self
7
+ end
8
+
9
+ # Returns the ConceptScheme id for a given Scheme name
10
+ #
11
+ # @return id of the ConceptScheme object
12
+ def terms_id
13
+ parse_terms_id_response(
14
+ ActiveFedora::SolrService.get(
15
+ "has_model_ssim:\"DogBiscuits::ConceptScheme\" AND preflabel_tesim:\"#{terms_list} \"",
16
+ {}
17
+ )
18
+ )
19
+ end
20
+
21
+ # Returns all items in the authority using preflabel_si to get exact match (string instead of token)
22
+ def all
23
+ sort_order = 'preflabel_si asc'
24
+ parse_authority_response(
25
+ ActiveFedora::SolrService.get(
26
+ "inScheme_ssim:\"#{terms_id}\"",
27
+ fl: 'id,preflabel_tesim,definition_tesim,broader_ssim',
28
+ rows: 1000,
29
+ sort: sort_order
30
+ )
31
+ )
32
+ end
33
+
34
+ # Find an authority term by id
35
+ #
36
+ # @param id [String] for the requested authority term
37
+ # @return [Hash] all info about the authority
38
+ def find(id)
39
+ parse_authority_response(
40
+ ActiveFedora::SolrService.get(
41
+ "id:\"#{id}\"",
42
+ fq: "inScheme_ssim:\"#{terms_id}\"",
43
+ fl: 'id,preflabel_tesim,definition_tesim,broader_ssim',
44
+ rows: 1
45
+ )
46
+ )
47
+ end
48
+
49
+ # Query an authority for a given word or phrase
50
+ #
51
+ # @param q [String] search query
52
+ # @return [Hash] search results
53
+ def search(q)
54
+ parse_authority_response(
55
+ ActiveFedora::SolrService.get(
56
+ "preflabel_tesim:*#{CGI.escape(q)}*",
57
+ fq: "inScheme_ssim:\"#{terms_id}\"",
58
+ fl: 'id,preflabel_tesim,definition_tesim,broader_ssim',
59
+ rows: 1000
60
+ )
61
+ )
62
+ end
63
+
64
+ # Find the id for an authority term using preflabel_si to get exact match (string instead of token)
65
+ #
66
+ # @param term [String] the authority term preflabel
67
+ # @return the term id
68
+ def find_id(term)
69
+ parse_terms_id_response(
70
+ ActiveFedora::SolrService.get(
71
+ "preflabel_si:\"#{term}\"",
72
+ fq: "inScheme_ssim:\"#{terms_id}\"",
73
+ fl: 'id',
74
+ rows: 1
75
+ )
76
+ )
77
+ end
78
+
79
+ # Find the id for an authority term using preflabel and alt_label (use preflabel_si to get exact match (string instead of token))
80
+ #
81
+ # @param term [String] the authority term preflabel or alt_label
82
+ # @return the term id
83
+ def find_id_with_alts(term)
84
+ parse_terms_id_response(
85
+ ActiveFedora::SolrService.get(
86
+ "preflabel_si:\"#{term}\" OR altlabel_tesim:\"#{term}\")",
87
+ fq: "inScheme_ssim:\"#{terms_id}\"",
88
+ fl: 'id',
89
+ rows: 1
90
+ )
91
+ )
92
+ end
93
+
94
+ # Find an authority term by id
95
+ #
96
+ # @param id [String] for the requested authority term
97
+ # @return [String] the preflabel
98
+ def find_label_string(id)
99
+ parse_string(
100
+ ActiveFedora::SolrService.get(
101
+ "id:\"#{id}\"",
102
+ fq: "inScheme_ssim:\"#{terms_id}\"",
103
+ fl: 'preflabel_tesim',
104
+ rows: 1
105
+ )
106
+ )
107
+ end
108
+
109
+ def select_all_options
110
+ all.map { |e| [e[:label], e[:id]] }
111
+ end
112
+
113
+ private
114
+
115
+ # Reformats the data received from the service
116
+ #
117
+ # @param response [SolrResponse] for the Solr query
118
+ # @return [Hash] authority data
119
+ def parse_authority_response(response)
120
+ response['response']['docs'].map do |result|
121
+ hash = {
122
+ id: result['id']
123
+ }
124
+
125
+ hash[:label] = result['preflabel_tesim'].join if result['preflabel_tesim']
126
+ hash[:definition] = result['definition_tesim'].join if result['definition_tesim']
127
+
128
+ # Only add broader where it exists (ie. subjects)
129
+ # Assumes only one broader
130
+ if result['broader_ssim']
131
+ hash[:broader_id] = result['broader_ssim'].join
132
+ hash[:broader_label] = find_label_string(result['broader_ssim'].join).join
133
+ end
134
+ hash
135
+ end
136
+ end
137
+
138
+ # Parse the id from the solr response
139
+ #
140
+ # @param response [SolrResponse] for the Solr query
141
+ # @return [String] id
142
+ def parse_terms_id_response(response)
143
+ id = ''
144
+ response['response']['docs'].map do |result|
145
+ id = result['id']
146
+ end
147
+ id
148
+ end
149
+
150
+ # Parse the preflabel from the solr response
151
+ #
152
+ # @param response [SolrResponse] for the Solr query
153
+ # @return [String] preflabel
154
+ def parse_string(response)
155
+ str = ''
156
+ response['response']['docs'].map do |result|
157
+ str = result['preflabel_tesim']
158
+ end
159
+ str
160
+ end
161
+ end
162
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+ # From JiscRDSS/rdss-samvera
3
+ # https://github.com/JiscRDSS/rdss-samvera/blob/master/willow/lib/solr/concerns/index_types.rb
4
+ # Copyright Jisc
5
+ module DogBiscuits
6
+ module Solr
7
+ module IndexTypes
8
+ extend ActiveSupport::Concern
9
+
10
+ included do
11
+ [:stored_searchable, :stored_sortable, :displayable, :facetable, :symbol].each do |index_type|
12
+ define_singleton_method(index_type) do |*names|
13
+ names.each do |name|
14
+ # use the instance solr_name definition defined in this file unless overridden
15
+ define_method name do |*options|
16
+ solr_value(name, index_type, *options)
17
+ end
18
+ end
19
+ end
20
+
21
+ # Uses the class solr_name definition as defined in Hydra::Controller::ControllerBehaviour and possibly others
22
+ define_singleton_method(index_type.to_s + '_name') do |name, *options|
23
+ ActiveFedora.index_field_mapper.solr_name(name, index_type, *options)
24
+ end
25
+ end
26
+ end
27
+
28
+ def solr_value(name, *options)
29
+ self[solr_name(name.to_s, *options)]
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DogBiscuits
4
+ class ConceptRelatedValidator < ActiveModel::Validator
5
+ def validate(record)
6
+ # related MUST NOT be the same as broader or narrower.
7
+ record.related.each do |s|
8
+ record.broader.collect { |b| record.errors[:related] << "related cannot be the same as broader" if b == s }
9
+ record.narrower.collect { |n| record.errors[:related] << "related cannot be the same as narrower" if n == s }
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DogBiscuits
4
+ class ConceptSchemeMemberValidator
5
+ def self.validate!(_association, record)
6
+ # Only authorities can be members of a concept scheme.
7
+ raise ActiveFedora::AssociationTypeMismatch, "#{record} may not be a member of a concept scheme" unless record.try(:authority?)
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,55 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DogBiscuits
4
+ # Validates that there is a rdfs label/preflabel (authorities) or title (works etc.)
5
+ # FileSet is not validated - title and/or label are optional
6
+ class LabelValidator < ActiveModel::Validator
7
+ def validate(record)
8
+ if record.work?
9
+ validate_title(record)
10
+ elsif record.collection?
11
+ validate_title(record)
12
+ elsif record.authority?
13
+ validate_authority(record)
14
+ end
15
+ end
16
+
17
+ def validate_authority(record)
18
+ if record.concept?
19
+ validate_label(record)
20
+ elsif record.concept_scheme?
21
+ validate_label(record)
22
+ elsif record.project?
23
+ validate_label(record)
24
+ elsif record.agent?
25
+ validate_agent(record)
26
+ elsif record.place?
27
+ validate_place(record)
28
+ end
29
+ end
30
+
31
+ def validate_agent(record)
32
+ if record.person?
33
+ validate_person(record)
34
+ elsif record.rdfs_label.blank? && record.name.blank?
35
+ record.errors[:rdfs_label] << 'You must provide a rdfs label or name for agents'
36
+ end
37
+ end
38
+
39
+ def validate_person(record)
40
+ record.errors[:rdfs_label] << 'You must provide a rdfs label or name for people' if record.rdfs_label.blank? && record.given_name.blank? && record.family_name.blank? && record.name.blank?
41
+ end
42
+
43
+ def validate_place(record)
44
+ record.errors[:rdfs_label] << 'You must provide a rdfs label or name for places' if record.rdfs_label.blank? && record.place_name.blank?
45
+ end
46
+
47
+ def validate_title(record)
48
+ record.errors[:title] << 'You must provide a title' if record.title.blank?
49
+ end
50
+
51
+ def validate_label(record)
52
+ record.errors[:rdfs_label] << 'You must provide a preflabel or rdfs label' if record.preflabel.blank? && record.rdfs_label.blank?
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DogBiscuits
4
+ # Validates that there is a place name
5
+ class PlaceValidator < ActiveModel::Validator
6
+ def validate(record)
7
+ record.errors[:place_name] << 'You must provide a place name' if record.place_name.blank?
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DogBiscuits
4
+ VERSION = '0.4.0'
5
+ end
@@ -0,0 +1,321 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rdf'
4
+ module DogBiscuits
5
+ module Vocab
6
+ class BorthwickRegisters < RDF::Vocabulary('http://dlib.york.ac.uk/ontologies/borthwick-registers#')
7
+ # Class definitions
8
+ term :SingleDate,
9
+ label: 'Single Date',
10
+ comment: 'A single date, not a range.',
11
+ 'rdf:isDefinedBy' => 'http://dlib.york.ac.uk/ontologies/borthwick-registers#'
12
+
13
+ term :EntryDate,
14
+ label: 'Entry Date',
15
+ comment: '',
16
+ 'rdf:isDefinedBy' => 'http://dlib.york.ac.uk/ontologies/borthwick-registers#'
17
+
18
+ term :Entry,
19
+ label: 'Entry',
20
+ comment:
21
+ %(A discreet textual entry on a document. This class has been
22
+ devised specifically to describe the entries within an
23
+ Archbishops' Register, but the same concept could apply to
24
+ entries within a diary or calendar.),
25
+ 'rdf:isDefinedBy' => 'http://dlib.york.ac.uk/ontologies/borthwick-registers#'
26
+
27
+ term :Folio,
28
+ label: 'Folio',
29
+ comment: 'A single folio face, or page.',
30
+ 'rdf:isDefinedBy' => 'http://dlib.york.ac.uk/ontologies/borthwick-registers#'
31
+
32
+ term :Register,
33
+ label: 'Register',
34
+ comment:
35
+ 'A Register, broadly conceived as a document containing
36
+ entries.',
37
+ 'rdf:isDefinedBy' => 'http://dlib.york.ac.uk/ontologies/borthwick-registers#'
38
+
39
+ term :HistoricPerson,
40
+ label: 'Historic Person',
41
+ subClassOf: 'http://xmlns.com/foaf/0.1/Person',
42
+ comment:
43
+ 'A person of historical significance, living or dead. Likely to be described with specialist
44
+ metadata, eg. National Archives Council (NCA) Rules.',
45
+ 'rdf:isDefinedBy' => 'http://dlib.york.ac.uk/ontologies/borthwick-registers#'
46
+
47
+ term :RelatedPlace,
48
+ label: 'Related Place',
49
+ comment:
50
+ 'A place in the context of its relationship to another Object
51
+ Class. This class is not intended to describe Places
52
+ independently.',
53
+ 'rdf:isDefinedBy' => 'http://dlib.york.ac.uk/ontologies/borthwick-registers#'
54
+
55
+ term :RelatedPersonGroup,
56
+ label: 'Related Person or Group',
57
+ comment:
58
+ 'A person or group in the context of its relationship to another Object
59
+ Class. This class is not intended to describe Person or Group
60
+ independently.',
61
+ 'rdf:isDefinedBy' => 'http://dlib.york.ac.uk/ontologies/borthwick-registers#'
62
+
63
+ # Property definitions
64
+ property :asWritten,
65
+ label: 'As Written',
66
+ comment:
67
+ 'This property is used to capture the name of an entity as
68
+ it was expressed in the original resource.',
69
+ 'rdf:isDefinedBy' => 'http://dlib.york.ac.uk/ontologies/borthwick-registers#',
70
+ # doesn't like multiple ranges
71
+ # range: 'http://dlib.york.ac.uk/ontologies/borthwick-registers#EntryDate'.freeze,
72
+ # range: 'http://dlib.york.ac.uk/ontologies/borthwick-registers#RelatedPlace'.freeze,
73
+ # range: 'http://dlib.york.ac.uk/ontologies/borthwick-registers#RelatedPersonGroup'.freeze,
74
+ domain: 'rdf:Literal'
75
+
76
+ property :descriptorAsWritten,
77
+ label: 'As Written',
78
+ comment:
79
+ 'This property is a sub property of As Written and is used
80
+ to capture a descriptor for an Agent as expressed in the
81
+ original resource.',
82
+ 'rdf:isDefinedBy' => 'http://dlib.york.ac.uk/ontologies/borthwick-registers#',
83
+ subPropertyOf: 'http://dlib.york.ac.uk/ontologies/borthwick-registers#descriptorAsWritten',
84
+ range: 'http://dlib.york.ac.uk/ontologies/borthwick-registers#RelatedPersonGroup',
85
+ domain: 'rdf:Literal'
86
+
87
+ property :certainty,
88
+ label: 'Certainty',
89
+ comment:
90
+ 'This property is used for the certainty of a date.
91
+ It is recommended that this property is used with a
92
+ controlled list of values.',
93
+ 'rdf:isDefinedBy' => 'http://dlib.york.ac.uk/ontologies/borthwick-registers#',
94
+ range: 'http://dlib.york.ac.uk/ontologies/borthwick-registers#Date'
95
+
96
+ property :dateType,
97
+ label: 'Date Type',
98
+ comment:
99
+ 'This property is used for the type of date, eg. birth date
100
+ or document date. It is recommended that this property is
101
+ used with a controlled list of values.',
102
+ 'rdf:isDefinedBy' => 'http://dlib.york.ac.uk/ontologies/borthwick-registers#',
103
+ range: 'http://dlib.york.ac.uk/ontologies/borthwick-registers#SingleDate'
104
+
105
+ property :reference,
106
+ label: 'Reference',
107
+ comment:
108
+ 'This property is used for an archival reference.',
109
+ subPropertyOf: 'dcterms:identifier',
110
+ 'rdf:isDefinedBy' => 'http://dlib.york.ac.uk/ontologies/borthwick-registers#'
111
+
112
+ property :entryNo,
113
+ label: 'Entry Number',
114
+ comment:
115
+ 'This property is used for the entry number of a
116
+ given Entry.',
117
+ subPropertyOf: 'dcterms:identifier',
118
+ 'rdf:isDefinedBy' => 'http://dlib.york.ac.uk/ontologies/borthwick-registers#',
119
+ range: 'http://dlib.york.ac.uk/ontologies/borthwick-registers#Entry'
120
+
121
+ property :folioNo,
122
+ label: 'Folio Number',
123
+ comment:
124
+ 'This property is used for the folio or page number.
125
+ It should be used in conjunction with Folio Type where
126
+ anything other than Folios numbers are being captured,
127
+ eg. for a membrane or page.',
128
+ subPropertyOf: 'dcterms:identifier',
129
+ 'rdf:isDefinedBy' => 'http://dlib.york.ac.uk/ontologies/borthwick-registers#',
130
+ range: 'http://dlib.york.ac.uk/ontologies/borthwick-registers#Folio'
131
+
132
+ property :folioFace,
133
+ label: 'Folio Face',
134
+ comment:
135
+ 'This property is used for the folio face. Commonly recto
136
+ or verso. It is recommended that this property is used with
137
+ a controlled list of values.',
138
+ 'rdf:isDefinedBy' => 'http://dlib.york.ac.uk/ontologies/borthwick-registers#',
139
+ range: 'http://dlib.york.ac.uk/ontologies/borthwick-registers#Folio'
140
+
141
+ property :folio,
142
+ label: 'Folio',
143
+ comment:
144
+ %(This property is used to associate an entry with the
145
+ folio(s) on which it appears. It's value should be a URI
146
+ for the Folio.),
147
+ 'rdf:isDefinedBy' => 'http://dlib.york.ac.uk/ontologies/borthwick-registers#',
148
+ range: 'http://dlib.york.ac.uk/ontologies/borthwick-registers#Entry',
149
+ domain: 'http://dlib.york.ac.uk/ontologies/borthwick-registers#Folio'
150
+
151
+ property :continuesOn,
152
+ label: 'Continues On',
153
+ comment:
154
+ 'This property is used to indicate that the described Entry
155
+ continues on the given Folio. Another Entry would be created
156
+ to capture the continued information, related to the given
157
+ Folio with
158
+ http://dlib.york.ac.uk/ontologies/borthwick-registers#folio',
159
+ 'rdf:isDefinedBy' => 'http://dlib.york.ac.uk/ontologies/borthwick-registers#',
160
+ range: 'http://dlib.york.ac.uk/ontologies/borthwick-registers#Entry',
161
+ domain: 'http://dlib.york.ac.uk/ontologies/borthwick-registers#Folio'
162
+
163
+ property :marginalia,
164
+ label: 'Marginalia',
165
+ comment: 'This property is used for marginal notes.',
166
+ subPropertyOf: 'dcterms:description',
167
+ 'rdf:isDefinedBy' => 'http://dlib.york.ac.uk/ontologies/borthwick-registers#',
168
+ range: 'http://dlib.york.ac.uk/ontologies/borthwick-registers#Entry',
169
+ domain: 'rdf:Literal'
170
+
171
+ property :summary,
172
+ label: 'Summary',
173
+ comment:
174
+ 'This property is used for a brief summary of the
175
+ entry.',
176
+ subPropertyOf: 'dcterms:description',
177
+ 'rdf:isDefinedBy' => 'http://dlib.york.ac.uk/ontologies/borthwick-registers#',
178
+ range: 'http://dlib.york.ac.uk/ontologies/borthwick-registers#Entry',
179
+ domain: 'rdf:Literal'
180
+
181
+ property :editorialNote,
182
+ label: 'Editorial Note',
183
+ comment:
184
+ 'This property is used for editorial notes, for example
185
+ notes intended to inform those editing and indexing the
186
+ records, rather than information for the
187
+ general user.',
188
+ subPropertyOf: 'dcterms:description',
189
+ 'rdf:isDefinedBy' => 'http://dlib.york.ac.uk/ontologies/borthwick-registers#',
190
+ range: 'http://dlib.york.ac.uk/ontologies/borthwick-registers#Entry',
191
+ domain: 'rdf:Literal'
192
+
193
+ property :entryType,
194
+ label: 'Entry Type',
195
+ comment:
196
+ 'This property is used for the type of Entry. .
197
+ It is recommended that this property is used with a
198
+ controlled list of values.',
199
+ subPropertyOf: 'dcterms:description',
200
+ 'rdf:isDefinedBy' => 'http://dlib.york.ac.uk/ontologies/borthwick-registers#',
201
+ range: 'http://dlib.york.ac.uk/ontologies/borthwick-registers#Entry',
202
+ domain: 'rdf:Literal'
203
+
204
+ property :sectionType,
205
+ label: 'Section Type',
206
+ comment:
207
+ 'This property is used for the section type for an Entry.
208
+ It is recommended that this property is used with a
209
+ controlled list of values.',
210
+ subPropertyOf: 'dcterms:description',
211
+ 'rdf:isDefinedBy' => 'http://dlib.york.ac.uk/ontologies/borthwick-registers#',
212
+ range: 'http://dlib.york.ac.uk/ontologies/borthwick-registers#Entry',
213
+ domain: 'rdf:Literal'
214
+
215
+ property :placeType,
216
+ label: 'Place Type',
217
+ comment:
218
+ 'This property is used for the type of Place. .
219
+ It is recommended that this property is used with a
220
+ controlled list of values.',
221
+ 'rdf:isDefinedBy' => 'http://dlib.york.ac.uk/ontologies/borthwick-registers#'
222
+
223
+ property :role,
224
+ label: 'Role',
225
+ comment:
226
+ 'This property is used for the role played by the
227
+ described Object Class.
228
+ It is recommended that this property is used with a
229
+ controlled list of values.',
230
+ subPropertyOf: 'http://schema.org/Role',
231
+ 'rdf:isDefinedBy' => 'http://dlib.york.ac.uk/ontologies/borthwick-registers#'
232
+ # doesn't like multple ranges
233
+ # range: 'http://dlib.york.ac.uk/ontologies/borthwick-registers#EntryDate'.freeze,
234
+ # range: 'http://dlib.york.ac.uk/ontologies/borthwick-registers#RelatedPersonGroup'.freeze,
235
+ # range: 'http://dlib.york.ac.uk/ontologies/borthwick-registers#RelatedPlace'.freeze
236
+
237
+ property :descriptor,
238
+ label: 'Descriptor',
239
+ comment:
240
+ 'This property is used for the descriptor of the described
241
+ Agent. A descriptor might be the occupation, status or
242
+ other significant qualification.
243
+ It is recommended that this property is used with a
244
+ controlled list of values.',
245
+ 'rdf:isDefinedBy' => 'http://dlib.york.ac.uk/ontologies/borthwick-registers#',
246
+ range: 'http://dlib.york.ac.uk/ontologies/borthwick-registers#RelatedPersonGroup'
247
+
248
+ property :isBlank,
249
+ label: 'Is Blank',
250
+ comment:
251
+ 'This property is used to capture if the described Folio
252
+ is blank.
253
+ A true or false value is recommended.',
254
+ 'rdf:isDefinedBy' => 'http://dlib.york.ac.uk/ontologies/borthwick-registers#',
255
+ domain: 'rdf:Literal',
256
+ range: 'http://dlib.york.ac.uk/ontologies/borthwick-registers#Folio'
257
+
258
+ property :isMissing,
259
+ label: 'Is Missing',
260
+ comment:
261
+ 'This property is used to capture if a Folio should exist,
262
+ but is missing from the sequence.
263
+ A true or false value is recommended.',
264
+ 'rdf:isDefinedBy' => 'http://dlib.york.ac.uk/ontologies/borthwick-registers#',
265
+ domain: 'rdf:Literal',
266
+ range: 'http://dlib.york.ac.uk/ontologies/borthwick-registers#Folio'
267
+
268
+ property :relatedAgentFor,
269
+ label: 'Related Agent For',
270
+ comment:
271
+ 'This property creates a link from the described Agent to
272
+ the Object Class it is related to, for example
273
+ a Person related to an Entry.',
274
+ 'rdf:isDefinedBy' => 'http://dlib.york.ac.uk/ontologies/borthwick-registers#',
275
+ domain: 'http://dlib.york.ac.uk/ontologies/borthwick-registers#Entry',
276
+ range: 'http://dlib.york.ac.uk/ontologies/borthwick-registers#RelatedPersonGroup'
277
+
278
+ property :relatedPlaceFor,
279
+ label: 'Related Place For',
280
+ comment:
281
+ 'This property creates a link from the described Place
282
+ to the Object Class it is related to, for example
283
+ a Place related to a Person.',
284
+ 'rdf:isDefinedBy' => 'http://dlib.york.ac.uk/ontologies/borthwick-registers#',
285
+ # doesn't like multiples
286
+ # domain: 'http://dlib.york.ac.uk/ontologies/borthwick-registers#Entry'.freeze,
287
+ # domain: 'http://dlib.york.ac.uk/ontologies/borthwick-registers#RelatedPersonGroup'.freeze,
288
+ range: 'http://dlib.york.ac.uk/ontologies/borthwick-registers#RelatedPlace'
289
+
290
+ property :entryDateFor,
291
+ label: 'Entry Date For',
292
+ comment:
293
+ 'This property creates a link from the described Date to the
294
+ Object Class it is related to, for example
295
+ a Date related to an Entry.',
296
+ 'rdf:isDefinedBy' => 'http://dlib.york.ac.uk/ontologies/borthwick-registers#',
297
+ range: 'http://dlib.york.ac.uk/ontologies/borthwick-registers#EntryDate',
298
+ domain: 'http://dlib.york.ac.uk/ontologies/borthwick-registers#Entry'
299
+
300
+ property :dateFor,
301
+ label: 'Date For',
302
+ comment:
303
+ 'This property creates a link from the described Single Date
304
+ to the Entry Date it is related to.',
305
+ 'rdf:isDefinedBy' => 'http://dlib.york.ac.uk/ontologies/borthwick-registers#',
306
+ range: 'http://dlib.york.ac.uk/ontologies/borthwick-registers#SingleDate',
307
+ domain: 'http://dlib.york.ac.uk/ontologies/borthwick-registers#EntryDate'
308
+
309
+ # Extra definitions
310
+ term :'',
311
+ comment:
312
+ 'Borthwick Institute for Archives
313
+ ontology for Registers.',
314
+ 'dc:modified' => '2017',
315
+ 'dc:publisher' => '',
316
+ 'dc:title' => 'Borthwick Registers Ontology',
317
+ label: 'Borthwick Registers',
318
+ 'owl:versionInfo' => ''
319
+ end
320
+ end
321
+ end