dog_biscuits 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.circleci/config.yml +115 -0
- data/.codeclimate.yml +52 -0
- data/.gitignore +24 -0
- data/.rspec +3 -0
- data/.rubocop.yml +45 -0
- data/.rubocop_todo.yml +92 -0
- data/.travis.yml +18 -0
- data/CODE_OF_CONDUCT.md +36 -0
- data/CONTRIBUTING.md +161 -0
- data/Gemfile +40 -0
- data/LICENSE +14 -0
- data/README.md +98 -0
- data/Rakefile +35 -0
- data/SUPPORT.md +5 -0
- data/bin/console +15 -0
- data/bin/setup +7 -0
- data/dog_biscuits.gemspec +38 -0
- data/lib/dog_biscuits.rb +352 -0
- data/lib/dog_biscuits/actors/apply_authorities.rb +32 -0
- data/lib/dog_biscuits/actors/singular_attributes.rb +17 -0
- data/lib/dog_biscuits/blacklight/commands.rb +118 -0
- data/lib/dog_biscuits/configuration.rb +506 -0
- data/lib/dog_biscuits/importers/authority.rb +65 -0
- data/lib/dog_biscuits/indexers/collection_indexer.rb +10 -0
- data/lib/dog_biscuits/indexers/concerns/indexes_common.rb +58 -0
- data/lib/dog_biscuits/indexers/conference_item_indexer.rb +17 -0
- data/lib/dog_biscuits/indexers/dataset_indexer.rb +25 -0
- data/lib/dog_biscuits/indexers/digital_archival_object_indexer.rb +19 -0
- data/lib/dog_biscuits/indexers/exam_paper_indexer.rb +10 -0
- data/lib/dog_biscuits/indexers/journal_article_indexer.rb +15 -0
- data/lib/dog_biscuits/indexers/package_indexer.rb +19 -0
- data/lib/dog_biscuits/indexers/published_work_indexer.rb +16 -0
- data/lib/dog_biscuits/indexers/thesis_indexer.rb +16 -0
- data/lib/dog_biscuits/models/authorities/agent.rb +78 -0
- data/lib/dog_biscuits/models/authorities/agents/group.rb +59 -0
- data/lib/dog_biscuits/models/authorities/agents/historic_person.rb +55 -0
- data/lib/dog_biscuits/models/authorities/agents/organisation.rb +56 -0
- data/lib/dog_biscuits/models/authorities/agents/person.rb +75 -0
- data/lib/dog_biscuits/models/authorities/concept.rb +91 -0
- data/lib/dog_biscuits/models/authorities/concept_scheme.rb +65 -0
- data/lib/dog_biscuits/models/authorities/event.rb +74 -0
- data/lib/dog_biscuits/models/authorities/place.rb +86 -0
- data/lib/dog_biscuits/models/authorities/project.rb +60 -0
- data/lib/dog_biscuits/models/authority.rb +42 -0
- data/lib/dog_biscuits/models/collections/collection.rb +32 -0
- data/lib/dog_biscuits/models/concerns/behaviours/pure_specific_behaviour.rb +17 -0
- data/lib/dog_biscuits/models/concerns/behaviours/validate_concept_related.rb +12 -0
- data/lib/dog_biscuits/models/concerns/behaviours/validate_concept_scheme.rb +16 -0
- data/lib/dog_biscuits/models/concerns/behaviours/validate_label.rb +12 -0
- data/lib/dog_biscuits/models/concerns/behaviours/validate_place.rb +12 -0
- data/lib/dog_biscuits/models/concerns/behaviours/work_behaviour.rb +21 -0
- data/lib/dog_biscuits/models/concerns/extended_solr_document.rb +147 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/archivematica/archivematica.rb +73 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/archives_hub/access_provided_by.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/archives_hub/country_code.rb +15 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/archives_hub/hub_dates.rb +17 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/archives_hub/maintenance_agency_code.rb +15 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/bibframe/awarding_institution.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/bibframe/edition.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/bibframe/identified_by.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/bibframe/part.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/bibframe/part_of.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/bibframe/series.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/bibframe/subtitle.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/bibo/presented_at.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/bibo/publication_status.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/datacite/resource_type_general.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/abstract.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/access_rights.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/bibliographic_citation.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/contributor.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/creator.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/date.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/date_accepted.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/date_available.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/date_copyrighted.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/date_created.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/date_issued.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/description.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/extent.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/format.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/identifier.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/language.rb +17 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/publisher.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/resource_type.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/rights.rb +17 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/rights_holder.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/simple_versions.rb +18 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/source.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/subject.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dwc/event_date.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/edm/edm_rights.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/fabio/date_collected.rb +15 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/foaf/based_near.rb +12 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/foaf/foaf_name.rb +16 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/frapo/output_of.rb +18 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/geo/geo.rb +27 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/geonames/country_code.rb +15 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/geonames/place_properties.rb +66 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/lc_identifiers/doi.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/lc_identifiers/isbn.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/lc_identifiers/official_url.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/lc_identifiers/orcid.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/local/for_indexing.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/local/former_identifier.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/local/generic_authority_terms.rb +22 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/local/generic_qualifier.rb +16 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/local/last_access.rb +15 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/local/main_file.rb +24 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/local/module_code.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/local/number_of_downloads.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/local/packaged_by.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/local/readme_file.rb +26 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/local/requestor_email.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/mads/related_authority.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/marc_relators/advisor.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/marc_relators/editor.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/marc_relators/funder.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/marc_relators/place_of_publication.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/mods/date_valid.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/owl/owl_same_as.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/premis/has_restriction.rb +15 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/property_sets/person_properties.rb +92 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/pure/managing_organisation.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/pure/pure.rb +28 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/rdf/rdf_type.rb +12 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/rdf/rdfs_label.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/rdf/related_url.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/schema/alternate_name.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/schema/content_version.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/schema/date_published.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/schema/date_updated.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/schema/department.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/schema/end_date.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/schema/issue_number.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/schema/keyword.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/schema/location.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/schema/pagination.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/schema/start_date.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/schema/volume_number.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/skos/skos_labels.rb +18 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/skos/skos_note.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/skos/skos_related.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/uketd/date_of_award.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/uketd/qualification.rb +17 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/ulcc/date_submitted.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/ulcc/official_url.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/ulcc/refereed.rb +13 -0
- data/lib/dog_biscuits/models/concerns/model_property_sets/common/common_labels.rb +9 -0
- data/lib/dog_biscuits/models/concerns/model_property_sets/common/common_metadata.rb +64 -0
- data/lib/dog_biscuits/models/concerns/model_property_sets/common/common_rights.rb +10 -0
- data/lib/dog_biscuits/models/concerns/model_property_sets/conference_item_metadata.rb +24 -0
- data/lib/dog_biscuits/models/concerns/model_property_sets/dataset_metadata.rb +36 -0
- data/lib/dog_biscuits/models/concerns/model_property_sets/digital_archival_object_metadata.rb +13 -0
- data/lib/dog_biscuits/models/concerns/model_property_sets/exam_paper_metadata.rb +14 -0
- data/lib/dog_biscuits/models/concerns/model_property_sets/journal_article_metadata.rb +24 -0
- data/lib/dog_biscuits/models/concerns/model_property_sets/package_metadata.rb +13 -0
- data/lib/dog_biscuits/models/concerns/model_property_sets/published_work_metadata.rb +26 -0
- data/lib/dog_biscuits/models/concerns/model_property_sets/thesis_metadata.rb +17 -0
- data/lib/dog_biscuits/models/filesets/file_set.rb +30 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/canvas.rb +15 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/contained_file.rb +13 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_date_certainty.rb +5 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_editorial_note.rb +5 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_entry.rb +19 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_entry_date.rb +10 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_entry_type.rb +5 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_is_referenced_by.rb +5 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_language.rb +5 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_marginalium.rb +5 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_note.rb +5 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_person_as_written.rb +5 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_person_descriptor.rb +5 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_person_descriptor_as_written.rb +5 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_person_note.rb +5 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_person_related_person.rb +5 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_person_related_place.rb +5 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_person_role.rb +5 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_place_as_written.rb +5 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_place_note.rb +5 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_place_role.rb +5 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_place_type.rb +5 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_related_agent.rb +20 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_related_place.rb +13 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_section_type.rb +5 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_single_date.rb +10 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_subject.rb +5 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/entry.rb +59 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/entry/entry_date.rb +17 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/entry/related_agent.rb +62 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/entry/related_place.rb +28 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/entry/single_date.rb +19 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/folio.rb +42 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/image.rb +25 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/manifest.rb +15 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/register.rb +21 -0
- data/lib/dog_biscuits/models/work.rb +37 -0
- data/lib/dog_biscuits/models/works/conference_item.rb +37 -0
- data/lib/dog_biscuits/models/works/dataset.rb +42 -0
- data/lib/dog_biscuits/models/works/digital_archival_object.rb +28 -0
- data/lib/dog_biscuits/models/works/exam_paper.rb +33 -0
- data/lib/dog_biscuits/models/works/journal_article.rb +37 -0
- data/lib/dog_biscuits/models/works/package.rb +47 -0
- data/lib/dog_biscuits/models/works/published_work.rb +38 -0
- data/lib/dog_biscuits/models/works/thesis.rb +34 -0
- data/lib/dog_biscuits/property_mappings/property_mappings.rb +585 -0
- data/lib/dog_biscuits/railtie.rb +13 -0
- data/lib/dog_biscuits/services/table_based_authority_extended.rb +10 -0
- data/lib/dog_biscuits/services/terms.rb +57 -0
- data/lib/dog_biscuits/services/terms_service.rb +162 -0
- data/lib/dog_biscuits/solr/index_types.rb +33 -0
- data/lib/dog_biscuits/validators/concept_related_validator.rb +13 -0
- data/lib/dog_biscuits/validators/concept_scheme_member_validator.rb +10 -0
- data/lib/dog_biscuits/validators/label_validator.rb +55 -0
- data/lib/dog_biscuits/validators/place_validator.rb +10 -0
- data/lib/dog_biscuits/version.rb +5 -0
- data/lib/dog_biscuits/vocab/borthwick_registers.rb +321 -0
- data/lib/dog_biscuits/vocab/generic.rb +204 -0
- data/lib/dog_biscuits/vocab/oais_archivematica.rb +116 -0
- data/lib/dog_biscuits/vocab/pure_terms.rb +65 -0
- data/lib/dog_biscuits/vocab/uketd.rb +45 -0
- data/lib/dog_biscuits/vocab/ulcc_terms.rb +55 -0
- data/lib/generators/dog_biscuits/USAGE +50 -0
- data/lib/generators/dog_biscuits/authority_generator.rb +55 -0
- data/lib/generators/dog_biscuits/catalog_generator.rb +18 -0
- data/lib/generators/dog_biscuits/dates_generator.rb +98 -0
- data/lib/generators/dog_biscuits/generate_all_generator.rb +29 -0
- data/lib/generators/dog_biscuits/imagify_generator.rb +67 -0
- data/lib/generators/dog_biscuits/install_generator.rb +82 -0
- data/lib/generators/dog_biscuits/locales_generator.rb +20 -0
- data/lib/generators/dog_biscuits/schema_org_generator.rb +20 -0
- data/lib/generators/dog_biscuits/templates/_date_template.html.erb +7 -0
- data/lib/generators/dog_biscuits/templates/app/controllers/catalog_controller.rb +133 -0
- data/lib/generators/dog_biscuits/templates/app/helpers/dog_biscuits_helper.rb +43 -0
- data/lib/generators/dog_biscuits/templates/app/renderers/package_ids_renderer.rb +13 -0
- data/lib/generators/dog_biscuits/templates/app/renderers/packaged_by_ids_renderer.rb +11 -0
- data/lib/generators/dog_biscuits/templates/app/renderers/publication_status_renderer.rb +16 -0
- data/lib/generators/dog_biscuits/templates/app/services/concerns/file_authority_concern.rb +14 -0
- data/lib/generators/dog_biscuits/templates/app/services/concerns/local_authority_concern.rb +18 -0
- data/lib/generators/dog_biscuits/templates/app/services/local_form_metadata_service.rb +15 -0
- data/lib/generators/dog_biscuits/templates/app/views/hyrax/base/_form_metadata.html.erb +23 -0
- data/lib/generators/dog_biscuits/templates/app/views/records/edit_fields/_abstract.html.erb +5 -0
- data/lib/generators/dog_biscuits/templates/app/views/records/edit_fields/_default.html.erb +6 -0
- data/lib/generators/dog_biscuits/templates/app/views/records/edit_fields/_funder.html.erb +8 -0
- data/lib/generators/dog_biscuits/templates/app/views/records/edit_fields/_note.html.erb +5 -0
- data/lib/generators/dog_biscuits/templates/app/views/records/edit_fields/_part_of.html.erb +17 -0
- data/lib/generators/dog_biscuits/templates/app/views/records/edit_fields/_publication_status.html.erb +6 -0
- data/lib/generators/dog_biscuits/templates/app/views/records/edit_fields/_refereed.html.erb +5 -0
- data/lib/generators/dog_biscuits/templates/app/views/records/edit_fields/_resource_type_general.html.erb +2 -0
- data/lib/generators/dog_biscuits/templates/authority_service.rb.erb +25 -0
- data/lib/generators/dog_biscuits/templates/config/authorities/content_versions.yml +25 -0
- data/lib/generators/dog_biscuits/templates/config/authorities/publication_statuses.yml +19 -0
- data/lib/generators/dog_biscuits/templates/config/authorities/qualification_levels.yml +13 -0
- data/lib/generators/dog_biscuits/templates/config/authorities/qualification_names.yml +31 -0
- data/lib/generators/dog_biscuits/templates/config/authorities/resource_type_generals.yml +47 -0
- data/lib/generators/dog_biscuits/templates/config/dog_biscuits.yml +3 -0
- data/lib/generators/dog_biscuits/templates/config/initializers/catalog_search_builder_overrides.rb +18 -0
- data/lib/generators/dog_biscuits/templates/config/initializers/dog_biscuits.rb +144 -0
- data/lib/generators/dog_biscuits/templates/dog_biscuits.en.yml.erb +11 -0
- data/lib/generators/dog_biscuits/templates/schema_org.yml.erb +4 -0
- data/lib/generators/dog_biscuits/work/USAGE +35 -0
- data/lib/generators/dog_biscuits/work/templates/README +31 -0
- data/lib/generators/dog_biscuits/work/templates/_attribute_rows.html.erb +22 -0
- data/lib/generators/dog_biscuits/work/templates/actor.rb.erb +25 -0
- data/lib/generators/dog_biscuits/work/templates/form.rb.erb +18 -0
- data/lib/generators/dog_biscuits/work/templates/indexer.rb.erb +23 -0
- data/lib/generators/dog_biscuits/work/templates/model.rb.erb +16 -0
- data/lib/generators/dog_biscuits/work/templates/presenter.rb.erb +20 -0
- data/lib/generators/dog_biscuits/work/work_generator.rb +102 -0
- data/lib/tasks/authorities.rake +22 -0
- metadata +476 -0
@@ -0,0 +1,65 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module DogBiscuits
|
4
|
+
module Importers
|
5
|
+
class Authority
|
6
|
+
attr_reader :authority
|
7
|
+
attr_reader :authority_name
|
8
|
+
|
9
|
+
def initialize(authority_name)
|
10
|
+
@authority_name = authority_name
|
11
|
+
@authority = Qa::LocalAuthority.find_or_create_by(name: authority_name) if valid_authority?
|
12
|
+
end
|
13
|
+
|
14
|
+
def valid_authority?
|
15
|
+
true if Qa::Authorities::Local.subauthority_for(@authority_name)
|
16
|
+
rescue Qa::InvalidSubAuthority
|
17
|
+
Rails.logger.error("This sub-authority is not registered: #{@authority_name}")
|
18
|
+
false
|
19
|
+
end
|
20
|
+
|
21
|
+
# Create an authority record in the given local authority
|
22
|
+
#
|
23
|
+
# @param label [String] the label
|
24
|
+
# @param uri [String] the uri, optional
|
25
|
+
def create_record(label, uri = nil)
|
26
|
+
uri = construct_uri(label) if uri.blank?
|
27
|
+
Qa::LocalAuthorityEntry.create(local_authority: @authority,
|
28
|
+
label: cleanup_label(label),
|
29
|
+
uri: uri)
|
30
|
+
rescue ActiveRecord::RecordNotUnique
|
31
|
+
Rails.logger.warn("Duplicate record: #{label}")
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
# Replace & with &
|
37
|
+
#
|
38
|
+
# @param label [String] the label for cleanup
|
39
|
+
# @return [String] cleaned up label
|
40
|
+
def cleanup_label(label)
|
41
|
+
label.gsub('&', '&')
|
42
|
+
end
|
43
|
+
|
44
|
+
# Create a version of the label for use as a uri:
|
45
|
+
# replace all non-alphanumeric characters with whitespace
|
46
|
+
# trim to 50 characters and replace whitespace with a dash
|
47
|
+
#
|
48
|
+
# @param label [String] the label for uri-ification
|
49
|
+
# @return [String] uri-ified label
|
50
|
+
def uri_ifiy_label(label)
|
51
|
+
cleanup_label(label).gsub(/[^\w\s\d]/, ' ')[0..50].parameterize
|
52
|
+
end
|
53
|
+
|
54
|
+
# Create a default URI for the term
|
55
|
+
#
|
56
|
+
# @param label [String] the label for cleanup
|
57
|
+
# @return [String] cleaned up label
|
58
|
+
def construct_uri(label)
|
59
|
+
hostname = `hostname`.delete("\n")
|
60
|
+
hostname = "example.com" if hostname.include?('localhost')
|
61
|
+
"http://#{hostname}/#{@authority_name}/#{uri_ifiy_label(label)}"
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module DogBiscuits
|
4
|
+
class CollectionIndexer < Hyrax::CollectionIndexer
|
5
|
+
include DogBiscuits::IndexesCommon
|
6
|
+
|
7
|
+
# Add any custom indexing into here. Method must exist, but can be empty.
|
8
|
+
def do_local_indexing(solr_doc); end
|
9
|
+
end
|
10
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module DogBiscuits
|
4
|
+
module IndexesCommon
|
5
|
+
def generate_solr_document
|
6
|
+
super.tap do |solr_doc|
|
7
|
+
solr_doc_for_contributors(solr_doc)
|
8
|
+
solr_doc_for_dates(solr_doc)
|
9
|
+
do_local_indexing(solr_doc)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
# rubocop:disable Style/GuardClause
|
14
|
+
|
15
|
+
# Index different contributor types (relators, eg. editor, advisor) into contributor
|
16
|
+
# Index the contributor type itself
|
17
|
+
def solr_doc_for_contributors(solr_doc)
|
18
|
+
if respond_to? :contributors_to_index
|
19
|
+
contributors_to_index.each do |v|
|
20
|
+
labels = object.send(v).to_a
|
21
|
+
# If there is anything in the solr_doc, add to it
|
22
|
+
if solr_doc["contributor_combined_tesim"]
|
23
|
+
solr_doc[ActiveFedora.index_field_mapper.solr_name("contributor_combined", :stored_searchable)].push(*labels).uniq!
|
24
|
+
solr_doc[ActiveFedora.index_field_mapper.solr_name("contributor_combined", :facetable)].push(*labels).uniq!
|
25
|
+
else
|
26
|
+
solr_doc[ActiveFedora.index_field_mapper.solr_name("contributor_combined", :stored_searchable)] = labels
|
27
|
+
solr_doc[ActiveFedora.index_field_mapper.solr_name("contributor_combined", :facetable)] = labels
|
28
|
+
end
|
29
|
+
labels.each do |_label|
|
30
|
+
if solr_doc['contributor_type_sim']
|
31
|
+
solr_doc[ActiveFedora.index_field_mapper.solr_name("contributor_type", :facetable)] << v
|
32
|
+
else
|
33
|
+
solr_doc[ActiveFedora.index_field_mapper.solr_name("contributor_type", :facetable)] = [v]
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
# Extract years from all date fields and index into 'date_range_sim'
|
41
|
+
def solr_doc_for_dates(solr_doc)
|
42
|
+
DogBiscuits.config.date_properties.each do |d|
|
43
|
+
next unless object.respond_to? d
|
44
|
+
object.send(d).each do |dd|
|
45
|
+
dd.to_s.scan(/\b\d{4}\b/).each do |year|
|
46
|
+
if solr_doc['date_range_sim']
|
47
|
+
solr_doc['date_range_sim'] << year.to_i
|
48
|
+
else
|
49
|
+
solr_doc['date_range_sim'] = [year.to_i]
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
# rubocop:enable Style/GuardClause
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module DogBiscuits
|
4
|
+
class ConferenceItemIndexer < Hyrax::WorkIndexer
|
5
|
+
include DogBiscuits::IndexesCommon
|
6
|
+
|
7
|
+
# NB. include 'contributor' here if it is used in the form
|
8
|
+
def contributors_to_index
|
9
|
+
['editor', 'funder']
|
10
|
+
end
|
11
|
+
|
12
|
+
# Add any custom indexing into here. Method must exist, but can be empty.
|
13
|
+
#
|
14
|
+
# @param [Hash] solr_doc
|
15
|
+
def do_local_indexing(solr_doc); end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module DogBiscuits
|
4
|
+
class DatasetIndexer < Hyrax::WorkIndexer
|
5
|
+
include DogBiscuits::IndexesCommon
|
6
|
+
|
7
|
+
def contributors_to_index
|
8
|
+
['funder']
|
9
|
+
end
|
10
|
+
|
11
|
+
# Force the type of certain indexed fields in solr
|
12
|
+
# (inspired by
|
13
|
+
# http://projecthydra.github.io/training/deeper_into_hydra/#slide-63,
|
14
|
+
# http://projecthydra.github.io/training/deeper_into_hydra/#slide-64
|
15
|
+
# and discussed at
|
16
|
+
# https://groups.google.com/forum/#!topic/hydra-tech/rRsBwdvh5dE)
|
17
|
+
# This is to overcome limitations with solrizer and
|
18
|
+
# "index.as :stored_sortable" always defaulting to string rather
|
19
|
+
# than text type (solr sorting on string fields is case-sensitive,
|
20
|
+
# on text fields it's case-insensitive)
|
21
|
+
def do_local_indexing(solr_doc)
|
22
|
+
solr_doc['dc_access_rights_tesi'] = object.dc_access_rights.collect { |x| x }
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module DogBiscuits
|
4
|
+
class DigitalArchivalObjectIndexer < Hyrax::WorkIndexer
|
5
|
+
include DogBiscuits::IndexesCommon
|
6
|
+
|
7
|
+
def contributors_to_index
|
8
|
+
[]
|
9
|
+
end
|
10
|
+
|
11
|
+
# Add any custom indexing into here. Method must exist, but can be empty.
|
12
|
+
#
|
13
|
+
# @param [Hash] solr_doc
|
14
|
+
def do_local_indexing(solr_doc)
|
15
|
+
solr_doc['packaged_by_ids_ssim'] = object.packaged_by.map(&:id)
|
16
|
+
solr_doc['packaged_by_titles_sim'] = object.packaged_by.map(&:first_title)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module DogBiscuits
|
4
|
+
class ExamPaperIndexer < Hyrax::WorkIndexer
|
5
|
+
include DogBiscuits::IndexesCommon
|
6
|
+
|
7
|
+
# Add any custom indexing into here. Method must exist, but can be empty.
|
8
|
+
def do_local_indexing(solr_doc); end
|
9
|
+
end
|
10
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module DogBiscuits
|
4
|
+
class JournalArticleIndexer < Hyrax::WorkIndexer
|
5
|
+
include DogBiscuits::IndexesCommon
|
6
|
+
|
7
|
+
# Add any properties to ensure they are 'mixed in' with the *_labels field in solr
|
8
|
+
def contributors_to_index
|
9
|
+
['funder']
|
10
|
+
end
|
11
|
+
|
12
|
+
# Add any custom indexing into here. Method must exist, but can be empty.
|
13
|
+
def do_local_indexing(solr_doc); end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module DogBiscuits
|
4
|
+
class PackageIndexer < Hyrax::WorkIndexer
|
5
|
+
include DogBiscuits::IndexesCommon
|
6
|
+
|
7
|
+
# NB. include 'contributor' here if it is used in the form
|
8
|
+
def contributors_to_index
|
9
|
+
[]
|
10
|
+
end
|
11
|
+
|
12
|
+
# Add any custom indexing into here. Method must exist, but can be empty.
|
13
|
+
#
|
14
|
+
# @param [Hash] solr_doc
|
15
|
+
def do_local_indexing(solr_doc)
|
16
|
+
solr_doc['package_ids_ssim'] = object.packages.map(&:id)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module DogBiscuits
|
4
|
+
class PublishedWorkIndexer < Hyrax::WorkIndexer
|
5
|
+
include DogBiscuits::IndexesCommon
|
6
|
+
|
7
|
+
def contributors_to_index
|
8
|
+
['editor', 'funder']
|
9
|
+
end
|
10
|
+
|
11
|
+
# Add any custom indexing into here. Method must exist, but can be empty.
|
12
|
+
#
|
13
|
+
# @param [Hash] solr_doc
|
14
|
+
def do_local_indexing(solr_doc); end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module DogBiscuits
|
4
|
+
class ThesisIndexer < Hyrax::WorkIndexer
|
5
|
+
include DogBiscuits::IndexesCommon
|
6
|
+
|
7
|
+
def contributors_to_index
|
8
|
+
['advisor', 'funder']
|
9
|
+
end
|
10
|
+
|
11
|
+
# Add any custom indexing into here. Method must exist, but can be empty.
|
12
|
+
#
|
13
|
+
# @param [Hash] solr_doc
|
14
|
+
def do_local_indexing(solr_doc); end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,78 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module DogBiscuits
|
4
|
+
# People, Groups and Organisations inherit from this.
|
5
|
+
class Agent < Authority
|
6
|
+
# HyBox
|
7
|
+
include DogBiscuits::AlternateName
|
8
|
+
include DogBiscuits::Description
|
9
|
+
include DogBiscuits::FoafName
|
10
|
+
include DogBiscuits::IdentifiedBy
|
11
|
+
# Additional
|
12
|
+
include DogBiscuits::GenericAuthorityTerms
|
13
|
+
include DogBiscuits::RelatedAuthority
|
14
|
+
include DogBiscuits::OwlSameAs
|
15
|
+
|
16
|
+
type [::RDF::Vocab::FOAF.Agent]
|
17
|
+
|
18
|
+
property :email, predicate: ::RDF::Vocab::FOAF.mbox do |index|
|
19
|
+
index.as :stored_searchable
|
20
|
+
end
|
21
|
+
|
22
|
+
# value should be foaf:OnlineAccount
|
23
|
+
property :account, predicate: ::RDF::Vocab::FOAF.account do |index|
|
24
|
+
index.as :stored_searchable
|
25
|
+
end
|
26
|
+
|
27
|
+
property :homepage, predicate: ::RDF::Vocab::FOAF.homepage do |index|
|
28
|
+
index.as :stored_searchable
|
29
|
+
end
|
30
|
+
|
31
|
+
def agent?
|
32
|
+
true
|
33
|
+
end
|
34
|
+
|
35
|
+
def concept?
|
36
|
+
false
|
37
|
+
end
|
38
|
+
|
39
|
+
def concept_scheme?
|
40
|
+
false
|
41
|
+
end
|
42
|
+
|
43
|
+
def event?
|
44
|
+
false
|
45
|
+
end
|
46
|
+
|
47
|
+
def group?
|
48
|
+
false
|
49
|
+
end
|
50
|
+
|
51
|
+
def organisation?
|
52
|
+
false
|
53
|
+
end
|
54
|
+
|
55
|
+
def person?
|
56
|
+
false
|
57
|
+
end
|
58
|
+
|
59
|
+
def place?
|
60
|
+
false
|
61
|
+
end
|
62
|
+
|
63
|
+
def project?
|
64
|
+
false
|
65
|
+
end
|
66
|
+
|
67
|
+
# Generate a rdfs label from the name parts. Overwrite the existing label.
|
68
|
+
def add_label
|
69
|
+
self.rdfs_label = name if name.present?
|
70
|
+
add_preflabel
|
71
|
+
end
|
72
|
+
|
73
|
+
# Generate a preflabel from rdfs label.
|
74
|
+
def add_preflabel
|
75
|
+
self.preflabel = rdfs_label if rdfs_label.present?
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module DogBiscuits
|
4
|
+
class Group < DogBiscuits::Agent
|
5
|
+
# Additional
|
6
|
+
include DogBiscuits::GenericQualifier
|
7
|
+
include DogBiscuits::HubDates
|
8
|
+
|
9
|
+
type [::RDF::Vocab::FOAF.Agent,
|
10
|
+
::RDF::Vocab::FOAF.Group]
|
11
|
+
|
12
|
+
property :group_type, predicate: DogBiscuits::Vocab::Generic.groupType do |index|
|
13
|
+
index.as :stored_searchable
|
14
|
+
end
|
15
|
+
|
16
|
+
property :foaf_member, predicate: ::RDF::Vocab::FOAF.member do |index|
|
17
|
+
index.as :stored_searchable
|
18
|
+
end
|
19
|
+
|
20
|
+
def concept?
|
21
|
+
false
|
22
|
+
end
|
23
|
+
|
24
|
+
def concept_scheme?
|
25
|
+
false
|
26
|
+
end
|
27
|
+
|
28
|
+
def group?
|
29
|
+
true
|
30
|
+
end
|
31
|
+
|
32
|
+
def organisation?
|
33
|
+
false
|
34
|
+
end
|
35
|
+
|
36
|
+
def person?
|
37
|
+
false
|
38
|
+
end
|
39
|
+
|
40
|
+
def place?
|
41
|
+
false
|
42
|
+
end
|
43
|
+
|
44
|
+
def project?
|
45
|
+
false
|
46
|
+
end
|
47
|
+
|
48
|
+
# Generate a rdfs label from the name parts. Overwrite the existing label.
|
49
|
+
def add_label
|
50
|
+
label = ''
|
51
|
+
label += ", #{name}" if name.present?
|
52
|
+
label += ", #{dates}" if dates.present?
|
53
|
+
label += ", #{qualifier}" if qualifier.present?
|
54
|
+
label = label.sub(', ', '') if label.starts_with? ', '
|
55
|
+
self.rdfs_label = label if label.present?
|
56
|
+
add_preflabel
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module DogBiscuits
|
4
|
+
class HistoricPerson < DogBiscuits::Person
|
5
|
+
before_save :add_label
|
6
|
+
|
7
|
+
type [::RDF::Vocab::FOAF.Agent,
|
8
|
+
::RDF::Vocab::FOAF.Person,
|
9
|
+
DogBiscuits::Vocab::BorthwickRegisters.HistoricPerson]
|
10
|
+
|
11
|
+
# Eg. NCA Rules 2.5C.
|
12
|
+
property :pre_title, predicate: DogBiscuits::Vocab::Generic.preTitle,
|
13
|
+
multiple: false do |index|
|
14
|
+
index.as :stored_searchable
|
15
|
+
end
|
16
|
+
|
17
|
+
# Eg. NCA Rules 2.5B.
|
18
|
+
property :post_title,
|
19
|
+
predicate: ::RDF::URI.new('http://data.archiveshub.ac.uk/def/title'),
|
20
|
+
multiple: false do |index|
|
21
|
+
index.as :stored_searchable
|
22
|
+
end
|
23
|
+
|
24
|
+
# Eg. NCA Rules 2.5D.
|
25
|
+
property :epithet,
|
26
|
+
predicate: ::RDF::URI.new('http://data.archiveshub.ac.uk/def/epithet'),
|
27
|
+
multiple: false do |index|
|
28
|
+
index.as :stored_searchable
|
29
|
+
end
|
30
|
+
|
31
|
+
property :dates_of_office,
|
32
|
+
predicate: DogBiscuits::Vocab::Generic.datesOfOffice,
|
33
|
+
multiple: false do |index|
|
34
|
+
index.as :stored_searchable
|
35
|
+
end
|
36
|
+
|
37
|
+
def historic_person?
|
38
|
+
true
|
39
|
+
end
|
40
|
+
|
41
|
+
# Generate a rdfs label from the name parts. Overwrite the existing label.
|
42
|
+
def add_label
|
43
|
+
label = ''
|
44
|
+
label += ", #{family_name}" if family_name.present?
|
45
|
+
label += ", #{pre_title}" if pre_title.present?
|
46
|
+
label += ", #{given_name}" if given_name.present?
|
47
|
+
label += ", #{dates}" if dates.present?
|
48
|
+
label += ", #{post_title}" if post_title.present?
|
49
|
+
label += ", #{epithet}" if epithet.present?
|
50
|
+
label = label.sub(', ', '') if label.starts_with? ', '
|
51
|
+
self.rdfs_label = label
|
52
|
+
add_preflabel
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|