module Hydra::PCDM::ObjectBehavior
Implements behavior for PCDM
objects.
The behavior is summarized as:
1) Hydra::PCDM::Object can aggregate (pcdm:hasMember) Hydra::PCDM::Object 2) Hydra::PCDM::Object can aggregate (ore:aggregates) Hydra::PCDM::Object (Object related to the Object) 3) Hydra::PCDM::Object can contain (pcdm:hasFile) Hydra::PCDM::File 4) Hydra::PCDM::Object can contain (pcdm:hasRelatedFile) Hydra::PCDM::File 5) Hydra::PCDM::Object can NOT aggregate Hydra::PCDM::Collection 6) Hydra::PCDM::Object can NOT aggregate non-PCDM object 7) Hydra::PCDM::Object can have descriptive metadata 8) Hydra::PCDM::Object can have access metadata
@example defining an object class and creating an object
class Book < ActiveFedora::Base include Hydra::PCDM::ObjectBehavior end my_book = Book.create # #<Book id: "71/3f/07/e0/713f07e0-9d5c-493a-bdb9-7fbfe2160028", head: [], tail: []> my_book.pcdm_object? # => true my_book.pcdm_collection? # => false
@example adding a members to an object
class Page < ActiveFedora::Base include Hydra::PCDM::ObjectBehavior end my_book = Book.create a_page = Page.create my_book.members << a_page my_book.members # => [a_page]
@see PcdmBehavior
for details about the base behavior required by
this module.
Public Instance Methods
file_of_type(uri)
click to toggle source
Finds or Initializes directly contained file with the requested RDF Type
@param [RDF::URI] uri for the desired Type @return [ActiveFedora::File]
@example
file_of_type(::RDF::URI("http://pcdm.org/ExtractedText"))
# File lib/hydra/pcdm/models/concerns/object_behavior.rb, line 110 def file_of_type(uri) matching_files = filter_files_by_type(uri) return matching_files.first unless matching_files.empty? Hydra::PCDM::AddTypeToFile.call(files.build, uri) end
filter_files_by_type(uri)
click to toggle source
Gives directly contained files that have the requested RDF Type
@param [RDF::URI] uri for the desired Type @return [Enumerable<ActiveFedora::File>]
@example
filter_files_by_type(::RDF::URI("http://pcdm.org/ExtractedText"))
# File lib/hydra/pcdm/models/concerns/object_behavior.rb, line 96 def filter_files_by_type(uri) files.reject do |file| !file.metadata_node.type.include?(uri) end end
in_objects()
click to toggle source
@return [Enumerable<Hydra::PCDM::ObjectBehavior>]
# File lib/hydra/pcdm/models/concerns/object_behavior.rb, line 84 def in_objects member_of.select(&:pcdm_object?).to_a end
pcdm_collection?()
click to toggle source
@return [Boolean] whether this instance is a PCDM
Collection
.
# File lib/hydra/pcdm/models/concerns/object_behavior.rb, line 78 def pcdm_collection? false end