# Using math functions with SPARQL¶

GraphDB supports standard math functions to be used with SPARQL.

The following query summarizes all implemented math functions:

PREFIX ofn: <http://www.ontotext.com/sparql/functions/>

SELECT * {

# acos
# The arccosine function. The input is in the range[-1, +1]. The output is in the range [0, pi] radians.
BIND (ofn:acos(0.5) AS ?acos)

# asin
# The arcsine function. The input is in the range[-1, +1]. The output is in the range [-pi/2, pi/2] radians.
BIND (ofn:asin(0.5) AS ?asin)

# atan
# The arctangent function. The output is in the range (-pi/2, pi/2) radians.
BIND (ofn:atan(1) AS ?atan)

# atan2
# The double-argument arctangent function (the angle component of the conversion from rectangular coordinates
# to polar coordinates), see Math.atan2().
# The output is in the range [-pi/2, pi/2] radians.
BIND (ofn:atan2(1, 0) AS ?atan2)

# cbrt
# The cubic root function.
BIND (ofn:cbrt(2) AS ?cbrt)

# copySign
# Returns the first floating-point argument with the sign of the second floating-point argument, see Math.copySign().
BIND (ofn:copySign(2, -7.5) AS ?copySign)

# cos
# The cosine function. The argument is in radians.
BIND (ofn:cos(1) AS ?cos)

# cosh
# The hyperbolic cosine function.
BIND (ofn:cosh(1) AS ?cosh)

# e
# The E constant, the base of the natural logarithm.
BIND (ofn:e() AS ?e)

# exp
# The exponent function, e^x.
BIND (ofn:exp(2) AS ?exp)

# expm1
# The Math.expm1() function. Returns e^x - 1.
BIND (ofn:expm1(3) AS ?expm1)

# floorDiv
# Returns the largest (closest to positive infinity) int value that is less than or equal to the algebraic quotient.
# The arguments are implicitly cast to long.
BIND (ofn:floorDiv(5, 2) AS ?floorDiv)

# floorMod
# Returns the floor modulus of the int arguments. The arguments are implicitly cast to long.
BIND (ofn:floorMod(10, 3) AS ?floorMod)

# getExponent
# Returns the unbiased exponent used in the representation of a double.
# This means that we take N from the binary representation of X: X = 1 * 2^N + {1|0} * 2^(N-1) + ... + {1|0} * 2^0,
# i.e. the power of the highest non-zero bit of the binary form of X.
BIND (ofn:getExponent(10) AS ?getExponent)

# hypot
# Returns sqrt(x^2 +y^2) without intermediate overflow or underflow.
BIND (ofn:hypot(3, 4) AS ?hypot)

# IEEEremainder
# Computes the remainder operation on two arguments as prescribed by the IEEE 754 standard.
BIND (ofn:IEEEremainder(3, 4) AS ?IEEEremainder)

# log
# The natural logarithm function.
BIND (ofn:log(4) AS ?log)

# log10
# The common (decimal) logarithm function.
BIND (ofn:log10(4) AS ?log10)

# log1p
# The Math.log1p() function.
# Returns the natural logarithm of the sum of the argument and 1.
BIND (ofn:log1p(4) AS ?log1p)

# max
# The greater of two numbers.
BIND (ofn:max(3, 5) AS ?max)

# min
# The The smaller of two numbers.
BIND (ofn:min(3, 5) AS ?min)

# nextAfter
# Returns the floating-point number adjacent to the first argument in the direction of the second argument.
BIND (ofn:nextAfter(2, -7) AS ?nextAfter)

# nextDown
# Returns the floating-point value adjacent to d in the direction of negative infinity.
BIND (ofn:nextDown(2) AS ?nextDown)

# nextUp
# Returns the floating-point value adjacent to d in the direction of positive infinity.
BIND (ofn:nextUp(2) AS ?nextUp)

# pi
# The Pi constant.
BIND (ofn:pi() AS ?pi)

# pow
# The power function.
BIND (ofn:pow(2, 3) AS ?pow)

# rint
# Returns the double value that is closest in value to the argument and is equal to a mathematical integer.
BIND (ofn:rint(2.51) AS ?rint)

# scalb
# Returns x × 2^scaleFactor rounded as if performed by a single correctly rounded floating-point multiply
# to a member of the double value set.
BIND (ofn:scalb(3, 3) AS ?scalb)

# signum
# Returns the signum function of the argument; zero if the argument is zero, 1.0 if the argument is greater than zero,
# -1.0 if the argument is less than zero.
BIND (ofn:signum(-5) AS ?signum)

# sin
# The sine function. The argument is in radians.
BIND (ofn:sin(2) AS ?sin)

# sinh
# The hyperbolic sine function.
BIND (ofn:sinh(2) AS ?sinh)

# sqrt
# The square root function.
BIND (ofn:sqrt(2) AS ?sqrt)

# tan
# The tangent function. The argument is in radians.
BIND (ofn:tan(1) AS ?tan)

# tanh
# The hyperbolic tangent function.
BIND (ofn:tanh(1) AS ?tanh)

# toDegrees
# Converts an angle measured in radians to an approximately equivalent angle measured in degrees.
BIND (ofn:toDegrees(1) AS ?toDegrees)

# Converts an angle measured in degrees to an approximately equivalent angle measured in radians.

# ulp
# Returns the size of an ulp of the argument.
# An ulp, unit in the last place, of a double value is the positive distance between this floating-point value
# and the double value next larger in magnitude. Note that for non-NaN x, ulp(-x) == ulp(x). See Math.ulp().
BIND (ofn:ulp(1) AS ?ulp)

}


