Using standard math functions with SPARQL¶
GraphDB supports standard math functions to be used with SPARQL.
The following query summarizes all implemented math functions:
PREFIX f: <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 (f: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 (f:asin(0.5) AS ?asin)
# atan
# The arctangent function. The output is in the range (-pi/2, pi/2) radians.
BIND (f: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 (f:atan2(1, 0) AS ?atan2)
# cbrt
# The cubic root function.
BIND (f:cbrt(2) AS ?cbrt)
# copySign
# Returns the first floating-point argument with the sign of the second floating-point argument, see Math.copySign().
BIND (f:copySign(2, -7.5) AS ?copySign)
# cos
# The cosine function. The argument is in radians.
BIND (f:cos(1) AS ?cos)
# cosh
# The hyperbolic cosine function.
BIND (f:cosh(1) AS ?cosh)
# e
# The E constant, the base of the natural logarithm.
BIND (f:e() AS ?e)
# exp
# The exponent function, e^x.
BIND (f:exp(2) AS ?exp)
# expm1
# The Math.expm1() function. Returns e^x - 1.
BIND (f: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 (f:floorDiv(5, 2) AS ?floorDiv)
# floorMod
# Returns the floor modulus of the int arguments. The arguments are implicitly cast to long.
BIND (f: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 (f:getExponent(10) AS ?getExponent)
# hypot
# Returns sqrt(x^2 +y^2) without intermediate overflow or underflow.
BIND (f:hypot(3, 4) AS ?hypot)
# IEEEremainder
# Computes the remainder operation on two arguments as prescribed by the IEEE 754 standard.
BIND (f:IEEEremainder(3, 4) AS ?IEEEremainder)
# log
# The natural logarithm function.
BIND (f:log(4) AS ?log)
# log10
# The common (decimal) logarithm function.
BIND (f:log10(4) AS ?log10)
# log1p
# The Math.log1p() function.
# Returns the natural logarithm of the sum of the argument and 1.
BIND (f:log1p(4) AS ?log1p)
# max
# The greater of two numbers.
BIND (f:max(3, 5) AS ?max)
# min
# The The smaller of two numbers.
BIND (f:min(3, 5) AS ?min)
# nextAfter
# Returns the floating-point number adjacent to the first argument in the direction of the second argument.
BIND (f:nextAfter(2, -7) AS ?nextAfter)
# nextDown
# Returns the floating-point value adjacent to d in the direction of negative infinity.
BIND (f:nextDown(2) AS ?nextDown)
# nextUp
# Returns the floating-point value adjacent to d in the direction of positive infinity.
BIND (f:nextUp(2) AS ?nextUp)
# pi
# The Pi constant.
BIND (f:pi() AS ?pi)
# pow
# The power function.
BIND (f: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 (f: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 (f: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 (f:signum(-5) AS ?signum)
# sin
# The sine function. The argument is in radians.
BIND (f:sin(2) AS ?sin)
# sinh
# The hyperbolic sine function.
BIND (f:sinh(2) AS ?sinh)
# sqrt
# The square root function.
BIND (f:sqrt(2) AS ?sqrt)
# tan
# The tangent function. The argument is in radians.
BIND (f:tan(1) AS ?tan)
# tanh
# The hyperbolic tangent function.
BIND (f:tanh(1) AS ?tanh)
# toDegrees
# Converts an angle measured in radians to an approximately equivalent angle measured in degrees.
BIND (f:toDegrees(1) AS ?toDegrees)
# toRadians
# Converts an angle measured in degrees to an approximately equivalent angle measured in radians.
BIND (f:toRadians(1) AS ?toRadians)
# 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 (f:ulp(1) AS ?ulp)
}
Note
All variables in the BIND clauses should be bound.
The result of the query evaluatuion 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>
toRadians="0.017453292519943295"^^<http://www.w3.org/2001/XMLSchema#double>
ulp="2.220446049250313E-16"^^<http://www.w3.org/2001/XMLSchema#double>