83 lines
2.1 KiB
Markdown
83 lines
2.1 KiB
Markdown
|
|
## Project Roadmap
|
||
|
|
|
||
|
|
This document outlines the implemented features and the future goals for the project.
|
||
|
|
|
||
|
|
> [!IMPORTANT]
|
||
|
|
> This roadmap is a work in progress and is subject to change.
|
||
|
|
|
||
|
|
### Core Features
|
||
|
|
|
||
|
|
- [x] Term representation (`Constant`, `Null`, `Variable`)
|
||
|
|
- [x] Atom structure (predicate with terms)
|
||
|
|
- [x] Database instance (set of ground atoms)
|
||
|
|
- [x] Tuple-generating dependencies (TGDs)
|
||
|
|
- [x] Rule builder with fluent API
|
||
|
|
- [x] Variable substitutions
|
||
|
|
- [x] Atom unification
|
||
|
|
- [x] Core chase algorithm
|
||
|
|
- [x] Restricted chase (trigger tracking for termination)
|
||
|
|
- [x] Existential variable support (labeled null generation)
|
||
|
|
- [x] Multi-atom rule bodies (conjunctive queries)
|
||
|
|
- [x] Multi-atom rule heads
|
||
|
|
- [x] Constants in rule patterns
|
||
|
|
|
||
|
|
### Chase Variants
|
||
|
|
|
||
|
|
- [x] Restricted chase (current implementation)
|
||
|
|
- [ ] Standard chase
|
||
|
|
- [ ] Oblivious chase
|
||
|
|
- [ ] Skolem chase
|
||
|
|
- [ ] Core chase (with homomorphism checks)
|
||
|
|
- [ ] Parallel chase
|
||
|
|
|
||
|
|
### Advanced Features
|
||
|
|
|
||
|
|
- [ ] Equality-generating dependencies (EGDs)
|
||
|
|
- [ ] Negative constraints (NCs)
|
||
|
|
- [ ] Stratified negation in rule bodies
|
||
|
|
- [ ] Disjunctive heads
|
||
|
|
- [ ] Aggregation support
|
||
|
|
- [ ] Recursion detection and optimization
|
||
|
|
- [ ] Termination analysis (weak acyclicity, joint acyclicity)
|
||
|
|
|
||
|
|
### Query Answering
|
||
|
|
|
||
|
|
- [ ] Boolean conjunctive query (BCQ) entailment
|
||
|
|
- [ ] Conjunctive query (CQ) answering
|
||
|
|
- [ ] Query rewriting
|
||
|
|
- [ ] Certain answer computation
|
||
|
|
|
||
|
|
### Performance Optimizations
|
||
|
|
|
||
|
|
- [ ] Predicate indexing (hash-based fact lookup)
|
||
|
|
- [ ] Semi-naive evaluation
|
||
|
|
- [ ] Magic sets transformation
|
||
|
|
- [ ] Incremental chase (delta rules)
|
||
|
|
- [ ] Memory-efficient null representation
|
||
|
|
- [ ] Parallel rule evaluation
|
||
|
|
|
||
|
|
### Parsing and I/O
|
||
|
|
|
||
|
|
- [ ] Datalog parser
|
||
|
|
- [ ] Rule file format (.dlog or similar)
|
||
|
|
- [ ] Fact import/export (CSV, JSON)
|
||
|
|
- [ ] SPARQL-like query syntax
|
||
|
|
- [ ] RDF/OWL integration
|
||
|
|
|
||
|
|
### Development and Testing
|
||
|
|
|
||
|
|
- [x] Unit tests (in-module)
|
||
|
|
- [x] Integration tests
|
||
|
|
- [ ] Property-based tests (QuickCheck/proptest)
|
||
|
|
- [ ] Regression tests
|
||
|
|
- [ ] Benchmarks
|
||
|
|
- [ ] Fuzzing
|
||
|
|
|
||
|
|
### Documentation and Tooling
|
||
|
|
|
||
|
|
- [ ] API documentation (rustdoc)
|
||
|
|
- [ ] User guide
|
||
|
|
- [ ] Example programs
|
||
|
|
- [ ] CLI interface
|
||
|
|
- [ ] REPL for interactive queries
|