This page describes function-like operators that can be used in expressions, such as FILTERs, assignments and SELECT expressions.
These are not strictly functions - the evaluation semantics of custom
functions is to evaluate each argument then call the function with the results
of the sub-expressions. Examples in standard SPARQL include bound
,
which does not evaluate a variable as an expression but just tests whether it is
set or not, and boolean operators ||
and &&
which
handle errors and do not just evaluate each branch and combining the results.
ARQ adds two forms: IF
and COALESCE.
IF
and COALESCE
involve syntactic extension and are available if the query
is parsed with language Syntax.syntaxARQ
.
The IF
form evaluates it's first argument to get a boolean
result, then evaluates and return the value of the second if the boolean result
is true, and the third argument if it is false.
Examples:
IF ( ?x<0 , "negative" , "positive" )
# A possible way to do default values. LET( ?z := IF(bound(?z) , ?z , "DftValue" ) )
The COALESCE
form returns the first argument of it's argument
list that is bound.
# Suppose ?y is bound to "y" and ?z to "z" but ?x is not. COALESCE(?x , ?y , ?z) # return "y"