Skip to content

EnVar microschema · class

Temporal Reference

TemporalReference

Temporal provenance of an environmental exposure value: native temporal grain, aggregation rule, day-boundary convention, coverage of the source product, the extraction window the run actually pulled, and calendar. One per record.

9 fields 3 core

URI: envar:class/TemporalReference

Core Conditionally core Recommended Optional
Core Required for a valid record 3 fields
Temporal Resolutioncorerequired

temporal_resolution · range TemporalResolutionEnum · cardinality 1

How often does this dataset produce a number — one per hour, one per day, one per year? A daily temperature and a yearly average temperature are very different things, so you need to know which kind of value you are looking at before comparing anything.

Native temporal grain of the values.

Examples

dailyDaymet Tmax — one value per day.

annualACAG satellite PM2.5 — one value per year.

Allowed values

instantaneous Instantaneous snapshot at a timestamp hourly One value per hour three_hourly One value per 3-hour window (NARR sub-daily) daily One value per day monthly One value per calendar month seasonal One value per season (3-month window) annual One value per year
Covered by — 5 standards
omop_gaiaassertedabsent coverage
No first-class temporal_resolution slot in gaiaCatalog or gaia-db.
degaussassertedabsent coverage
DeGAUSS's daily grain is implicit in one-row-per-day, with no resolution field.
amadeusassertedpartial coverage
where thredds_dataset.xml day axis increment = 1.0 (days since 1900-01-01)
Only derivable from the THREDDS time-axis increment; not written as a discrete resolution field.
cherassertedfull coverage
where table_name temporal-resolution code (§2.4); inheritable temporal_resolution
C-HER carries temporal resolution first-class as a code in the table_name pattern and as an inheritable lineage field.
codataassertedout_of_layer coverage
The native temporal grain of a specific run is instance-layer detail outside the conceptual EV/DDI-CDI layer.
Why it matters & mappings

A daily value and an annual value of the same variable are different exposures with different health associations; without the native grain an analyst cannot tell whether a series supports an acute (day-level) analysis or only a chronic one, and silent resampling between products goes undetected.

Temporal Aggregation Methodcorerequired

temporal_aggregation_method · range TemporalAggregationMethodEnum · cardinality 1

Within each time window there are many raw measurements; this says which single number was kept — the highest, the average, the total. The hottest moment of a day and the average across the whole day can differ by many degrees, so it matters which one the value represents.

How the value summarises sub-period values. Maps 1:1 to CF cell_methods.

Examples

maximumDaily Tmax — time: maximum in CF.

meanAnnual-mean PM2.5 — time: mean in CF.

Allowed values

mean Arithmetic mean over the window maximum Maximum over the window minimum Minimum over the window sum Sum over the window percentile A percentile of the values in the window point_in_time A point-in-time sample with no aggregation applied
Covered by — 5 standards
omop_gaiaassertedabsent coverage
No aggregation-method slot in gaiaCatalog or gaia-db.
degaussassertedabsent coverage
DeGAUSS emits no temporal-aggregation field.
amadeusassertedpartial coverage
where thredds_dataset.xml long_name / grid name (daily_maximum_temperature)
The aggregation (daily maximum) is recoverable only from the variable long_name, not a structured field.
cherassertedabsent coverage
C-HER's data-level codes track processing stage, not which statistic summarises a sub-period; no aggregation-method field.
codataassertedout_of_layer coverage
How sub-period values were aggregated in one run is instance-layer detail outside the conceptual EV/DDI-CDI layer.
Why it matters & mappings

"Daily maximum" and "daily mean" temperature are different exposures with different health associations, and this is the field that separates them. Omitting it lets two studies silently compare a maximum against a mean and reach opposite conclusions about the same heat event.

Day-Boundary Conventioncorerequired

day_boundary_convention · range DayBoundaryConventionEnum · cardinality 1

When does "Tuesday" start and end for this dataset — midnight local time, midnight in London, or noon-to-noon? Different products genuinely disagree, which changes which hot afternoon lands on which day.

Where the 24-hour day window starts. Mandatory. Daymet = local_midnight; PRISM = 24h_ending_1200_GMT; NARR / ERA5 sub-daily = utc_midnight. The single most-omitted slot in the literature and a known source of cross-study disagreement.

Examples

local_midnightDaymet convention — day starts at local midnight.

