Class: SPARQL::Algebra::Operator::Exists
- Inherits:
-
Unary
- Object
- SPARQL::Algebra::Operator
- Unary
- SPARQL::Algebra::Operator::Exists
- Includes:
- Evaluatable
- Defined in:
- lib/sparql/algebra/operator/exists.rb
Overview
The SPARQL logical exists
operator.
There is a filter operator EXISTS that takes a graph pattern. EXISTS returns true
/false
depending on whether the pattern matches the dataset given the bindings in the current group graph pattern, the dataset and the active graph at this point in the query evaluation. No additional binding of variables occurs. The NOT EXISTS
form translates into fn:not(EXISTS{...})
.
[125] ExistsFunc ::= ‘EXISTS’ GroupGraphPattern
Constant Summary collapse
- NAME =
[:exists]
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
-
#evaluate(bindings, **options) ⇒ RDF::Literal::Boolean
Exvaluating this operator executes the query in the first operator passing in each existing bindings.
-
#to_sparql(top_level: true, **options) ⇒ String
Returns a partial SPARQL grammar for this operator.
Methods included from Evaluatable
#apply, #memoize, #replace_aggregate!, #replace_vars!
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?, 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
#evaluate(bindings, **options) ⇒ RDF::Literal::Boolean
Exvaluating this operator executes the query in the first operator passing in each existing bindings.
40 41 42 43 44 45 |
# File 'lib/sparql/algebra/operator/exists.rb', line 40 def evaluate(bindings, **) queryable = [:queryable] !operand(0).execute(queryable, solutions: RDF::Query::Solutions(bindings), depth: [:depth].to_i + 1, **).empty? end |
#to_sparql(top_level: true, **options) ⇒ String
Returns a partial SPARQL grammar for this operator.
54 55 56 57 58 |
# File 'lib/sparql/algebra/operator/exists.rb', line 54 def to_sparql(top_level: true, **) "EXISTS {\n" + operands.last.to_sparql(top_level: false, **) + "\n}" end |