Note

All function arguments should be bound.

The result of the query evaluation is:

acos="1.0471975511965979"^^<http://www.w3.org/2001/XMLSchema#double>
asin="0.5235987755982989"^^<http://www.w3.org/2001/XMLSchema#double>
atan="0.7853981633974483"^^<http://www.w3.org/2001/XMLSchema#double>
atan2="1.5707963267948966"^^<http://www.w3.org/2001/XMLSchema#double>
cbrt="1.2599210498948732"^^<http://www.w3.org/2001/XMLSchema#double>
copySign="-2.0"^^<http://www.w3.org/2001/XMLSchema#double>
cos="0.5403023058681398"^^<http://www.w3.org/2001/XMLSchema#double>
cosh="1.543080634815244"^^<http://www.w3.org/2001/XMLSchema#double>
e="2.718281828459045"^^<http://www.w3.org/2001/XMLSchema#double>
exp="7.38905609893065"^^<http://www.w3.org/2001/XMLSchema#double>
expm1="19.085536923187668"^^<http://www.w3.org/2001/XMLSchema#double>
floorDiv="2.0"^^<http://www.w3.org/2001/XMLSchema#double>
floorMod="1.0"^^<http://www.w3.org/2001/XMLSchema#double>
getExponent="3.0"^^<http://www.w3.org/2001/XMLSchema#double>
hypot="5.0"^^<http://www.w3.org/2001/XMLSchema#double>
IEEEremainder="-1.0"^^<http://www.w3.org/2001/XMLSchema#double>
log10="0.6020599913279624"^^<http://www.w3.org/2001/XMLSchema#double>
log="1.3862943611198906"^^<http://www.w3.org/2001/XMLSchema#double>
log1p="1.6094379124341003"^^<http://www.w3.org/2001/XMLSchema#double>
max="5.0"^^<http://www.w3.org/2001/XMLSchema#double>
min="3.0"^^<http://www.w3.org/2001/XMLSchema#double>
nextAfter="1.9999999999999998"^^<http://www.w3.org/2001/XMLSchema#double>
nextDown="1.9999999999999998"^^<http://www.w3.org/2001/XMLSchema#double>
nextUp="2.0000000000000004"^^<http://www.w3.org/2001/XMLSchema#double>
pi="3.141592653589793"^^<http://www.w3.org/2001/XMLSchema#double>
pow="8.0"^^<http://www.w3.org/2001/XMLSchema#double>
rint="3.0"^^<http://www.w3.org/2001/XMLSchema#double>
scalb="24.0"^^<http://www.w3.org/2001/XMLSchema#double>
signum="-1.0"^^<http://www.w3.org/2001/XMLSchema#double>
sin="0.9092974268256817"^^<http://www.w3.org/2001/XMLSchema#double>
sinh="3.626860407847019"^^<http://www.w3.org/2001/XMLSchema#double>
sqrt="1.4142135623730951"^^<http://www.w3.org/2001/XMLSchema#double>
tan="1.5574077246549023"^^<http://www.w3.org/2001/XMLSchema#double>
tanh="0.7615941559557649"^^<http://www.w3.org/2001/XMLSchema#double>
toDegrees="57.29577951308232"^^<http://www.w3.org/2001/XMLSchema#double>