Class: SPARQL::Algebra::Operator::Delete
- Inherits:
-
Unary
- Object
- SPARQL::Algebra::Operator
- Unary
- SPARQL::Algebra::Operator::Delete
- Includes:
- Update
- Defined in:
- lib/sparql/algebra/operator/delete.rb
Overview
The SPARQL UPDATE delete
operator.
The DELETE operation is a form of the DELETE/INSERT operation having no INSERT section
[42] DeleteClause ::= ‘DELETE’ QuadPattern
Constant Summary collapse
- NAME =
[:delete]
Constants inherited from Unary
Constants inherited from SPARQL::Algebra::Operator
Constants included from Expression
Instance Attribute Summary
Attributes inherited from SPARQL::Algebra::Operator
Instance Method Summary collapse
-
#execute(queryable, solutions: nil, **options) ⇒ RDF::Queryable
Executes this upate on the given
writable
graph or repository. -
#to_sparql(**options) ⇒ String
Returns a partial SPARQL grammar for this term.
Methods included from Update
#graph_name=, #unshift, #variables
Methods inherited from Unary
Methods inherited from SPARQL::Algebra::Operator
#aggregate?, arity, #base_uri, base_uri, base_uri=, #bind, #boolean, #constant?, #deep_dup, #each_descendant, #eql?, #evaluatable?, evaluate, #executable?, #first_ancestor, for, #initialize, #inspect, #ndvars, #node?, #operand, #optimize, #optimize!, #parent, #parent=, #prefixes, prefixes, prefixes=, #rewrite, #to_binary, to_sparql, #to_sxp, #to_sxp_bin, #validate!, #variable?, #variables, #vars
Methods included from Expression
cast, #constant?, #evaluate, extension, extension?, extensions, for, #invalid?, new, #node?, open, #optimize, #optimize!, parse, register_extension, #to_sxp_bin, #valid?, #validate!, #variable?
Constructor Details
This class inherits a constructor from SPARQL::Algebra::Operator::Unary
Instance Method Details
#execute(queryable, solutions: nil, **options) ⇒ RDF::Queryable
Executes this upate on the given writable
graph or repository.
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/sparql/algebra/operator/delete.rb', line 50 def execute(queryable, solutions: nil, **) debug() {"Delete: #{solutions} against #{operands.to_sse}"} # Only binds the first solution solution = solutions.is_a?(RDF::Query::Solutions) ? solutions.first : solutions # Operands are an array of patterns and Queries (when named). # Create a new query made up all patterns patterns = operand.inject([]) do |memo, op| if op.respond_to?(:statements) memo += op.statements.to_a else memo << op end memo end patterns.each do |pattern| pattern = pattern.dup.bind(solution) debug() {"Delete pattern #{pattern.to_sse}"} queryable.delete(RDF::Statement.from(pattern)) if pattern.bound? || pattern.constant? end queryable end |
#to_sparql(**options) ⇒ String
Returns a partial SPARQL grammar for this term.
77 78 79 80 81 |
# File 'lib/sparql/algebra/operator/delete.rb', line 77 def to_sparql(**) "DELETE {\n" + operands.first.to_sparql(delimiter: " .\n", **) + "\n}" end |