Slot: CF Cell Methods (cf_cell_methods)
CF cell_methods string describing how the value summarises sub-period values, e.g. time: maximum for Tmax, time: mean for daily mean.
Tier: conditionally_core
Why this slot matters
A daily maximum and a daily mean of the same quantity carry the same standard name and units; only the aggregation statement tells them apart. Keeping the verbatim CF string also enables round-tripping against CF/NetCDF source products and the CF-consistency triple check over standard_name + cf_cell_methods + units_ucum. Conditionally-Core because the slot is CF-specific by design: it is mandatory when standard_name uses the CF: prefix (the context of SPEC.md validation rule 5), while a non-CF product genuinely has no verbatim cell_methods string to preserve — its vocabulary-neutral aggregation semantics live in the required temporal_aggregation_method.
In plain terms
A "daily temperature" value could be the day's highest reading, its average, or its lowest — very different numbers. This short standard phrase (like "time: maximum") records which one it is, in the exact wording that climate-data software already understands.
URI: envar:slot/cf_cell_methods
Applicable Classes
| Name |
Description |
Modifies Slot |
| VariableIdentity |
The identity and semantics of an environmental exposure variable — what physi... |
no |
Properties
Type and Range
Cardinality and Requirements
Examples
| Value |
| time: maximum |
| time: mean |
- Deliberately CF-specific — do not generalise. The vocabulary-neutral capture of aggregation semantics already exists as the required
TemporalReference.temporal_aggregation_method enum (envar_temporal), which maps 1:1 to the temporal part of cell_methods; that enum is what machines should reason over. This slot instead preserves the verbatim CF expression. cell_methods is a structured mini-language (multi-axis forms like area: mean time: maximum, within/over qualifiers, where clauses) with no cross-vocabulary equivalent, so a "generalised" slot would be either a free string of unspecified syntax (losing machine-readability) or a newly minted EnVar aggregation grammar with no tooling support. Keeping the literal string also enables round-tripping against CF/NetCDF source products and the CF-consistency triple check over standard_name + cf_cell_methods + units_ucum (SPEC.md, validation rule 5). Contrast standard_name, which was generalised to a CURIE — that works because it is an identifier, and prefixes provide a standard generalisation mechanism; no such mechanism exists for expressions.
See Also
Annotations
| property |
value |
| tier |
conditionally_core |
| justification |
A daily maximum and a daily mean of the same quantity carry the same standard name and units; only the aggregation statement tells them apart. Keeping the verbatim CF string also enables round-tripping against CF/NetCDF source products and the CF-consistency triple check over standard_name + cf_cell_methods + units_ucum. Conditionally-Core because the slot is CF-specific by design: it is mandatory when standard_name uses the CF: prefix (the context of SPEC.md validation rule 5), while a non-CF product genuinely has no verbatim cell_methods string to preserve — its vocabulary-neutral aggregation semantics live in the required temporal_aggregation_method. |
| explanation |
A "daily temperature" value could be the day's highest reading, its average, or its lowest — very different numbers. This short standard phrase (like "time: maximum") records which one it is, in the exact wording that climate-data software already understands. |
Schema Source
Mappings
| Mapping Type |
Mapped Value |
| self |
envar:cf_cell_methods |
| native |
envar:cf_cell_methods |
LinkML Source
name: cf_cell_methods
annotations:
tier:
tag: tier
value: conditionally_core
justification:
tag: justification
value: 'A daily maximum and a daily mean of the same quantity carry the same standard
name and units; only the aggregation statement tells them apart. Keeping the
verbatim CF string also enables round-tripping against CF/NetCDF source products
and the CF-consistency triple check over `standard_name` + `cf_cell_methods`
+ `units_ucum`. Conditionally-Core because the slot is CF-specific by design:
it is mandatory when `standard_name` uses the `CF:` prefix (the context of SPEC.md
validation rule 5), while a non-CF product genuinely has no verbatim `cell_methods`
string to preserve — its vocabulary-neutral aggregation semantics live in the
required `temporal_aggregation_method`.'
explanation:
tag: explanation
value: 'A "daily temperature" value could be the day''s highest reading, its average,
or its lowest — very different numbers. This short standard phrase (like "time:
maximum") records which one it is, in the exact wording that climate-data software
already understands.'
description: 'CF `cell_methods` string describing how the value summarises sub-period
values, e.g. `time: maximum` for Tmax, `time: mean` for daily mean.'
title: CF Cell Methods
comments:
- 'Deliberately CF-specific — do not generalise. The vocabulary-neutral capture of
aggregation semantics already exists as the required `TemporalReference.temporal_aggregation_method`
enum (envar_temporal), which maps 1:1 to the temporal part of `cell_methods`; that
enum is what machines should reason over. This slot instead preserves the *verbatim*
CF expression. `cell_methods` is a structured mini-language (multi-axis forms like
`area: mean time: maximum`, `within`/`over` qualifiers, `where` clauses) with no
cross-vocabulary equivalent, so a "generalised" slot would be either a free string
of unspecified syntax (losing machine-readability) or a newly minted EnVar aggregation
grammar with no tooling support. Keeping the literal string also enables round-tripping
against CF/NetCDF source products and the CF-consistency triple check over `standard_name`
+ `cf_cell_methods` + `units_ucum` (SPEC.md, validation rule 5). Contrast `standard_name`,
which *was* generalised to a CURIE — that works because it is an identifier, and
prefixes provide a standard generalisation mechanism; no such mechanism exists for
expressions.'
examples:
- value: 'time: maximum'
description: daily maximum (Tmax)
- value: 'time: mean'
description: mean over the aggregation period (e.g. annual-mean PM2.5)
from_schema: https://w3id.org/linkml/microschemas/envar
see_also:
- https://cfconventions.org/cf-conventions/cf-conventions.html#cell-methods
rank: 1000
domain_of:
- VariableIdentity
range: string