Class: SPARQL::Algebra::Operator::NotExists
- Includes:
- Evaluatable
- Defined in:
- lib/sparql/algebra/operator/notexists.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{...}).
[126] NotExistsFunc ::= 'NOT' 'EXISTS' GroupGraphPattern
Constant Summary collapse
- NAME =
[:notexists]
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!
Instance Method Details
#evaluate(bindings, **options) ⇒ RDF::Literal::Boolean
Exvaluating this operator executes the query in the first operator passing in each existing bindings.
43 44 45 46 47 |
# File 'lib/sparql/algebra/operator/notexists.rb', line 43 def evaluate(bindings, **) solutions = RDF::Query::Solutions(bindings) queryable = [:queryable] operand(0).execute(queryable, solutions: solutions, **).empty? end |
#to_sparql(top_level: true, **options) ⇒ String
Returns a partial SPARQL grammar for this operator.
56 57 58 59 60 |
# File 'lib/sparql/algebra/operator/notexists.rb', line 56 def to_sparql(top_level: true, **) "NOT EXISTS {\n" + operands.last.to_sparql(top_level: false, **) + "\n}" end |