Sha256: 0721f03b17fd58415f80def622c08b50f5f718a355c79713930e7c9e63574c8e
Contents?: true
Size: 1.69 KB
Versions: 4
Compression:
Stored size: 1.69 KB
Contents
module LD::Patch::Algebra ## # The LD Patch `cut` operator. # # The Cut operation is recursively remove triples from some starting node. # # @example # (cut ?a) # class Cut < SPARQL::Algebra::Operator::Unary include SPARQL::Algebra::Update include SPARQL::Algebra::Evaluatable NAME = :cut ## # 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. # @see http://www.w3.org/TR/sparql11-update/ 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 end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
ld-patch-3.3.0 | lib/ld/patch/algebra/cut.rb |
ld-patch-3.2.2 | lib/ld/patch/algebra/cut.rb |
ld-patch-3.2.0 | lib/ld/patch/algebra/cut.rb |
ld-patch-3.1.3 | lib/ld/patch/algebra/cut.rb |