class SPARQL::Algebra::Operator::Exprlist

The SPARQL GraphPattern `exprlist` operator.

Used for filters with more than one expression.

@example

(prefix ((: <http://example/>))
  (project (?v ?w)
    (filter (exprlist (= ?v 2) (= ?w 3))
      (bgp
        (triple ?s :p ?v)
        (triple ?s :q ?w)
      ))))

@see www.w3.org/TR/sparql11-query/#evaluation

Constants

NAME

Public Instance Methods

evaluate(bindings, **options) click to toggle source

Returns `true` if all operands evaluate to `true`.

Note that this operator operates on the effective boolean value (EBV) of its operands.

@example

(exprlist (= 1 1) (!= 1 0))

@param [RDF::Query::Solution] bindings

a query solution containing zero or more variable bindings

@param [Hash{Symbol => Object}] options ({})

options passed from query

@return [RDF::Literal::Boolean] `true` or `false` @raise [TypeError] if the operands could not be coerced to a boolean literal

# File lib/sparql/algebra/operator/exprlist.rb, line 39
def evaluate(bindings, **options)
  res = operands.all? {|op| boolean(op.evaluate(bindings, depth: options[:depth].to_i + 1, **options)).true? }
  RDF::Literal(res) # FIXME: error handling
end