not_applicableAnnual PM2.5 aggregate — no day boundary is meaningful.

Allowed values

local_midnight Day starts at local midnight at the target location utc_midnight Day starts at 00:00 UTC ending_1200_gmt 24-hour window ending 12:00 GMT, used by PRISM and historically common in US ... solar_noon_centered 24-hour window centered on local solar noon observation_dependent Day boundary follows whatever the underlying observation network uses (e not_applicable No day boundary applies — e
Covered by — 5 standards
omop_gaiaassertedabsent coverage
No day-boundary slot anywhere in gaiaCatalog or gaia-db.
degaussassertedabsent coverage
DeGAUSS records no day-boundary convention.
amadeusassertedabsent coverage
The NetCDF time axis (days since 1900-01-01) has no calendar day-edge clarification — pure ambiguity.
cherassertedabsent coverage
C-HER has no field for where the 24-hour day window starts.
codataassertedabsent coverage
Day-boundary convention is an EnVar-novel commensurability slot no standard carries; not merely out-of-layer — genuinely absent.
Why it matters & mappings

The single most-omitted slot in the environmental-health literature and a known source of cross-study disagreement: Daymet's local-midnight day and PRISM's 24h-ending-1200-GMT day slice the same thermometer readings differently, so the "daily Tmax" for the same calendar date can differ between products and lagged analyses can shift by a whole day. It is also the exposure-side half of the day-boundary cross-check against the clinical-side clinical_date_assignment_convention.

Recommended Strongly encouraged 6 fields
Full field reference — every slot, cardinality & inheritance
Field Name Tier Cardinality / Range Description
Temporal Resolution temporal_resolution core 1
TemporalResolutionEnum
Native temporal grain of the values
Temporal Aggregation Method temporal_aggregation_method core 1
TemporalAggregationMethodEnum
How the value summarises sub-period values
Aggregation Window (seconds) temporal_aggregation_window_seconds recommended 0..1
Integer
Redundant with temporal_resolution but explicit for machine use; e
Day-Boundary Convention day_boundary_convention core 1
DayBoundaryConventionEnum
Where the 24-hour day window starts
Temporal Coverage Start temporal_coverage_start recommended 0..1
Date
Start of the source product's full temporal coverage
Temporal Coverage End temporal_coverage_end recommended 0..1
Date
End of the source product's coverage
Extraction Window Start extraction_window_start recommended 0..1
Date
Actual start date the run extracted
Extraction Window End extraction_window_end recommended 0..1
Date
Actual end date the run extracted
Calendar (CF) calendar recommended 0..1
CalendarEnum
Calendar of the time axis
Diagram & LinkML source
 classDiagram
    class TemporalReference
    click TemporalReference href "../../classes/TemporalReference/"
      TemporalReference : calendar





        TemporalReference --> "0..1" CalendarEnum : calendar
        click CalendarEnum href "../../enums/CalendarEnum/"



      TemporalReference : day_boundary_convention





        TemporalReference --> "1" DayBoundaryConventionEnum : day_boundary_convention
        click DayBoundaryConventionEnum href "../../enums/DayBoundaryConventionEnum/"



      TemporalReference : extraction_window_end

      TemporalReference : extraction_window_start

      TemporalReference : temporal_aggregation_method





        TemporalReference --> "1" TemporalAggregationMethodEnum : temporal_aggregation_method
        click TemporalAggregationMethodEnum href "../../enums/TemporalAggregationMethodEnum/"



      TemporalReference : temporal_aggregation_window_seconds

      TemporalReference : temporal_coverage_end

      TemporalReference : temporal_coverage_start

      TemporalReference : temporal_resolution





        TemporalReference --> "1" TemporalResolutionEnum : temporal_resolution
        click TemporalResolutionEnum href "../../enums/TemporalResolutionEnum/"



name: TemporalReference
annotations:
  domain_of_use:
    tag: domain_of_use
    value: environmental_exposure
description: 'Temporal provenance of an environmental exposure value: native temporal
  grain, aggregation rule, day-boundary convention, coverage of the source product,
  the extraction window the run actually pulled, and calendar. One per record.'
title: Temporal Reference
from_schema: https://w3id.org/linkml/microschemas/envar
see_also:
- https://cfconventions.org/
- https://en.wikipedia.org/wiki/ISO_8601
rank: 1000
slot_usage:
  temporal_resolution:
    name: temporal_resolution
    required: true
  temporal_aggregation_method:
    name: temporal_aggregation_method
    required: true
  day_boundary_convention:
    name: day_boundary_convention
    required: true
attributes:
  temporal_resolution:
    name: temporal_resolution
    annotations:
      tier:
        tag: tier
        value: core
      justification:
        tag: justification
        value: A daily value and an annual value of the same variable are different
          exposures with different health associations; without the native grain an
          analyst cannot tell whether a series supports an acute (day-level) analysis
          or only a chronic one, and silent resampling between products goes undetected.
      explanation:
        tag: explanation
        value: How often does this dataset produce a number — one per hour, one per
          day, one per year? A daily temperature and a yearly average temperature
          are very different things, so you need to know which kind of value you are
          looking at before comparing anything.
      covered_by:
        tag: covered_by
        annotations:
          omop_gaia:
            tag: omop_gaia
            annotations:
              extent:
                tag: extent
                value: absent
              status:
                tag: status
                value: asserted
              where:
                tag: where
                value: no column
              note:
                tag: note
                value: No first-class temporal_resolution slot in gaiaCatalog or gaia-db.
          degauss:
            tag: degauss
            annotations:
              extent:
                tag: extent
                value: absent
              status:
                tag: status
                value: asserted
              where:
                tag: where
                value: no column
              note:
                tag: note
                value: DeGAUSS's daily grain is implicit in one-row-per-day, with
                  no resolution field.
          amadeus:
            tag: amadeus
            annotations:
              extent:
                tag: extent
                value: partial
              status:
                tag: status
                value: asserted
              where:
                tag: where
                value: thredds_dataset.xml day axis increment = 1.0 (days since 1900-01-01)
              note:
                tag: note
                value: Only derivable from the THREDDS time-axis increment; not written
                  as a discrete resolution field.
          cher:
            tag: cher
            annotations:
              extent:
                tag: extent
                value: full
              status:
                tag: status
                value: asserted
              where:
                tag: where
                value: table_name temporal-resolution code (§2.4); inheritable temporal_resolution
              note:
                tag: note
                value: C-HER carries temporal resolution first-class as a code in
                  the table_name pattern and as an inheritable lineage field.
          codata:
            tag: codata
            annotations:
              extent:
                tag: extent
                value: out_of_layer
              status:
                tag: status
                value: asserted
              where:
                tag: where
                value: no column
              note:
                tag: note
                value: The native temporal grain of a specific run is instance-layer
                  detail outside the conceptual EV/DDI-CDI layer.
    description: Native temporal grain of the values.
    title: Temporal Resolution
    examples:
    - value: daily
      description: Daymet Tmax — one value per day.
    - value: annual
      description: ACAG satellite PM2.5 — one value per year.
    from_schema: https://w3id.org/linkml/microschemas/envar
    see_also:
    - https://cfconventions.org/cf-conventions/cf-conventions.html#time-coordinate
    owner: TemporalReference
    domain_of:
    - TemporalReference
    range: TemporalResolutionEnum
    required: true
  temporal_aggregation_method:
    name: temporal_aggregation_method
    annotations:
      tier:
        tag: tier
        value: core
      justification:
        tag: justification
        value: '"Daily maximum" and "daily mean" temperature are different exposures
          with different health associations, and this is the field that separates
          them. Omitting it lets two studies silently compare a maximum against a
          mean and reach opposite conclusions about the same heat event.'
      explanation:
        tag: explanation
        value: Within each time window there are many raw measurements; this says
          which single number was kept — the highest, the average, the total. The
          hottest moment of a day and the average across the whole day can differ
          by many degrees, so it matters which one the value represents.
      covered_by:
        tag: covered_by
        annotations:
          omop_gaia:
            tag: omop_gaia
            annotations:
              extent:
                tag: extent
                value: absent
              status:
                tag: status
                value: asserted
              where:
                tag: where
                value: no column
              note:
                tag: note
                value: No aggregation-method slot in gaiaCatalog or gaia-db.
          degauss:
            tag: degauss
            annotations:
              extent:
                tag: extent
                value: absent
              status:
                tag: status
                value: asserted
              where:
                tag: where
                value: no column
              note:
                tag: note
                value: DeGAUSS emits no temporal-aggregation field.
          amadeus:
            tag: amadeus
            annotations:
              extent:
                tag: extent
                value: partial
              status:
                tag: status
                value: asserted
              where:
                tag: where
                value: thredds_dataset.xml long_name / grid name (daily_maximum_temperature)
              note:
                tag: note
                value: The aggregation (daily maximum) is recoverable only from the
                  variable long_name, not a structured field.
          cher:
            tag: cher
            annotations:
              extent:
                tag: extent
                value: absent
              status:
                tag: status
                value: asserted
              where:
                tag: where
                value: no column
              note:
                tag: note
                value: C-HER's data-level codes track processing stage, not which
                  statistic summarises a sub-period; no aggregation-method field.
          codata:
            tag: codata
            annotations:
              extent:
                tag: extent
                value: out_of_layer
              status:
                tag: status
                value: asserted
              where:
                tag: where
                value: no column
              note:
                tag: note
                value: How sub-period values were aggregated in one run is instance-layer
                  detail outside the conceptual EV/DDI-CDI layer.
    description: How the value summarises sub-period values. Maps 1:1 to CF cell_methods.
    title: Temporal Aggregation Method
    examples:
    - value: maximum
      description: 'Daily Tmax  `time: maximum` in CF.'
    - value: mean
      description: 'Annual-mean PM2.5  `time: mean` in CF.'
    from_schema: https://w3id.org/linkml/microschemas/envar
    see_also:
    - https://cfconventions.org/cf-conventions/cf-conventions.html#cell-methods
    owner: TemporalReference
    domain_of:
    - TemporalReference
    range: TemporalAggregationMethodEnum
    required: true
  temporal_aggregation_window_seconds:
    name: temporal_aggregation_window_seconds
    annotations:
      tier:
        tag: tier
        value: recommended
      justification:
        tag: justification
        value: 'A machine-checkable twin of `temporal_resolution`: an explicit numeric
          window (86400 for daily) lets validators verify the declared grain arithmetically
          instead of interpreting an enum label, catching a mislabelled resolution
          before it corrupts a temporal join.'
      explanation:
        tag: explanation
        value: The same "how long is one time step" answer, but written as a plain
          number of seconds — a day is 86,400 seconds. Computers can check and compare
          numbers much more reliably than words like "daily", so the redundancy is
          deliberate.
      covered_by:
        tag: covered_by
        annotations:
          omop_gaia:
            tag: omop_gaia
            annotations:
              extent:
                tag: extent
                value: absent
              status:
                tag: status
                value: asserted
              where:
                tag: where
                value: no column
              note:
                tag: note
                value: No aggregation-window field; the temporal grain itself is absent.
          degauss:
            tag: degauss
            annotations:
              extent:
                tag: extent
                value: absent
              status:
                tag: status
                value: asserted
              where:
                tag: where
                value: no column
              note:
                tag: note
                value: DeGAUSS emits no explicit window-length field.
          amadeus:
            tag: amadeus
            annotations:
              extent:
                tag: extent
                value: partial
              status:
                tag: status
                value: asserted
              where:
                tag: where
                value: thredds_dataset.xml day axis increment = 1.0 (days since 1900-01-01)
              note:
                tag: note
                value: The 1-day window is derivable in the THREDDS time axis but
                  not emitted as an explicit seconds value.
          cher:
            tag: cher
            annotations:
              extent:
                tag: extent
                value: absent
              status:
                tag: status
                value: asserted
              where:
                tag: where
                value: no column
              note:
                tag: note
                value: C-HER encodes a temporal-resolution code but not a machine
                  seconds-per-step window.
          codata:
            tag: codata
            annotations:
              extent:
                tag: extent
                value: out_of_layer
              status:
                tag: status
                value: asserted
              where:
                tag: where
                value: no column
              note:
                tag: note
                value: The numeric aggregation window of one run is instance-layer
                  detail outside the conceptual EV/DDI-CDI layer.
    description: Redundant with `temporal_resolution` but explicit for machine use;
      e.g. 86400 for daily, 3600 for hourly.
    title: Aggregation Window (seconds)
    examples:
    - value: '86400'
      description: Daily window (Daymet Tmax).
    - value: '31536000'
      description: Annual window (satellite PM2.5).
    from_schema: https://w3id.org/linkml/microschemas/envar
    owner: TemporalReference
    domain_of:
    - TemporalReference
    range: integer
  day_boundary_convention:
    name: day_boundary_convention
    annotations:
      tier:
        tag: tier
        value: core
      justification:
        tag: justification
        value: 'The single most-omitted slot in the environmental-health literature
          and a known source of cross-study disagreement: Daymet''s local-midnight
          day and PRISM''s 24h-ending-1200-GMT day slice the same thermometer readings
          differently, so the "daily Tmax" for the same calendar date can differ between
          products and lagged analyses can shift by a whole day. It is also the exposure-side
          half of the day-boundary cross-check against the clinical-side `clinical_date_assignment_convention`.'
      explanation:
        tag: explanation
        value: When does "Tuesday" start and end for this dataset — midnight local
          time, midnight in London, or noon-to-noon? Different products genuinely
          disagree, which changes which hot afternoon lands on which day.
      covered_by:
        tag: covered_by
        annotations:
          omop_gaia:
            tag: omop_gaia
            annotations:
              extent:
                tag: extent
                value: absent
              status:
                tag: status
                value: asserted
              where:
                tag: where
                value: no column
              note:
                tag: note
                value: No day-boundary slot anywhere in gaiaCatalog or gaia-db.
          degauss:
            tag: degauss
            annotations:
              extent:
                tag: extent
                value: absent
              status:
                tag: status
                value: asserted
              where:
                tag: where
                value: no column
              note:
                tag: note
                value: DeGAUSS records no day-boundary convention.
          amadeus:
            tag: amadeus
            annotations:
              extent:
                tag: extent
                value: absent
              status:
                tag: status
                value: asserted
              where:
                tag: where
                value: no column
              note:
                tag: note
                value: The NetCDF time axis (days since 1900-01-01) has no calendar
                  day-edge clarification — pure ambiguity.
          cher:
            tag: cher
            annotations:
              extent:
                tag: extent
                value: absent
              status:
                tag: status
                value: asserted
              where:
                tag: where
                value: no column
              note:
                tag: note
                value: C-HER has no field for where the 24-hour day window starts.
          codata:
            tag: codata
            annotations:
              extent:
                tag: extent
                value: absent
              status:
                tag: status
                value: asserted
              where:
                tag: where
                value: no column
              note:
                tag: note
                value: Day-boundary convention is an EnVar-novel commensurability
                  slot no standard carries; not merely out-of-layer — genuinely absent.
    description: Where the 24-hour day window starts. **Mandatory.** Daymet = `local_midnight`;
      PRISM = `24h_ending_1200_GMT`; NARR / ERA5 sub-daily = `utc_midnight`. The single
      most-omitted slot in the literature and a known source of cross-study disagreement.
    title: Day-Boundary Convention
    examples:
    - value: local_midnight
      description: Daymet convention — day starts at local midnight.
    - value: not_applicable
      description: Annual PM2.5 aggregate — no day boundary is meaningful.
    from_schema: https://w3id.org/linkml/microschemas/envar
    see_also:
    - https://daymet.ornl.gov/
    - https://prism.oregonstate.edu/
    - https://psl.noaa.gov/data/gridded/data.narr.html
    owner: TemporalReference
    domain_of:
    - TemporalReference
    range: DayBoundaryConventionEnum
    required: true
  temporal_coverage_start:
    name: temporal_coverage_start
    annotations:
      tier:
        tag: tier
        value: recommended
      justification:
        tag: justification
        value: 'Distinguishes out-of-coverage from missing: without the product''s
          coverage start, a gap before 1980 in a Daymet-derived series looks like
          missing data rather than a request outside the product''s lifetime, and
          imputation or exclusion decisions go wrong.'
      explanation:
        tag: explanation
        value: The earliest date the source dataset has any data for at all. If you
          ask for a date before this, the answer is not "missing" — the dataset simply
          never covered that time.
      covered_by:
        tag: covered_by
        annotations:
          omop_gaia:
            tag: omop_gaia
            annotations:
              extent:
                tag: extent
                value: full
              status:
                tag: status
                value: verified
              where:
                tag: where
                value: gaia_catalog meta_dcat_*.json dct:temporal; gaia_db variable_source.start_date
              evidence:
                tag: evidence
                value: EnVar/examples/heat/COMPARISON.md §H (dataset time-span ✅)
              note:
                tag: note
                value: GAIA records the product time-span via DCAT dct:temporal and
                  variable_source.start_date/end_date.
          degauss:
            tag: degauss
            annotations:
              extent:
                tag: extent
                value: absent
              status:
                tag: status
                value: asserted
              where:
                tag: where
                value: no column
              note:
                tag: note
                value: DeGAUSS emits no product coverage-start.
          amadeus:
            tag: amadeus
            annotations:
              extent:
                tag: extent
                value: full
              status:
                tag: status
                value: verified
              where:
                tag: where
                value: thredds_dataset.xml TimeSpan (1979 -> present)
              evidence:
                tag: evidence
                value: EnVar/examples/heat/COMPARISON.md §H (dataset time-span ✅)
              note:
                tag: note
                value: The THREDDS dataset.xml TimeSpan gives the product's full temporal
                  coverage.
          cher:
            tag: cher
            annotations:
              extent:
                tag: extent
                value: full
              status:
                tag: status
                value: asserted
              where:
                tag: where
                value: table_name temporal-extent YYYYMMDDYYYYMMDD (start); inheritable
                  temporal_extent
              note:
                tag: note
                value: C-HER encodes the coverage start in the concatenated temporal-extent
                  code (§2.4) and as an inheritable lineage field.
          codata:
            tag: codata
            annotations:
              extent:
                tag: extent
                value: out_of_layer
              status:
                tag: status
                value: asserted
              where:
                tag: where
                value: no column
              note:
                tag: note
                value: A product's coverage start is instance/discovery-layer detail
                  outside the conceptual EV/DDI-CDI layer.
    description: Start of the source product's full temporal coverage.
    title: Temporal Coverage Start
    examples:
    - value: '1980-01-01'
      description: Daymet V4 coverage starts in 1980.
    from_schema: https://w3id.org/linkml/microschemas/envar
    owner: TemporalReference
    domain_of:
    - TemporalReference
    range: date
  temporal_coverage_end:
    name: temporal_coverage_end
    annotations:
      tier:
        tag: tier
        value: recommended
      justification:
        tag: justification
        value: Distinguishes out-of-coverage from missing at the recent end, and —
          because live products keep growing — pins down which vintage of the product
          this run saw, so a later re-run against a longer series can be recognised
          as a different extract.
      explanation:
        tag: explanation
        value: The latest date the source dataset covers; some products are still
          being extended. Asking for a date after this returns nothing — not because
          data is missing, but because it does not exist yet.
      covered_by:
        tag: covered_by
        annotations:
          omop_gaia:
            tag: omop_gaia
            annotations:
              extent:
                tag: extent
                value: full
              status:
                tag: status
                value: verified
              where:
                tag: where
                value: gaia_catalog meta_dcat_*.json dct:temporal; gaia_db variable_source.end_date
              evidence:
                tag: evidence
                value: EnVar/examples/heat/COMPARISON.md §H (dataset time-span ✅)
              note:
                tag: note
                value: GAIA records the product coverage-end via DCAT dct:temporal
                  and variable_source.end_date.
          degauss:
            tag: degauss
            annotations:
              extent:
                tag: extent
                value: absent
              status:
                tag: status
                value: asserted
              where:
                tag: where
                value: no column
              note:
                tag: note
                value: DeGAUSS emits no product coverage-end.
          amadeus:
            tag: amadeus
            annotations:
              extent:
                tag: extent
                value: full
              status:
                tag: status
                value: verified
              where:
                tag: where
                value: thredds_dataset.xml TimeSpan (-> present)
              evidence:
                tag: evidence
                value: EnVar/examples/heat/COMPARISON.md §H (dataset time-span ✅)
              note:
                tag: note
                value: The THREDDS TimeSpan closes the product's coverage window (open
                  to present for live products).
          cher:
            tag: cher
            annotations:
              extent:
                tag: extent
                value: full
              status:
                tag: status
                value: asserted
              where:
                tag: where
                value: table_name temporal-extent YYYYMMDDYYYYMMDD (end); inheritable
                  temporal_extent
              note:
                tag: note
                value: C-HER encodes the coverage end in the concatenated temporal-extent
                  code (§2.4) and as an inheritable lineage field.
          codata:
            tag: codata
            annotations:
              extent:
                tag: extent
                value: out_of_layer
              status:
                tag: status
                value: asserted
              where:
                tag: where
                value: no column
              note:
                tag: note
                value: A product's coverage end is instance/discovery-layer detail
                  outside the conceptual EV/DDI-CDI layer.
    description: End of the source product's coverage. May be an "ongoing" sentinel
      for live products.
    title: Temporal Coverage End
    examples:
    - value: '2024-12-31'
      description: End of Daymet V4 coverage at extraction time.
    from_schema: https://w3id.org/linkml/microschemas/envar
    owner: TemporalReference
    domain_of:
    - TemporalReference
    range: date
  extraction_window_start:
    name: extraction_window_start
    annotations:
      tier:
        tag: tier
        value: recommended
      justification:
        tag: justification
        value: Records the dates this run actually pulled, as opposed to what the
          product offers; without it a reproducer cannot re-request the same slice,
          and a lag analysis cannot verify that the pre-event days (e.g. the day before
          the index date) were actually in the extract.
      explanation:
        tag: explanation
        value: Of everything the dataset covers, this is the first date this particular
          job actually downloaded — like noting which pages of a big book you photocopied.
      covered_by:
        tag: covered_by
        annotations:
          omop_gaia:
            tag: omop_gaia
            annotations:
              extent:
                tag: extent
                value: absent
              status:
                tag: status
                value: asserted
              where:
                tag: where
                value: no column
              note:
                tag: note
                value: gaia-native output collapses per-day to the variable's window-wide
                  validity range; the run's actual extraction window start is not
                  recorded.
          degauss:
            tag: degauss
            annotations:
              extent:
                tag: extent
                value: absent
              status:
                tag: status
                value: asserted
              where:
                tag: where
                value: no column
              note:
                tag: note
                value: DeGAUSS writes per-day rows but records no explicit run extraction-window-start
                  field.
          amadeus:
            tag: amadeus
            annotations:
              extent:
                tag: extent
                value: absent
              status:
                tag: status
                value: asserted
              where:
                tag: where
                value: no column
              note:
                tag: note
                value: Amadeus records the product TimeSpan but not the start date
                  this particular run pulled.
          cher:
            tag: cher
            annotations:
              extent:
                tag: extent
                value: absent
              status:
                tag: status
                value: asserted
              where:
                tag: where
                value: no column
              note:
                tag: note
                value: C-HER's temporal_extent is the dataset's coverage span, not
                  the window an individual extraction job pulled.
          codata:
            tag: codata
            annotations:
              extent:
                tag: extent
                value: out_of_layer
              status:
                tag: status
                value: asserted
              where:
                tag: where
                value: no column
              note:
                tag: note
                value: The window a specific run pulled is instance-layer provenance
                  outside the conceptual EV/DDI-CDI layer.
    description: Actual start date the run extracted.
    title: Extraction Window Start
    examples:
    - value: '2022-07-18'
      description: Day before the Phoenix index date, for lag analysis.
    from_schema: https://w3id.org/linkml/microschemas/envar
    owner: TemporalReference
    domain_of:
    - TemporalReference
    range: date
  extraction_window_end:
    name: extraction_window_end
    annotations:
      tier:
        tag: tier
        value: recommended
      justification:
        tag: justification
        value: The closing bracket of the slice this run actually pulled; without
          it a reproducer cannot re-request the same window, and a lag analysis cannot
          verify that the post-event days it needs were actually extracted rather
          than silently truncated.
      explanation:
        tag: explanation
        value: Of everything the dataset covers, this is the last date this particular
          job actually downloaded — the end of the photocopied page range.
      covered_by:
        tag: covered_by
        annotations:
          omop_gaia:
            tag: omop_gaia
            annotations:
              extent:
                tag: extent
                value: absent
              status:
                tag: status
                value: asserted
              where:
                tag: where
                value: no column
              note:
                tag: note
                value: gaia collapses to the variable's window; no per-run extraction-window-end
                  is recorded.
          degauss:
            tag: degauss
            annotations:
              extent:
                tag: extent
                value: absent
              status:
                tag: status
                value: asserted
              where:
                tag: where
                value: no column
              note:
                tag: note
                value: DeGAUSS records no explicit run extraction-window-end field.
          amadeus:
            tag: amadeus
            annotations:
              extent:
                tag: extent
                value: absent
              status:
                tag: status
                value: asserted
              where:
                tag: where
                value: no column
              note:
                tag: note
                value: Amadeus records the product TimeSpan but not the end date this
                  particular run pulled.
          cher:
            tag: cher
            annotations:
              extent:
                tag: extent
                value: absent
              status:
                tag: status
                value: asserted
              where:
                tag: where
                value: no column
              note:
                tag: note
                value: C-HER's temporal_extent is the dataset span, not the window
                  a specific extraction job pulled.
          codata:
            tag: codata
            annotations:
              extent:
                tag: extent
                value: out_of_layer
              status:
                tag: status
                value: asserted
              where:
                tag: where
                value: no column
              note:
                tag: note
                value: The window a specific run pulled is instance-layer provenance
                  outside the conceptual EV/DDI-CDI layer.
    description: Actual end date the run extracted.
    title: Extraction Window End
    examples:
    - value: '2022-07-20'
      description: Day after the Phoenix index date, for lag analysis.
    from_schema: https://w3id.org/linkml/microschemas/envar
    owner: TemporalReference
    domain_of:
    - TemporalReference
    range: date
  calendar:
    name: calendar
    annotations:
      tier:
        tag: tier
        value: recommended
      justification:
        tag: justification
        value: Some climate-model output uses non-standard calendars (365-day noleap,
          360-day); joining such a series to real-world Gregorian clinical dates without
          converting shifts daily values progressively through the year — a silent,
          cumulative misalignment.
      explanation:
        tag: explanation
        value: Most data uses the ordinary calendar, but some climate models simplify
          — for example pretending every year has exactly 365 days (no leap days)
          or twelve 30-day months. If you line those dates up against a real calendar
          without converting, they slowly drift out of sync.
      covered_by:
        tag: covered_by
        annotations:
          omop_gaia:
            tag: omop_gaia
            annotations:
              extent:
                tag: extent
                value: absent
              status:
                tag: status
                value: asserted
              where:
                tag: where
                value: no column
              note:
                tag: note
                value: No calendar/time-origin slot in gaia.
          degauss:
            tag: degauss
            annotations:
              extent:
                tag: extent
                value: absent
              status:
                tag: status
                value: asserted
              where:
                tag: where
                value: no column
              note:
                tag: note
                value: DeGAUSS emits no calendar field.
          amadeus:
            tag: amadeus
            annotations:
              extent:
                tag: extent
                value: full
              status:
                tag: status
                value: verified
              where:
                tag: where
                value: thredds_dataset.xml day axis (days since 1900-01-01, calendar
                  = gregorian)
              evidence:
                tag: evidence
                value: EnVar/examples/heat/COMPARISON.md §H (time-origin / calendar
                  ✅)
              note:
                tag: note
                value: The THREDDS day axis declares the calendar (gregorian) and
                  time origin explicitly.
          cher:
            tag: cher
            annotations:
              extent:
                tag: extent
                value: absent
              status:
                tag: status
                value: asserted
              where:
                tag: where
                value: no column
              note:
                tag: note
                value: C-HER has no calendar-of-time-axis field.
          codata:
            tag: codata
            annotations:
              extent:
                tag: extent
                value: out_of_layer
              status:
                tag: status
                value: asserted
              where:
                tag: where
                value: no column
              note:
                tag: note
                value: The calendar of a specific product's time axis is instance-layer
                  representation detail outside the conceptual EV/DDI-CDI layer.
    description: Calendar of the time axis. `gregorian` is the default; only matters
      when a source uses a non-standard calendar. Covers both the CF `calendar` values
      and product-specific conventions that CF has no term for — e.g. Daymet's fixed
      365-day year (`daymet_365`), which keeps Feb 29 but drops Dec 31 in leap years
      and is therefore neither `gregorian` nor `noleap`.
    title: Calendar (CF)
    examples:
    - value: gregorian
      description: The default; used by ACAG PM2.5.
    - value: daymet_365
      description: Daymet — fixed 365-day year; keeps Feb 29, drops Dec 31 in leap
        years.
    from_schema: https://w3id.org/linkml/microschemas/envar
    see_also:
    - https://cfconventions.org/cf-conventions/cf-conventions.html#calendar
    owner: TemporalReference
    domain_of:
    - TemporalReference
    range: CalendarEnum

See Also

Identifier and Mapping Information

Annotations

property value
domain_of_use environmental_exposure

Schema Source

Mappings

Mapping Type Mapped Value
self envar:TemporalReference
native envar:TemporalReference