Expand description
Query Execution Engine
Jena-inspired algebraic query execution with pluggable engines.
§Architecture
QueryExpr (AST) → Op (Algebra) → Plan → Iterator<Binding>
┌─────────────────────────────────────────────────────────────┐
│ QueryEngine │
├─────────────────────────────────────────────────────────────┤
│ compile(QueryExpr) → Op │
│ optimize(Op) → Op │
│ execute(Op) → BindingIterator │
└─────────────────────────────────────────────────────────────┘
│
┌──────────────────┼──────────────────┐
▼ ▼ ▼
OpBGP OpJoin OpFilter
(BasicPattern) (Join two Ops) (Filter Op)§Components
- Op: Algebraic operators (scan, filter, join, union, etc.)
- Transform: Visitors that transform Op trees
- Binding: Variable -> Value mapping
- BindingIterator: Lazy result stream
- QueryEngine: Compiles, optimizes, and executes queries
Re-exports§
pub use binding::Binding;pub use binding::BindingBuilder;pub use binding::Var;pub use iterator::BindingIterator;pub use iterator::QueryIter;pub use iterator::QueryIterBase;pub use iterator::QueryIterFilter;pub use iterator::QueryIterJoin;pub use iterator::QueryIterProject;pub use iterator::QueryIterSlice;pub use iterator::QueryIterSort;pub use iterator::QueryIterUnion;pub use op::Op;pub use op::OpBGP;pub use op::OpDisjunction;pub use op::OpDistinct;pub use op::OpExtend;pub use op::OpFilter;pub use op::OpGroup;pub use op::OpJoin;pub use op::OpLeftJoin;pub use op::OpMinus;pub use op::OpNull;pub use op::OpOrder;pub use op::OpProject;pub use op::OpReduced;pub use op::OpSequence;pub use op::OpSlice;pub use op::OpTable;pub use op::OpTriple;pub use op::OpUnion;pub use op::Pattern;pub use op::Triple;pub use registry::QueryEngine;pub use registry::QueryEngineFactory;pub use registry::QueryEngineRegistry;pub use transform::OpTransform;pub use transform::OpVisitor;pub use transform::TransformCopy;pub use transform::TransformPushFilter;