From 06b6f09fc335a87e78e2e0cc71ec0fc5a3edfac9 Mon Sep 17 00:00:00 2001 From: Hassan Abedi Date: Mon, 9 Mar 2026 11:05:09 +0100 Subject: [PATCH] WIP --- README.md | 8 ++++++ ROADMAP.md | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 90 insertions(+) create mode 100644 ROADMAP.md diff --git a/README.md b/README.md index c03485b..393f8d2 100644 --- a/README.md +++ b/README.md @@ -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 diff --git a/ROADMAP.md b/ROADMAP.md new file mode 100644 index 0000000..7f93fd3 --- /dev/null +++ b/ROADMAP.md @@ -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