Class: SPARQL::Algebra::Operator::StrEnds
- Includes:
- Evaluatable
- Defined in:
- lib/sparql/algebra/operator/strends.rb
Overview
A SPARQL strends operator.
[121] BuiltInCall ::= ... | 'STRENDS' '(' Expression ',' Expression ')'
Constant Summary collapse
- NAME =
:strends
Instance Method Summary collapse
-
#apply(left, right, **options) ⇒ RDF::Literal::Boolean
The STRENDS function corresponds to the XPath fn:ends-with function.
-
#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(left, right, **options) ⇒ RDF::Literal::Boolean
The STRENDS function corresponds to the XPath fn:ends-with function. The arguments must be argument compatible otherwise an error is raised.
For such input pairs, the function returns true if the lexical form of arg1 ends with the lexical form of arg2, otherwise it returns false.
49 50 51 52 53 54 55 56 |
# File 'lib/sparql/algebra/operator/strends.rb', line 49 def apply(left, right, **) case when !left.compatible?(right) raise TypeError, "expected two RDF::Literal operands, but got #{left.inspect} and #{right.inspect}" when left.to_s.end_with?(right.to_s) then RDF::Literal::TRUE else RDF::Literal::FALSE end end |
#to_sparql(**options) ⇒ String
Returns a partial SPARQL grammar for this operator.
63 64 65 |
# File 'lib/sparql/algebra/operator/strends.rb', line 63 def to_sparql(**) "STRENDS(" + operands.to_sparql(delimiter: ', ', **) + ")" end |