Class: SPARQL::Algebra::Operator::Exists

Inherits:
Unary show all
Includes:
Evaluatable
Defined in:
vendor/bundler/ruby/3.3.0/bundler/gems/sparql-796d3be4aa08/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

Examples:

SPARQL Grammar

PREFIX :    <http://example/>
SELECT *
WHERE {
  ?set a :Set .
  FILTER EXISTS { ?set :member 9 }
}

SSE

(prefix ((: <http://example/>))
 (filter
  (exists (bgp (triple ?set :member 9)))
  (bgp (triple ?set a :Set))))

See Also:

Constant Summary collapse

NAME =
[:exists]

Constants inherited from Unary

Unary::ARITY

Constants inherited from SPARQL::Algebra::Operator

ARITY, IsURI, URI

Constants included from Expression

Expression::PATTERN_PARENTS

Constants included from RDF::Util::Logger

RDF::Util::Logger::IOWrapper

Instance Attribute Summary

Attributes inherited from SPARQL::Algebra::Operator

#operands

Instance Method Summary collapse

Methods included from Evaluatable

#apply, #memoize, #replace_aggregate!, #replace_vars!

Methods inherited from Unary

#initialize

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_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?

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::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.

Parameters:

  • bindings (RDF::Query::Solution)

    a query solution containing zero or more variable bindings

  • options (Hash{Symbol => Object})

    ({}) options passed from query

  • options[RDF::Queryable] (Hash)

    a customizable set of options

Returns:



40
41
42
43
44
45
# File 'vendor/bundler/ruby/3.3.0/bundler/gems/sparql-796d3be4aa08/lib/sparql/algebra/operator/exists.rb', line 40

def evaluate(bindings, **options)
  queryable = options[:queryable]
  !operand(0).execute(queryable, solutions: RDF::Query::Solutions(bindings),
                                 depth: options[:depth].to_i + 1,
                                 **options).empty?
end

#to_sparql(top_level: true, **options) ⇒ String

Returns a partial SPARQL grammar for this operator.

Parameters:

  • top_level (Boolean) (defaults to: true)

    (true) Treat this as a top-level, generating SELECT ... WHERE {}

Returns:



54
55
56
57
58
# File 'vendor/bundler/ruby/3.3.0/bundler/gems/sparql-796d3be4aa08/lib/sparql/algebra/operator/exists.rb', line 54

def to_sparql(top_level: true, **options)
  "EXISTS {\n" +
    operands.last.to_sparql(top_level: false, **options) +
    "\n}"
end