UNPKG

@jahed/sparql-engine

Version:

SPARQL query engine for servers and web browsers.

26 lines 1.13 kB
import { Pipeline } from "../engine/pipeline/pipeline.js"; import { SPARQLExpression, } from "./expressions/sparql-expression.js"; import { Bindings } from "../rdf/bindings.js"; import { literalIsBoolean, termIsLiteral, termToValue } from "../utils/rdf.js"; /** * Evaluate SPARQL Filter clauses * @see {@link https://www.w3.org/TR/sparql11-query/#expressions} * @param source - Input {@link PipelineStage} * @param expression - FILTER expression * @param customFunctions - User-defined SPARQL functions (optional) * @return A {@link PipelineStage} which evaluate the FILTER operation */ export default function sparqlFilter(source, expression, customFunctions) { const expr = new SPARQLExpression(expression, customFunctions); return Pipeline.getInstance().filterAsync(source, async (bindings) => { const result = await expr.evaluate(bindings); if (result && "datatype" in result && termIsLiteral(result) && literalIsBoolean(result)) { return termToValue(result); } return false; }); } //# sourceMappingURL=sparql-filter.js.map