Method: RDF::Mutable#update

Defined in:
lib/rdf/mixin/mutable.rb

#update(*statements) ⇒ self #update(statements) ⇒ self Also known as: update!

Note:

using splat argument syntax with excessive arguments provided

Updates RDF statements in self.

#update([subject, predicate, object]) is equivalent to #delete([subject, predicate, nil]) followed by #insert([subject, predicate, object]) unless object is nil.

significantly affects performance. Use Enumerator form for large numbers of statements.

Overloads:

  • #update(*statements) ⇒ self

    Parameters:

    Returns:

    • (self)

    Raises:

    • (TypeError)

      if self is immutable

  • #update(statements) ⇒ self

    Parameters:

    Returns:

    • (self)

    Raises:

    • (TypeError)

      if self is immutable

Raises:

  • (TypeError)


119
120
121
122
123
124
125
126
127
128
129
130
131
132
# File 'lib/rdf/mixin/mutable.rb', line 119

def update(*statements)
  raise TypeError.new("#{self} is immutable") if immutable?
  statements = statements[0] if statements.length == 1 && statements[0].is_a?(Enumerable)

  statements.each do |statement|
    if (statement = Statement.from(statement))
      if statement.object?
        delete_insert([[statement.subject, statement.predicate, nil]], [statement])
      else
        delete([statement.subject, statement.predicate, nil])
      end
    end
  end
end