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 iterator;
35pub mod op;
36pub mod registry;
37pub mod transform;
38
39pub use binding::{Binding, BindingBuilder, Var};
40pub use iterator::{
41 BindingIterator, QueryIter, QueryIterBase, QueryIterFilter, QueryIterJoin, QueryIterProject,
42 QueryIterSlice, QueryIterSort, QueryIterUnion,
43};
44pub use op::{
45 Op, OpBGP, OpDisjunction, OpDistinct, OpExtend, OpFilter, OpGroup, OpJoin, OpLeftJoin, OpMinus,
46 OpNull, OpOrder, OpProject, OpReduced, OpSequence, OpSlice, OpTable, OpTriple, OpUnion,
47 Pattern, Triple,
48};
49pub use registry::{QueryEngine, QueryEngineFactory, QueryEngineRegistry};
50pub use transform::{OpTransform, OpVisitor, TransformCopy, TransformPushFilter};