Class: SPARQL::Algebra::Operator::Insert
- Includes:
- Update
- Defined in:
- lib/sparql/algebra/operator/insert.rb
Overview
The SPARQL UPDATE insertData operator.
The INSERT operation is a form of the DELETE/INSERT operation having no DELETE section
[43] InsertClause ::= 'INSERT' QuadPattern
Constant Summary collapse
- NAME =
[:insert]
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.
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/sparql/algebra/operator/insert.rb', line 45 def execute(queryable, solutions: nil, **) # Only binds the first solution solution = solutions.is_a?(RDF::Query::Solutions) ? solutions.first : solutions debug() {"Insert"} 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() {"Insert pattern #{pattern.to_sse}"} # Only insert bound or constant patterns queryable.insert(RDF::Statement.from(pattern)) if pattern.bound? || pattern.constant? end queryable end |
#to_sparql(**options) ⇒ String
Returns a partial SPARQL grammar for this term.
71 72 73 74 75 |
# File 'lib/sparql/algebra/operator/insert.rb', line 71 def to_sparql(**) "INSERT {\n" + operands.first.to_sparql(delimiter: " .\n", **) + "\n}" end |