Builds a flake from a collection's member shape and the query retrieving it.
Checks whether a Flake is a transform stage rather than a property or marker step.
Checks whether a Flake is an aggregate transform stage.
Checks whether a Flake is a scalar (non-aggregating) transform stage.
Checks whether a Flake groups the query.
Checks whether a Flake requests any retrieval, at the node or anywhere beneath it.
Checks whether a Flake carries any constraint, ranking, or ordering slot, at the node or anywhere beneath it.
Checks whether a Flake carries a filtering constraint, at the node or anywhere beneath it.
Checks whether a Flake carries an existence-implying filter constraint, at the node or anywhere beneath it.
Checks whether a Flake's set matching constraints name at least one non-null value.
Checks whether a Flake's set matching constraints include a localised dictionary option.
Checks whether a Flake's set matching constraints include an explicit null option.
Checks whether a flake steps through a single-valued Property, whose retrieval addresses one value and admits no collection constraints.
Checks whether a flake is projected by a query: its drain carries a projection alias.
Collects every projected flake of a Flake into a flat list.
Lists a flake's own transform stages.
Lists a flake's own property branches.
Collects every projection in a Flake into an alias-keyed index.
Collects the grouping keys of a Flake.
Collects the focus keys of a Flake.
Collects the sort keys of a Flake, by ascending precedence.
Selects the property branches of a node that one variant of its range declares.
Shape-driven traversal trees.
A Shape and its retrieval template or collection query scatter what to fetch across independent probes: property requests, constraints, and transforms. A flake gathers those probes into one traversal tree. A connector walks that tree directly, instead of matching the raw shape against the raw input at every step.
Three flavours of the tree are available:
Every node, the root included, is a Flake. Its path locates it along the property axis and its pipe along the transform axis. A resource node branches along both axes, while a non-resource node is a bare leaf: