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,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