Class: SPARQL::Algebra::Operator::Compare

Inherits:
Operator::Binary
  • Object
show all
Includes:
Evaluatable
Defined in:
lib/sparql/algebra/operator/compare.rb

Overview

A SPARQL relational <=> comparison operator.

Constant Summary collapse

NAME =
:<=>

Instance Method Summary collapse

Methods included from Evaluatable

#evaluate, #memoize, #replace_aggregate!, #replace_vars!

Instance Method Details

#apply(left, right, **options) ⇒ RDF::Literal::Integer

Returns -1, 0, or 1, depending on whether the first operand is respectively less than, equal to, or greater than the second operand.

SPARQL also fixes an order between some kinds of RDF terms that would not otherwise be ordered:

(Lowest) no value assigned to the variable or expression in this solution.
Blank nodes
IRIs
RDF literals

Parameters:

  • left (RDF::Literal)

    a literal

  • right (RDF::Literal)

    a literal

Returns:

  • (RDF::Literal::Integer)

    -1, 0, or 1

Raises:

  • (TypeError)

    if either operand is not a term



34
35
36
# File 'lib/sparql/algebra/operator/compare.rb', line 34

def apply(left, right, **options)
  RDF::Literal(spaceship(left, right, **options))
end

#to_sparql(**options) ⇒ String

Returns a partial SPARQL grammar for this operator.

Returns:

  • (String)


43
44
45
# File 'lib/sparql/algebra/operator/compare.rb', line 43

def to_sparql(**options)
  "(#{operands.first.to_sparql(**options)} #{self.class.const_get(:NAME)} #{operands.last.to_sparql(**options)})"
end