Skip to content

Package 4 — Range Components

Package 4 defines range variants of four scalar components. A range component represents an interval [low, high] rather than a single value. These are used for uncertainty bounds, measurement ranges, or any case where a pair of values defines a span.

CountRange

An integer interval.

Field Type Description
base AbstractSimpleComponent Inherited metadata
constraint AllowedValues Valid value ranges
nilValues list of NilValueInteger Integer sentinels
low int64 Lower bound (inclusive)
high int64 Upper bound (inclusive)

QuantityRange

A continuous numeric interval with a unit of measure. Common uses: measurement uncertainty (e.g., temperature ± 0.5°C), sensor operating ranges, or validity windows.

Field Type Description
base AbstractSimpleComponent Inherited metadata
uom UnitReference Unit of measure (required)
constraint AllowedValues Valid value ranges
nilValues list of NilValueNumber Numeric sentinels
low NumberOrSpecial Lower bound (inclusive)
high NumberOrSpecial Upper bound (inclusive)

TimeRange

A temporal interval. Use this for observation validity periods, forecast windows, or time-of-day ranges.

Field Type Description
base AbstractSimpleComponent Inherited metadata
referenceTime string ISO-8601 epoch origin
localFrame string URI — local temporal frame
uom UnitReference Unit of measure (required)
constraint AllowedTimes Valid temporal ranges
nilValues list of NilValueTime Temporal sentinels
low DateTimeOrNumber Start of interval (inclusive)
high DateTimeOrNumber End of interval (inclusive)

CategoryRange

An ordered pair of tokens from a controlled vocabulary. Less commonly used, but applicable when a code list has a natural ordering (e.g., severity levels, quality grades).

Field Type Description
base AbstractSimpleComponent Inherited metadata
codeSpace string URI to dictionary
constraint AllowedTokens Permitted tokens
nilValues list of NilValueText String sentinels
low string Start of range
high string End of range

No BooleanRange

There is no BooleanRange — a range of two booleans would be meaningless since the domain only has two values.

When to use ranges vs. pairs of scalars

Use a range component when the [low, high] pair is semantically a single concept (an interval). If the two values are independent — for example, min and max daily temperatures that are separate measurements — use two separate Quantity fields in a DataRecord instead.