Skip to content

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

Property Value
Range String
Domain Of VariableIdentity

Cardinality and Requirements

Property Value

Examples

Value
time: maximum
time: mean

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.

See Also

Identifier and Mapping Information

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