Class: LD::Patch::Algebra::Bind
- Inherits:
-
SPARQL::Algebra::Operator::Ternary
- Object
- SPARQL::Algebra::Operator
- SPARQL::Algebra::Operator::Ternary
- LD::Patch::Algebra::Bind
- Defined in:
- vendor/bundler/ruby/3.3.0/bundler/gems/ld-patch-a8edc852261e/lib/ld/patch/algebra/bind.rb
Overview
The LD Patch bind
operator.
The Bind operation is used to bind a single term to a variable.
Constant Summary collapse
- NAME =
:bind
Constants inherited from SPARQL::Algebra::Operator::Ternary
SPARQL::Algebra::Operator::Ternary::ARITY
Constants inherited from SPARQL::Algebra::Operator
SPARQL::Algebra::Operator::ARITY, SPARQL::Algebra::Operator::IsURI, SPARQL::Algebra::Operator::URI
Constants included from SPARQL::Algebra::Expression
SPARQL::Algebra::Expression::PATTERN_PARENTS
Constants included from RDF::Util::Logger
Instance Attribute Summary
Attributes included from SPARQL::Algebra::Query
Attributes inherited from SPARQL::Algebra::Operator
Instance Method Summary collapse
-
#execute(queryable, options = {}) ⇒ RDF::Query::Solutions
Maps the value to a single output term by executing the path and updates
bindings
withvar
set to that output term.
Methods included from SPARQL::Algebra::Evaluatable
#apply, #evaluate, #memoize, #replace_aggregate!, #replace_vars!
Methods included from SPARQL::Algebra::Query
#each_solution, #empty?, #failed?, #graph_name=, #matched?, #query_yields_boolean?, #query_yields_solutions?, #query_yields_statements?, #unshift, #variables
Methods inherited from SPARQL::Algebra::Operator::Ternary
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, #formulae, #initialize, #inspect, #mergable?, #ndvars, #node?, #operand, #optimize, #optimize!, #parent, #parent=, prefixes, #prefixes, prefixes=, #rewrite, #to_binary, #to_sparql, to_sparql, #to_sxp, #to_sxp_bin, #validate!, #variable?, #variables, #vars
Methods included from SPARQL::Algebra::Expression
cast, #constant?, #evaluate, extension, extension?, extensions, for, #invalid?, new, #node?, open, #optimize, #optimize!, parse, register_extension, #to_sxp_bin, #valid?, #validate!, #variable?
Methods included from RDF::Util::Logger
#log_debug, #log_depth, #log_error, #log_fatal, #log_info, #log_recover, #log_recovering?, #log_statistics, #log_warn, #logger
Constructor Details
This class inherits a constructor from SPARQL::Algebra::Operator::Ternary
Instance Method Details
#execute(queryable, options = {}) ⇒ RDF::Query::Solutions
Maps the value to a single output term by executing the path and updates bindings
with var
set to that output term
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'vendor/bundler/ruby/3.3.0/bundler/gems/ld-patch-a8edc852261e/lib/ld/patch/algebra/bind.rb', line 69 def execute(queryable, = {}) debug() {"Bind"} bindings = .fetch(:bindings) solution = bindings.first var, value, path = operands # Bind variables to path if value.variable? raise LD::Patch::Error.new("Operand uses unbound variable #{value.inspect}", code: 400) unless solution.bound?(value) value = solution[value] end path = path.dup.replace_vars! do |v| raise Error, "Operand uses unbound variable #{v.inspect}" unless solution.bound?(v) solution[v] end results = path.execute(queryable, terms: [value]) raise LD::Patch::Error, "Bind path bound to #{results.length} terms, expected just one" unless results.length == 1 RDF::Query::Solutions.new [solution.merge(var.to_sym => results.first.path)] end |