UNPKG

@jahed/sparql-engine

Version:

SPARQL query engine for servers and web browsers.

88 lines 4.37 kB
import { asJS, createFloat, literalIsNumeric, RDF, termIsLiteral, } from "../../utils/rdf.js"; export default { /* Hyperbolic functions (cosh, sinh, tanh, ...) https://en.wikipedia.org/wiki/Hyperbolic_function */ // Hyperbolic cosinus "https://callidon.github.io/sparql-engine/functions#cosh": function (x) { if (termIsLiteral(x) && literalIsNumeric(x)) { const value = asJS(x.value, x.datatype.value); return createFloat(Math.cosh(value)); } throw new SyntaxError(`SPARQL expression error: cannot compute the hyperbolic cosinus of ${x}, as it is not a number`); }, // Hyperbolic sinus "https://callidon.github.io/sparql-engine/functions#sinh": function (x) { if (termIsLiteral(x) && literalIsNumeric(x)) { const value = asJS(x.value, x.datatype.value); return createFloat(Math.sinh(value)); } throw new SyntaxError(`SPARQL expression error: cannot compute the hyperbolic sinus of ${x}, as it is not a number`); }, // Hyperbolic tangent "https://callidon.github.io/sparql-engine/functions#tanh": function (x) { if (termIsLiteral(x) && literalIsNumeric(x)) { const value = asJS(x.value, x.datatype.value); return createFloat(Math.tanh(value)); } throw new SyntaxError(`SPARQL expression error: cannot compute the hyperbolic tangent of ${x}, as it is not a number`); }, // Hyperbolic cotangent "https://callidon.github.io/sparql-engine/functions#coth": function (x) { if (termIsLiteral(x) && literalIsNumeric(x)) { const value = asJS(x.value, x.datatype.value); if (value === 0) { throw new SyntaxError(`SPARQL expression error: cannot compute the hyperbolic cotangent of ${x}, as it is equals to 0`); } return createFloat((Math.exp(2 * value) + 1) / (Math.exp(2 * value) - 1)); } throw new SyntaxError(`SPARQL expression error: cannot compute the hyperbolic cotangent of ${x}, as it is not a number`); }, // Hyperbolic secant "https://callidon.github.io/sparql-engine/functions#sech": function (x) { if (termIsLiteral(x) && literalIsNumeric(x)) { const value = asJS(x.value, x.datatype.value); return createFloat((2 * Math.exp(value)) / (Math.exp(2 * value) + 1)); } throw new SyntaxError(`SPARQL expression error: cannot compute the hyperbolic secant of ${x}, as it is not a number`); }, // Hyperbolic cosecant "https://callidon.github.io/sparql-engine/functions#csch": function (x) { if (termIsLiteral(x) && literalIsNumeric(x)) { const value = asJS(x.value, x.datatype.value); return createFloat((2 * Math.exp(value)) / (Math.exp(2 * value) - 1)); } throw new SyntaxError(`SPARQL expression error: cannot compute the hyperbolic cosecant of ${x}, as it is not a number`); }, /* Radians to Degree & Degrees to Randians transformations */ "https://callidon.github.io/sparql-engine/functions#toDegrees": function (x) { if (termIsLiteral(x) && literalIsNumeric(x)) { const value = asJS(x.value, x.datatype.value); return createFloat(value * (180 / Math.PI)); } throw new SyntaxError(`SPARQL expression error: cannot convert ${x} to degrees, as it is does not look like radians`); }, "https://callidon.github.io/sparql-engine/functions#toRadians": function (x) { if (termIsLiteral(x) && literalIsNumeric(x)) { const value = asJS(x.value, x.datatype.value); return createFloat(value * (Math.PI / 180)); } throw new SyntaxError(`SPARQL expression error: cannot convert ${x} to radians, as it is does not look like degrees`); }, /* Generator functions, i.e? SPARQL expression whose evaluation generates several RDF Terms */ // Split a RDF Term as a string using a separator "https://callidon.github.io/sparql-engine/functions#strsplit": function (term, separator) { return (function* () { for (let token of term.value.split(separator.value)) { yield RDF.literal(token); } return; })(); }, }; //# sourceMappingURL=custom-operations.js.map