Class: Tripod::Embeds::Many

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/tripod/embeds/many.rb

Instance Method Summary collapse

Constructor Details

#initialize(klass, predicate, parent) ⇒ Many

Returns a new instance of Many.



5
6
7
8
9
10
11
12
13
14
# File 'lib/tripod/embeds/many.rb', line 5

def initialize(klass, predicate, parent)
  @parent = parent
  @predicate = predicate
  nodes = @parent.read_predicate(@predicate) # gets the UUIDs of the associated blank nodes
  @resources = nodes.map do |node|
    repository = RDF::Repository.new
    @parent.repository.query([node, :predicate, :object]) {|statement| repository << statement}
    klass.new(node: node, repository: repository)
  end
end

Instance Method Details

#<<(resource) ⇒ Object



20
21
22
23
# File 'lib/tripod/embeds/many.rb', line 20

def <<(resource)
  @parent.repository.insert(*resource.to_statements)
  @parent.append_to_predicate(@predicate, resource.uri)
end

#delete(resource) ⇒ Object



25
26
27
28
29
# File 'lib/tripod/embeds/many.rb', line 25

def delete(resource)
  statements = @parent.repository.query([resource.uri, :predicate, :object]).to_a
  statements << [@parent.uri, RDF::URI.new(@predicate), resource.uri]
  @parent.repository.delete(*statements)
end

#each(&block) ⇒ Object



16
17
18
# File 'lib/tripod/embeds/many.rb', line 16

def each(&block)
  @resources.each(&block)
end