UNPKG

@jahed/sparql-engine

Version:

SPARQL query engine for servers and web browsers.

36 lines 1.14 kB
import PlanVisitor from "./plan-visitor.js"; import UnionMerge from "./visitors/union-merge.js"; /** * An Optimizer applies a set of optimization rules, implemented using subclasses of {@link PlanVisitor}. */ export default class Optimizer { _visitors; constructor() { this._visitors = []; } /** * Get an optimizer configured with the default optimization rules * @return A new Optimizer pre-configured with default rules */ static getDefault() { const opt = new Optimizer(); opt.addVisitor(new UnionMerge()); return opt; } /** * Register a new visitor, which implements an optimization rule. * @param visitor - Visitor */ addVisitor(visitor) { this._visitors.push(visitor); } /** * Optimize a SPARQL query expression tree, by applying the set of rules. * @param plan - SPARQL query expression tree to iptimize * @return Optimized SPARQL query expression tree */ optimize(plan) { return this._visitors.reduce((current, v) => v.visit(current), plan); } } //# sourceMappingURL=optimizer.js.map