Module: Hydra::PCDM::ObjectBehavior

Extended by:
ActiveSupport::Concern
Included in:
Object
Defined in:
lib/hydra/pcdm/models/concerns/object_behavior.rb

Overview

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

Examples:

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

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 Also:

Defined Under Namespace

Modules: ClassMethods

Instance Method Summary collapse

Instance Method Details

#file_of_type(uri) ⇒ ActiveFedora::File

Finds or Initializes directly contained file with the requested RDF Type

Examples:

file_of_type(::RDF::URI("http://pcdm.org/ExtractedText"))

Parameters:

  • uri (RDF::URI)

    for the desired Type

Returns:

  • (ActiveFedora::File)


110
111
112
113
114
# 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) ⇒ Enumerable<ActiveFedora::File>

Gives directly contained files that have the requested RDF Type

Examples:

filter_files_by_type(::RDF::URI("http://pcdm.org/ExtractedText"))

Parameters:

  • uri (RDF::URI)

    for the desired Type

Returns:

  • (Enumerable<ActiveFedora::File>)


96
97
98
99
100
# File 'lib/hydra/pcdm/models/concerns/object_behavior.rb', line 96

def filter_files_by_type(uri)
  files.reject do |file|
    !file..type.include?(uri)
  end
end

#in_objectsEnumerable<Hydra::PCDM::ObjectBehavior>

Returns:



84
85
86
# File 'lib/hydra/pcdm/models/concerns/object_behavior.rb', line 84

def in_objects
  member_of.select(&:pcdm_object?).to_a
end

#pcdm_collection?Boolean

Returns whether this instance is a PCDM Collection.

Returns:

  • (Boolean)

    whether this instance is a PCDM Collection.



78
79
80
# File 'lib/hydra/pcdm/models/concerns/object_behavior.rb', line 78

def pcdm_collection?
  false
end

#pcdm_object?Boolean

Returns whether this instance is a PCDM Object.

Returns:

  • (Boolean)

    whether this instance is a PCDM Object.



72
73
74
# File 'lib/hydra/pcdm/models/concerns/object_behavior.rb', line 72

def pcdm_object?
  true
end