Compare commits

..

4 Commits

Author SHA1 Message Date
Hassan Abedi
1c3b693ded Add the early version of query-ops implmenation 2026-06-03 12:16:26 +02:00
Hassan Abedi
b31aa32747 Add a note file about the findings from CozoDB and LMDB projects 2026-06-03 12:16:26 +02:00
Hassan Abedi
1c34368da6 Improve scaffolding for query-ops crate 2026-06-03 12:16:26 +02:00
Hassan Abedi
765689b66e Add scaffolding for query-ops crate 2026-06-03 12:16:22 +02:00
3 changed files with 8 additions and 4 deletions

View File

@ -18,15 +18,17 @@ The operators are: atom scan, semijoin, and natural join.
<div align="center">
<picture>
<img alt="Types" src="docs/diagrams/types.svg" height="70%" width="70%">
<img alt="Types" src="docs/diagrams/types.svg" height="50%" width="50%">
</picture>
</div>
### Example
The rule below returns the authors of every bestseller along with the book's price.
It uses all three operators: `scan_atom` for the three input tables, `semijoin` to keep only authors of bestsellers, and `natural_join` to attach each
book's price.
It uses all three operators:
- `scan_atom` for the three input tables,
- `semijoin` to keep only authors of bestsellers,
- and `natural_join` to attach each book's price.
```text
Q(name, book, dollars) :- author(name, book), bestseller(book), price(book, dollars).
@ -102,9 +104,11 @@ fn main() {
}
```
How it works:
<div align="center">
<picture>
<img alt="Types" src="docs/diagrams/architecture.svg" height="70%" width="70%">
<img alt="Types" src="docs/diagrams/workflow.svg" height="90%" width="90%%">
</picture>
</div>

View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB