← First Pair Library

10 Grust

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.

Diagram 10

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.