A single Option scalar, a Dictionary of localised options, or an array of Option
elements. Specifies the set of values for Selection matching (? and !) and sort focus (+)
operators. Arrays follow set semantics: duplicate values are ignored, ordering is immaterial, and empty arrays
are treated as absent constraints. Element types may be mixed.
Note
Options are inherently multi-valued regardless of the cardinality of the target property: matching and ordering
operators always work against a set of candidate values. The scalar Option branch is accepted as a
shorthand for a single-element option set.
Important
When constraining a localised property, use the Dictionary branch so option values carry their
language tags inline. The scalar Option and array readonly Option[] branches target
non-localised properties; reaching a localised slot through them is a typing escape hatch, not an intended mode.
Branch/target consistency is not enforced by the type system (Selection keys are opaque
Expression strings that sever the value form from the target property), so processors MUST reject
inconsistent Options: an untagged Option or array against a localised property, or a
Dictionary against a non-localised one.
Important
Consumers must accept both scalar and array Dictionary forms when filtering or constraining on
localised properties, regardless of the target property's cardinality: codec roundtrips may normalise
between the two forms (see decodeSelection).
Constraint option set.
A single Option scalar, a Dictionary of localised options, or an array of Option elements. Specifies the set of values for Selection matching (
?and!) and sort focus (+) operators. Arrays follow set semantics: duplicate values are ignored, ordering is immaterial, and empty arrays are treated as absent constraints. Element types may be mixed.Options are inherently multi-valued regardless of the cardinality of the target property: matching and ordering operators always work against a set of candidate values. The scalar Option branch is accepted as a shorthand for a single-element option set.
When constraining a localised property, use the Dictionary branch so option values carry their language tags inline. The scalar Option and array
readonly Option[]branches target non-localised properties; reaching a localised slot through them is a typing escape hatch, not an intended mode. Branch/target consistency is not enforced by the type system (Selection keys are opaque Expression strings that sever the value form from the target property), so processors MUST reject inconsistentOptions: an untagged Option or array against a localised property, or a Dictionary against a non-localised one.Consumers must accept both scalar and array Dictionary forms when filtering or constraining on localised properties, regardless of the target property's cardinality: codec roundtrips may normalise between the two forms (see decodeSelection).