class LD::Patch::Algebra::Cut
The Cut
operation is recursively remove triples from some starting node.
@example
(cut ?a)
Constants
- NAME
Public Instance Methods
Source
# File lib/ld/patch/algebra/cut.rb, line 28 def execute(queryable, options = {}) debug(options) {"Cut"} bindings = options.fetch(:bindings) solution = bindings.first var = operand(0) # Bind variable raise LD::Patch::Error.new("Operand uses unbound variable #{var.inspect}", code: 400) unless solution.bound?(var) var = solution[var] cut_count = 0 # Get triples to delete using consice bounded description queryable.concise_bounded_description(var) do |statement| queryable.delete(statement) cut_count += 1 end # Also delete triples having var in the object position queryable.query({object: var}).each do |statement| queryable.delete(statement) cut_count += 1 end raise LD::Patch::Error, "Cut removed no triples" unless cut_count > 0 bindings end
Executes this upate on the given ‘writable` graph or repository.
@param [RDF::Queryable] queryable
the graph or repository to write
@param [Hash{Symbol => Object}] options
any additional options
@return [RDF::Query::Solutions] A single solution including passed bindings with ‘var` bound to the solution. @raise [IOError]
If no triples are identified, or the operand is an unbound variable or the operand is an unbound variable.