Package com.darkcollective.relix.symbol.graph
package com.darkcollective.relix.symbol.graph
The schema graph: how relations join.
A SchemaGraph holds named
Relationships between two
Endpoints, each declared, introspected or
learned (EdgeOrigin). Resolving an
expression's joins over the graph answers a
JoinResolution.
-
ClassDescriptionHow a
Relationshipentered the schema graph.One side of aRelationship: a relation plus the ordered columns joined at this side, carrying numeric multiplicity bounds.What resolving the joins in an expression over aSchemaGraphcame to: the engine's own assembly of the join from the relationships the graph records, rather than the conditions the expression was written with.One enumerated join, distinguished by relationship name — the ambiguity is speakable only because edges are named.Several equally minimal paths; eachJoinResolution.Alternativeis a runnable program.Multiplicity facts of a chosen path: whether the join fans out (an endpoint admits more than one match, repeating rows) and whether an inner join may drop rows (an endpoint'sminis zero).The graph could not improve on the model's program; it stands unchanged.A unique path was assembled intoprogramwith itsbounds.A named relationship edge of theSchemaGraph.The schema graph: an immutable set ofRelationshipedges between relations.