Skip to content

Instantly share code, notes, and snippets.

@elrayle
Last active August 29, 2015 14:23
Show Gist options
  • Save elrayle/409e4a773e49d9a15b12 to your computer and use it in GitHub Desktop.
Save elrayle/409e4a773e49d9a15b12 to your computer and use it in GitHub Desktop.
implementation of pcdm:order
module Hydra::PCDM
class Order < ActiveFedora::Base
include Hydra::PCDM::OrderBehavior
end
end
module Hydra::PCDM
module OrderBehavior
extend ActiveSupport::Concern
# behaviors
* order members must be pcdm:Collection and/or pcdm:Object
# behavior:
# 1) Hydra::PCDM::Order can aggregate (pcdm:hasMember) Hydra::PCDM::Collection
# 2) Hydra::PCDM::Order can aggregate (pcdm:hasMember) Hydra::PCDM::Object
# 3) Hydra::PCDM::Order can aggregate (ore:aggregates) Hydra::PCDM::Object (Object related to the Order)
# 4) Hydra::PCDM::Order can contain (pcdm:hasRelatedFile) Hydra::PCDM::File
# 5) Hydra::PCDM::Order can NOT aggregate Hydra:PCDM:Order
# 6) Hydra::PCDM::Order can NOT aggregate non-PCDM object
# 7) Hydra::PCDM::Order can NOT contain (pcdm:hasFile) Hydra::PCDM::File
# 8) Hydra::PCDM::Order can have descriptive metadata
# 9) Hydra::PCDM::Order can have access metadata
included do
type RDFVocabularies::PCDMTerms.Order
# members can be collections and/or objects
aggregates :members, predicate: RDFVocabularies::PCDMTerms.hasMember, class_name: "ActiveFedora::Base"
# related objects
indirectly_contains :related_objects, has_member_relation: RDF::Vocab::ORE.aggregates,
inserted_content_relation: RDF::Vocab::ORE.proxyFor, class_name: "ActiveFedora::Base",
through: 'ActiveFedora::Aggregation::Proxy', foreign_key: :target
# related files
directly_contains :related_files, has_member_relation: RDFVocabularies::PCDMTerms.hasRelatedFile,
class_name: "Hydra::PCDM::File"
end
# plus methods specific to ordering
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment