WIP
This commit is contained in:
parent
aac85af9a1
commit
06b6f09fc3
@ -21,6 +21,14 @@ This implementation provides a **restricted chase** that guarantees termination
|
||||
- **Fluent API**: `RuleBuilder` for readable rule construction
|
||||
- **Zero Dependencies**: Pure Rust with no external runtime dependencies
|
||||
|
||||
See [ROADMAP.md](ROADMAP.md) for the list of implemented and planned features.
|
||||
|
||||
> [!IMPORTANT]
|
||||
> This project is still in early development, so bugs and breaking changes are expected.
|
||||
> Please use the [issues page](https://code.obsidian.systems/habedi-work/chase-rs/issues) to report bugs or request features.
|
||||
|
||||
---
|
||||
|
||||
### Quick Start
|
||||
|
||||
```rust
|
||||
|
||||
82
ROADMAP.md
Normal file
82
ROADMAP.md
Normal file
@ -0,0 +1,82 @@
|
||||
## 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
|
||||
Loading…
x
Reference in New Issue
Block a user