Sha256: f33dffa52f6105bc5171a4d2364dfe42ffbf3e953835277befc84c06ed1a336c
Contents?: true
Size: 1.98 KB
Versions: 2
Compression:
Stored size: 1.98 KB
Contents
module SPARQL; module Algebra class Operator ## # The SPARQL `if` function. # # @example # (base <http://example.org/> # (prefix ((xsd: <http://www.w3.org/2001/XMLSchema#>)) # (project (?o ?integer) # (extend ((?integer (if (= (lang ?o) "ja") true false))) # (bgp (triple ?s ?p ?o)))))) # # @see http://www.w3.org/TR/sparql11-query/#func-if class If < Operator::Ternary include Evaluatable NAME = :if ## # The IF function form evaluates the first argument, interprets it as a effective boolean value, then returns the value of expression2 if the EBV is true, otherwise it returns the value of expression3. Only one of expression2 and expression3 is evaluated. If evaluating the first argument raises an error, then an error is raised for the evaluation of the IF expression. # # @example # # IF(?x = 2, "yes", "no") #=> "yes" # IF(bound(?y), "yes", "no") #=> "no" # IF(?x=2, "yes", 1/?z) #=> "yes", the expression 1/?z is not evaluated # IF(?x=1, "yes", 1/?z) #=> raises an error # IF("2" > 1, "yes", "no") #=> raises an error # # Evaluates the first operand and returns the evaluation of either the second or third operands # # @param [RDF::Query::Solution, #[]] bindings # a query solution containing zero or more variable bindings # @return [RDF::Term] # @raise [TypeError] def evaluate(bindings = {}) operand(0).evaluate(bindings) == RDF::Literal::TRUE ? operand(1).evaluate(bindings) : operand(2).evaluate(bindings) rescue raise TypeError end ## # Returns an optimized version of this query. # # Return optimized query # # @return [Union, RDF::Query] `self` def optimize operands = operands.map(&:optimize) end end # If end # Operator end; end # SPARQL::Algebra
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
sparql-1.0.8 | lib/sparql/algebra/operator/if.rb |
sparql-1.0.7 | lib/sparql/algebra/operator/if.rb |