reddb_server/storage/query/engine/mod.rs
1//! Query Execution Engine
2//!
3//! Jena-inspired algebraic query execution with pluggable engines.
4//!
5//! # Architecture
6//!
7//! ```text
8//! QueryExpr (AST) → Op (Algebra) → Plan → Iterator<Binding>
9//!
10//! ┌─────────────────────────────────────────────────────────────┐
11//! │ QueryEngine │
12//! ├─────────────────────────────────────────────────────────────┤
13//! │ compile(QueryExpr) → Op │
14//! │ optimize(Op) → Op │
15//! │ execute(Op) → BindingIterator │
16//! └─────────────────────────────────────────────────────────────┘
17//! │
18//! ┌──────────────────┼──────────────────┐
19//! ▼ ▼ ▼
20//! OpBGP OpJoin OpFilter
21//! (BasicPattern) (Join two Ops) (Filter Op)
22//! ```
23//!
24//! # Components
25//!
26//! - **Op**: Algebraic operators (scan, filter, join, union, etc.)
27//! - **Transform**: Visitors that transform Op trees
28//! - **Binding**: Variable -> Value mapping
29//! - **BindingIterator**: Lazy result stream
30//! - **QueryEngine**: Compiles, optimizes, and executes queries
31
32pub mod aggregates_extra;
33pub mod binding;
34pub mod cancel;
35pub mod iterator;
36pub mod op;
37pub mod registry;
38pub mod transform;
39
40pub use binding::{Binding, BindingBuilder, Var};
41pub use cancel::CancelToken;
42pub use iterator::{
43 BindingIterator, QueryIter, QueryIterBase, QueryIterFilter, QueryIterJoin, QueryIterProject,
44 QueryIterSlice, QueryIterSort, QueryIterUnion,
45};
46pub use op::{
47 Op, OpBGP, OpDisjunction, OpDistinct, OpExtend, OpFilter, OpGroup, OpJoin, OpLeftJoin, OpMinus,
48 OpNull, OpOrder, OpProject, OpReduced, OpSequence, OpSlice, OpTable, OpTriple, OpUnion,
49 Pattern, Triple,
50};
51pub use registry::{QueryEngine, QueryEngineFactory, QueryEngineRegistry};
52pub use transform::{OpTransform, OpVisitor, TransformCopy, TransformPushFilter};