Class: 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]
Instance Method Summary collapse
-
#execute(queryable, solutions: nil, **options) ⇒ RDF::Queryable
Executes this upate on the given
writablegraph or repository. -
#to_sparql(**options) ⇒ String
Returns a partial SPARQL grammar for this term.
Methods included from Update
#empty?, #graph_name=, #unshift, #variables
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 |