Grust gives Querygraph its graph mind. The lakehouse stores tables beautifully, but an AI Navigator needs relationships: dataset contains file, file contains record set, record set contains field, field maps to concept, concept belongs to ontology, policy targets asset, agent has role, run consumed input, answer derived from summary. These are graph-shaped facts.
The first principle is that meaning is relational. A column does not become useful merely because it has a name. It becomes useful because it is connected to a dataset, record set, ontology term, policy, lineage event, and agent workflow. A table engine is excellent at scanning rows. A graph engine is excellent at following those relationships.
This is why Querygraph does not treat vector search as the whole retrieval story. Vectors can find similarity, but they do not by themselves prove that a field belongs to an approved concept, that an agent has the right role, or that a previous answer used the same dataset version. Grust gives the navigator the explicit route.
In Querygraph, Grust is the property graph substrate that makes those
facts traversable from Rust. The module sail.rs stages
Dataverse metadata and semantic graph nodes through the Grust Sail
adapter. The graph is not an ornament beside the lakehouse. It is how
the navigator plans safe routes through data.
For example, an analyst may ask for mobility disruption in areas with fiscal constraints. The graph can connect “mobility disruption” to transportation datasets, injury severity tables, dockless transportation fields, urban-form features, policies, and lineage from previous runs. Sail can then execute the table operations. The graph decides where to go; the lakehouse carries the weight.
Rust matters here because graph navigation becomes systems programming when it is part of a security boundary. Querygraph benefits from explicit types, predictable serialization, careful error handling, and the ability to keep graph, policy, metadata, and CLI code in one compiled implementation.
Querygraph tracks Grust 0.12.1, the “Lobster” release. Crab was the
moment the graph gained a language: a standards-conformant GQL/Cypher
layer — lexer, parser, AST, and semantic analysis — over the same
property graph, with backend read pushdown into Sail and SQLite. It also
gave the navigator first-class Decimal, Duration, and temporal values
that order and compute correctly, and catalog procedures such as
CALL db.labels() for introspecting the graph the lakehouse
projects. Lobster completes the language: the merged Full39075 GQL
profile brings CALL { … } subqueries, table-valued
functions, shortestPath()/allShortestPaths(),
backend-native passthrough escape hatches, and atomic Cypher transaction
batches. The graph stops being only a store of facts and becomes a
queryable substrate.
Textbook rule: use vectors for fuzzy discovery; use graphs for accountable navigation. Querygraph needs both, but the graph is what turns retrieval into a route that can be explained.