Numeric segments
Relational implementation:
Segment:
text
type
depth
is_leaf
is_var
in_logical
Fact:
id_fact
path-tail
path-head -> Segment
order
SELECT F.id_fact (...) FROM Fact as F JOIN Segment as S ON S.id_segment = F.path_head WHERE F.path_tail = ? AND S.text = ?;
NO!
Node
path: Path
depth: int # number of ancestors
Path
head: Segment
tail: hash
Segment
value: String
production: Enum
Tree -> indexes of nodes
index for query
keys: node-depth:node-path-tail:node-path-head-text:
values: id-node,parents
index for reconstruction
keys: node-depth:parent:
problems
no sé a qué nivel guardar los string
los tipos de production (Segment.name) son un desastre, deberían salir mejor del parser.
Investigar marcar los nodos con su profunddad, y re-usarlos -- no: las preguntas recuperarían hijos ajenos
restaurar nodos no lógicos?
segmentos de distintos tipos - correspondiendo a nombres reservados de producciones
io get data from files
actions -functions in rust- triggered by certain patterns of facts
action tell - send facts to other dbs
chain of dbs ticking, one after another - garbage collection.