aboutsummaryrefslogtreecommitdiffstats
path: root/docs/features.org
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--docs/features.org429
1 files changed, 0 insertions, 429 deletions
diff --git a/docs/features.org b/docs/features.org
deleted file mode 100644
index 98350c5..0000000
--- a/docs/features.org
+++ /dev/null
@@ -1,429 +0,0 @@
-#+TITLE: Domino Features & Roadmap
-
-* Extended Relational Model (RM/T)
- :PROPERTIES:
- :CATEGORY: semantic-modeling
- :END:
- An extended relational database engine based on E. F. Codd's RM/T (1979).
- Captures more meaning through entity types, surrogates, and molecular semantics.
-
-** Implemented Features
-
-*** DONE Content-Addressed Storage
- CLOSED: [2025-01-21]
- - [X] SHA-256 surrogates for all entities
- - [X] System-controlled entity identifiers (E-domain)
- - [X] Automatic deduplication via content addressing
- - [X] Immutable data structures
-
-*** DONE Entity Types (E-Relations)
- CLOSED: [2025-01-21]
- - [X] Kernel entity types (database, relation)
- - [X] E-relations for entity existence assertion
- - [X] Surrogate-based entity identification
- - [X] Entity integrity enforcement
-
-*** DONE Property Relations (P-Relations)
- CLOSED: [2025-01-21]
- - [X] Immediate property storage
- - [X] Single-valued property support
- - [X] Property integrity (Rule 4)
- - [X] Foreign key references via surrogates
-
-*** DONE Merkle Tree Integration
- CLOSED: [2025-01-21]
- - [X] Relations as Merkle trees
- - [X] Database state versioning
- - [X] Efficient state diffing
- - [X] Content-addressed relation hashing
-
-*** DONE Volcano Iterator Model
- CLOSED: [2025-01-21]
- - [X] Lazy tuple evaluation
- - [X] Process-based iterators
- - [X] Message-passing protocol
- - [X] Memory-bounded queries
-
-*** DONE Transactional Operations
- CLOSED: [2025-01-21]
- - [X] ACID guarantees via Mnesia
- - [X] Atomic tuple insertion
- - [X] Tuple retraction with transactions
- - [X] Relation clear and retract operations
-
-*** DONE Comprehensive Test Suite
- CLOSED: [2025-01-21]
- - [X] Database creation tests
- - [X] Relation and tuple operations
- - [X] Hash consistency validation
- - [X] Iterator protocol tests
- - [X] Retraction and truncate tests
- - [X] Join operation tests
- - [X] Provenance tracking tests
-
-*** DONE Attribute-Level Provenance Tracking
- CLOSED: [2025-01-22]
- - [X] Nested metadata structure (meta.provenance)
- - [X] Track immediate source of each attribute
- - [X] Always enabled - every tuple includes metadata
- - [X] Automatic provenance merging in joins
- - [X] Conflict resolution for duplicate attributes
- - [X] Clean separation of data attributes and metadata
- - [X] Foundation for tuple-level lineage tracking (implemented)
-
-** Planned RM/T Extensions
-
-*** TODO Characteristic Entities
- Multi-valued properties as subordinate entities.
- - [ ] Characteristic entity types (C-relations)
- - [ ] Characteristic graph (CG-relation)
- - [ ] Characteristic tree hierarchy
- - [ ] Characteristic integrity (Rule 5)
- - [ ] Example: Job history as characteristic of Employee
-
-*** TODO Associative Entities
- Relationships as first-class entities with properties.
- - [ ] Associative entity types (A-relations)
- - [ ] Association graph (AG-relation)
- - [ ] Association integrity (Rule 6)
- - [ ] Higher-order associations
- - [ ] Example: Assignment(employee, project, start_date)
-
-*** TODO Generalization Hierarchies
- Entity subtyping and inheritance.
- - [ ] Unconditional gen inclusion (UGI-relation)
- - [ ] Alternative gen inclusion (AGI-relation)
- - [ ] Subtype integrity (Rule 7)
- - [ ] Property inheritance
- - [ ] Multiple inheritance support
- - [ ] Example: Engineer/Secretary/Trucker subtypes of Employee
-
-*** TODO Cover Aggregation
- Collections and groupings.
- - [ ] Cover membership relation (KG-relation)
- - [ ] Cover entity types
- - [ ] Dynamic membership
- - [ ] Heterogeneous covers
- - [ ] Example: Convoys, Teams, Departments
-
-*** TODO Event Precedence
- Temporal ordering and scripts.
- - [ ] Event entity types (T-relations)
- - [ ] Unconditional successor (US-relation)
- - [ ] Alternative successor (AS-relation)
- - [ ] Unconditional predecessor (UP-relation)
- - [ ] Alternative predecessor (AP-relation)
- - [ ] Example: Order → Shipment → Invoice
-
-*** TODO Extended Operators
- Operators for molecular semantics.
- - [ ] OUTER NATURAL JOIN
- - [ ] OUTER UNION
- - [ ] OUTER THETA-JOIN
- - [ ] MAYBE operators (null handling)
- - [ ] Graph operators (OPEN, CLOSE, STEP)
-
-*** TODO RM/T Catalog
- Extensible schema catalog.
- - [ ] CATR (relations catalog)
- - [ ] CATRA (relation-attribute)
- - [ ] CATA (attributes catalog)
- - [ ] CATAD (attribute-domain)
- - [ ] CATD (domains catalog)
- - [ ] CATC (categories catalog)
- - [ ] CATRC (relation-category)
-
-*** TODO Property Graph (PG-relation)
- Link P-relations to E-relations.
- - [ ] Property molecule types
- - [ ] Dynamic property schema
- - [ ] Property graph traversal
-
-** Classical Relational Algebra
-
-*** TODO Selection (σ)
- Filter tuples by predicate.
- - [ ] THETA-SELECT with comparison operators
- - [ ] Support for <, ≤, =, ≥, >, ≠
- - [ ] TRUE and MAYBE versions (null handling)
-
-*** TODO Projection (π)
- Project relation onto subset of attributes.
- - [ ] Remove specified columns
- - [ ] Eliminate duplicate rows
- - [ ] Preserve set semantics
-
-*** TODO Cartesian Product (×)
- Cross product of two relations.
- - [ ] Unrestricted concatenation
- - [ ] Basis for joins
-
-*** DONE Natural Join (⋈)
- CLOSED: [2025-01-22]
- Join on common attributes.
- - [X] Equi-join with duplicate removal (equijoin_iterator)
- - [X] Nested loop join strategy
- - [X] Attribute conflict resolution (right_ prefix)
- - [X] Attribute-level provenance tracking
- - [X] Comprehensive test coverage
-
-*** DONE Theta Join (⋈θ)
- CLOSED: [2025-01-22]
- Join with arbitrary comparison.
- - [X] Support all theta operators via predicate functions
- - [X] Generalizes natural join
- - [X] Nested loop join with custom predicates
- - [X] Provenance merging from both sides
-
-*** TODO Union (∪)
- Set union of compatible relations.
- - [ ] Union-compatible constraint
- - [ ] Duplicate removal
-
-*** TODO Intersection (∩)
- Set intersection.
- - [ ] Union-compatible constraint
-
-*** TODO Difference (−)
- Set difference.
- - [ ] Union-compatible constraint
-
-*** TODO Divide (÷)
- Relational division.
- - [ ] Algebraic universal quantifier
-
-*** TODO Rename (ρ)
- Attribute renaming.
- - [ ] Enable self-joins
-
-** Advanced Features
-
-*** DONE Tuple-Level Lineage Tracking
- CLOSED: [2025-01-23]
- Track complete operational history of each tuple through query pipelines.
-
-**** Status: IMPLEMENTED
-
-**** API Usage
-
- Metadata tracking is ALWAYS enabled. All tuples include the 'meta' field:
- #+BEGIN_SRC erlang
- %% Simple query (metadata automatically included)
- Iter = operations:get_tuples_iterator(DB, employees, #{}).
-
- %% With constraints (metadata still included)
- Iter = operations:get_tuples_iterator(DB, employees,
- #{constraints => #{age => {gt, 30}}}).
-
- %% Results always have:
- %% #{id => 1, name => "Alice",
- %% meta => #{
- %% provenance => #{id => {employees, id}, name => {employees, name}},
- %% lineage => {base, employees}
- %% }}
- #+END_SRC
-
-**** Provenance vs. Lineage
-
- - *Provenance* (IMPLEMENTED): Tracks immediate source of each attribute
- #+BEGIN_SRC erlang
- meta => #{
- provenance => #{
- name => {employees, name},
- dept_name => {departments, dept_name}
- }
- }
- #+END_SRC
-
- - *Lineage* (IMPLEMENTED): Tracks complete operation tree that created the tuple
- #+BEGIN_SRC erlang
- meta => #{
- provenance => #{...}, % Attribute sources
- lineage => {project, [name, dept_name],
- {join, dept_id,
- {select, fun(T) -> maps:get(age, T) > 30 end,
- {base, employees}},
- {base, departments}}}
- }
- #+END_SRC
-
-**** Type Definition
-
- #+BEGIN_SRC erlang
- -type lineage_op() ::
- {base, atom()} % Base relation
- | {select, fun(), lineage_op()} % Filter operation
- | {project, [atom()], lineage_op()} % Projection
- | {join, atom(), lineage_op(), lineage_op()} % Join on attribute
- | {theta_join, fun(), lineage_op(), lineage_op()} % Join with predicate
- | {sort, fun(), lineage_op()} % Sort operation
- | {take, pos_integer(), lineage_op()} % Limit operation
- | {aggregate, atom(), atom(), lineage_op()}. % Aggregation (future)
- #+END_SRC
-
-**** Use Cases
-
- - [ ] *Updatable Views*: Propagate updates back to base relations
- - Example: =UPDATE view SET name = "Bob"= → trace lineage → =UPDATE employees SET name = "Bob"=
-
- - [ ] *Incremental View Maintenance*: Identify affected tuples when base data changes
- - Example: If employees tuple changes, lineage identifies which view tuples need recomputation
-
- - [ ] *Audit Trails*: Track how sensitive data was transformed
- - Example: "This salary came from: employees → join(departments) → aggregate(avg)"
-
- - [ ] *Query Explanation*: Debug complex pipelines
- - Example: "Why is this tuple here?" → inspect lineage to see operations applied
-
- - [ ] *Provenance Queries*: Query the lineage itself
- - Example: "Show all tuples derived from employees.id=5"
-
-**** Implementation Plan
-
- 1. [X] Extend =tuple_metadata()= type with lineage field
- 2. [X] Add lineage construction to each iterator operator
- - [X] select_iterator: ={select, Predicate, ChildLineage}=
- - [X] project_iterator: ={project, Attributes, ChildLineage}=
- - [X] equijoin_iterator: ={join, Attr, LeftLineage, RightLineage}=
- - [X] theta_join_iterator: ={theta_join, Pred, LeftLineage, RightLineage}=
- - [X] sort_iterator: ={sort, CompareFun, ChildLineage}=
- - [X] take_iterator: ={take, N, ChildLineage}=
- 3. [X] Implement lineage merging in joins (combine operation trees)
- 4. [ ] Add lineage querying API for provenance analysis (future)
- 5. [ ] Use lineage for updatable view update propagation (future)
- 6. [X] Add comprehensive lineage tests
-
-**** Relation to Existing Code
-
- Relation-level provenance already exists in =#relation.provenance=:
- #+BEGIN_SRC erlang
- -type provenance() ::
- {base, atom()}
- | {join, provenance(), provenance()}
- | {select, provenance(), constraints()}
- | {project, provenance(), [atom()]}
- | {take, provenance(), pos_integer()}.
- #+END_SRC
-
- This tracks where *relations* come from. Lineage is the *tuple-level*
- equivalent, tracking operational history of individual tuples through
- query pipelines.
-
-**** Example: Complete Lineage Chain
-
- #+BEGIN_SRC erlang
- % Query: employees → select(age>30) → join(departments) → project([name, dept_name])
-
- % Resulting tuple with full lineage:
- #{name => "Alice",
- dept_name => "Engineering",
- meta => #{
- provenance => #{
- name => {employees, name},
- dept_name => {departments, dept_name}
- },
- lineage => {
- project, [name, dept_name],
- {join, dept_id,
- {select, fun(T) -> maps:get(age, T) > 30 end,
- {base, employees}},
- {base, departments}}}
- }}
-
- % From this lineage, we can:
- % 1. Trace "Alice" back to employees.name
- % 2. Know she passed the age>30 filter
- % 3. See she was joined with departments on dept_id
- % 4. Understand the projection removed other attributes
- #+END_SRC
-
-*** TODO Null Value Handling
- Three-valued logic for incomplete information.
- - [ ] "Value unknown" null type
- - [ ] "Property inapplicable" null type
- - [ ] E-null for "entity unknown"
- - [ ] Null substitution principle
- - [ ] MAYBE operators
-
-*** TODO Infinite Relations (Aleph₀)
- Countably infinite relation generators.
- - [ ] Integer generator
- - [ ] Arithmetic relations (plus, minus, multiply)
- - [ ] Lazy evaluation with constraints
- - [ ] Partially materialized storage
- - [ ] User-defined generators
-
-*** TODO View Integration
- Merging multiple perspectives.
- - [ ] View definition language
- - [ ] Automatic view maintenance
- - [ ] View update translation
-
-*** TODO Temporal Support
- Time-varying databases.
- - [ ] Transaction time
- - [ ] Valid time
- - [ ] Bitemporal support
- - [ ] Non-forgetting mode
-
-*** TODO Distributed Synchronization
- Merkle tree-based replication.
- - [ ] Efficient diff protocol
- - [ ] Conflict resolution
- - [ ] Eventual consistency
-
-** Developer Experience
-
-*** TODO Query Language
- High-level relational query language.
- - [ ] Algebraic syntax
- - [ ] Tuple calculus variant
- - [ ] Domain calculus variant
-
-*** TODO REPL Console
- Interactive query environment.
- - [ ] Live query evaluation
- - [ ] Schema introspection
- - [ ] Query history
-
-*** TODO Visualization Tools
- Graphical representation.
- - [ ] Relation browser
- - [ ] Join graph visualization
- - [ ] Generalization hierarchy diagrams
- - [ ] Query execution plans
-
-*** TODO Org Babel Integration
- Literate programming support.
- - [ ] Execute relational queries in org-mode
- - [ ] Export results to tables
- - [ ] Reproducible analysis
-
-** Documentation & Validation
-
-*** DONE Code Documentation
- CLOSED: [2025-01-21]
- - [X] Module architecture overview
- - [X] Data structure specifications
- - [X] Usage examples
- - [X] Implementation details
-
-*** TODO Theoretical Validation
- Ensure correctness.
- - [ ] Formal proofs of operator properties
- - [ ] Closure verification
- - [ ] Idempotence tests
- - [ ] Property-based testing with PropEr
- - [ ] Comparison with Date & Darwen semantics
-
-*** TODO Research Papers
- Link to foundational theory.
- - [ ] Codd 1970: "A Relational Model"
- - [ ] Codd 1979: "Extending the Database Relational Model" (RM/T)
- - [ ] Codd 1985: "Does AlOL Need the Relational Algebra?"
- - [ ] Date & Darwen: "Foundation for Future Database Systems"
-
-** References
- - E. F. Codd (1979). "Extending the Database Relational Model to Capture More Meaning"
- - E. F. Codd (1970). "A Relational Model of Data for Large Shared Data Banks"
- - C. J. Date & Hugh Darwen. "Foundation for Future Database Systems: The Third Manifesto"