QueryModelDescriptor
How a query model can be queried on one entry: the answer the GET of the query route gives to agents and the view engine; QueryJson writes and reads it.
It publishes conclusions, never storage vocabulary: every listed operator, sort, group and function is admitted when used on its own, anything unlisted is rejected; combination rules are in constraints. Values, scopes and policy conditions may still reject a query at run time, with a structured violation. It exposes no physical names and does not depend on the caller, so it is cacheable; version is a hash of its content and doubles as the ETag.
Constructors
Properties
Fields under dynamic map keys, written with {key} in place of the key.
Every queryable field by logical path, fields inside elements included (see FieldDescriptor.scope).