Class: SPARQL::Algebra::Operator::StrStarts
- Inherits:
-
Binary
- Object
- SPARQL::Algebra::Operator
- Binary
- SPARQL::Algebra::Operator::StrStarts
- Includes:
- Evaluatable
- Defined in:
- vendor/bundler/ruby/2.7.0/bundler/gems/sparql-881ac01048a7/lib/sparql/algebra/operator/strstarts.rb
Overview
A SPARQL strstarts
operator.
Constant Summary collapse
- NAME =
:strstarts
Constants inherited from Binary
Constants inherited from SPARQL::Algebra::Operator
Instance Attribute Summary
Attributes inherited from SPARQL::Algebra::Operator
Instance Method Summary collapse
-
#apply(left, right) ⇒ RDF::Literal::Boolean
The STRSTARTS function corresponds to the XPath fn:starts-with function.
Methods included from Evaluatable
#evaluate, #memoize, #replace_aggregate!, #replace_vars!
Methods inherited from Binary
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, #formulae, #initialize, #inspect, #ndvars, #node?, #operand, #optimize, #optimize!, #parent, #parent=, #prefixes, prefixes, prefixes=, #rewrite, #to_binary, #to_sxp, #to_sxp_bin, #validate!, #variable?, #vars
Methods included from Expression
cast, #constant?, #evaluate, 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) ⇒ RDF::Literal::Boolean
The STRSTARTS function corresponds to the XPath fn:starts-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 starts with the lexical form of arg2, otherwise it returns false.
36 37 38 39 40 41 42 43 |
# File 'vendor/bundler/ruby/2.7.0/bundler/gems/sparql-881ac01048a7/lib/sparql/algebra/operator/strstarts.rb', line 36 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.start_with?(right.to_s) then RDF::Literal::TRUE else RDF::Literal::FALSE end end |