Skip to main content

Module engine

Module engine 

Source
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;

Modules§

aggregates_extra
ClickHouse-parity aggregate functions (Track B4 sprint).
binding
Variable Bindings
iterator
Query Result Iterators
op
Algebraic Query Operators
registry
Query Engine Registry
transform
Op Tree Transformations