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

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

Overview

A SPARQL relational <=> comparison operator.

Constant Summary collapse

NAME =
:<=>

Constants inherited from Binary

Binary::ARITY

Constants inherited from SPARQL::Algebra::Operator

ARITY, IsURI, URI

Constants included from Expression

Expression::PATTERN_PARENTS

Instance Attribute Summary

Attributes inherited from SPARQL::Algebra::Operator

#operands

Instance Method Summary collapse

Methods included from Evaluatable

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

Methods inherited from Binary

#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, #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?, #evaluate, 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::Binary

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