class Tripod::Embeds::Many

Public Class Methods

new(klass, predicate, parent) click to toggle source
# 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

Public Instance Methods

<<(resource) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# File lib/tripod/embeds/many.rb, line 16
def each(&block)
  @resources.each(&block)
end