Class: SPARQL::Algebra::Operator::Insert
- Inherits:
-
Unary
- Object
- SPARQL::Algebra::Operator
- Unary
- 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]
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.
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 |