Class: SPARQL::Algebra::Operator::Floor
- Includes:
- Evaluatable
- Defined in:
- lib/sparql/algebra/operator/floor.rb
Overview
The SPARQL logical floor operator.
[121] BuiltInCall ::= ... 'FLOOR' '(' Expression ')'
Constant Summary collapse
- NAME =
[:floor]
Instance Method Summary collapse
-
#apply(operand, **options) ⇒ RDF::Literal
Returns the largest (closest to positive infinity) number with no fractional part that is not greater than the value of
arg. -
#to_sparql(**options) ⇒ String
Returns a partial SPARQL grammar for this operator.
Methods included from Evaluatable
#evaluate, #memoize, #replace_aggregate!, #replace_vars!
Instance Method Details
#apply(operand, **options) ⇒ RDF::Literal
Returns the largest (closest to positive infinity) number with no fractional part that is not greater than the value of arg. An error is raised if arg is not a numeric value.
If type of $arg is one of the four numeric types xs:float, xs:double, xs:decimal or xs:integer the type of the result is the same as the type of $arg. If the type of $arg is a type derived from one of the numeric types, the result is an instance of the base numeric type.
For float and double arguments, if the argument is positive zero, then positive zero is returned. If the argument is negative zero, then negative zero is returned.
41 42 43 44 45 46 |
# File 'lib/sparql/algebra/operator/floor.rb', line 41 def apply(operand, **) case operand when RDF::Literal::Numeric then operand.floor else raise TypeError, "expected an RDF::Literal::Numeric, but got #{operand.inspect}" end end |
#to_sparql(**options) ⇒ String
Returns a partial SPARQL grammar for this operator.
53 54 55 |
# File 'lib/sparql/algebra/operator/floor.rb', line 53 def to_sparql(**) "FLOOR(#{operands.to_sparql(**)})" end |