Skip to content

EnVar microschema · class

Exposure Model

ExposureModel

The model class that produced the values (interpolation, reanalysis, ML, statistical blend, equation), its inputs, its methods-paper DOI, its cross-validation skill, known biases, and any bias correction. One per record; may be null for direct observation.

11 fields 1 core

URI: envar:class/ExposureModel

Core Conditionally core Recommended Optional
Core Required for a valid record 1 field
Exposure Model Typecorerequired

exposure_model_type · range ExposureModelTypeEnum · cardinality 1

Most "exposure" numbers were never measured at your door: a model estimates them from weather stations, satellites, or physics equations. This field says which kind of machinery produced the number, so you know how much to trust it and what could go wrong.

The class of model that produced the values. Daymet = spatial_interpolation; NARR / ERA5 = reanalysis; GridMET = statistical_blend; Brokamp PM = single_machine_learning; Di et al. PM = ensemble_machine_learning.

Examples

spatial_interpolationDaymet V4 daily Tmax (station observations interpolated to a 1 km grid)

satellite_retrievalACAG V5.GL satellite-derived annual PM2.5

Allowed values

direct_measurement Direct instrument observation spatial_interpolation Station observations interpolated to a grid (Daymet) reanalysis Data-assimilation reanalysis (NARR, ERA5) statistical_blend Blend of multiple sources (GridMET = PRISM + NLDAS-2) chemical_transport_model Deterministic chemical transport model (CMAQ, GEOS-Chem) ensemble_machine_learning Ensemble ML model (Di et al single_machine_learning Single ML model (Brokamp PM2 equation_derived Derived analytically from other variables via an equation satellite_retrieval Satellite-based retrieval algorithm
Covered by — 5 standards
omop_gaiaassertedabsent coverage
GAIA has no first-class exposure-model-type slot; it is present only via the EnVar JSON-LD extension. Natively GAIA carries only a free-text measurement_technique.
degaussassertedabsent coverage
DeGAUSS carries no exposure-model-type slot.
amadeusassertedabsent coverage
Amadeus carries no exposure-model-type slot.
cherassertedpartial coverage
where table_dictionary data_level (mXX = modeled data)
C-HER's data_level code flags modeled data (mXX) and distinguishes calculated (dXX) from modeled, but does not name the model class (reanalysis vs interpolation).
codataassertedout_of_layer coverage
The exposure-model class is instance-layer methodology that CDIF / DDI-CDI conceptual and represented layers explicitly do not carry (related-approaches.md §4).
Why it matters & mappings

A measured value, an interpolated value, and an ML-predicted value have different error structures and cannot be pooled naively; this is the field that tells them apart. Without it, users cannot judge whether values are measurements or predictions.

Conditionally core Required in specific contexts 1 field
Ensemble Member Countconditionally core

exposure_model_ensemble_member_count · range Integer · cardinality 0..1

Some products run the same model many times with slightly different settings and combine the results — each run is a "member". Knowing how many members there were (say, 100) tells you how much the spread between runs can be trusted as a measure of uncertainty.

For ensemble products, the number of members. Null with reason not_provided_by_source for single-realisation products.

Example

100e.g. an ensemble ML product with 100 members; single-realisation products such as Daymet leave this null

Why it matters & mappings

Mandatory for ensemble products: the member count determines how the ensemble spread can be interpreted as an uncertainty estimate. Without it, per-value spread statistics cannot be reproduced or sanity-checked.

Recommended Strongly encouraged 5 fields
Optional Include when available 4 fields
Reason Methods Paper DOI Is Missingoptional

exposure_model_paper_doi_missing_reason · range MissingReasonEnum · cardinality 0..1

When a field is empty, it helps to say why. This slot records whether the paper genuinely does not exist, was not shared by the producer, or simply was not looked up.

Reason exposure_model_paper_doi is null.

Example

not_provided_by_source

Allowed values

not_provided_by_source Source product does not produce this information available_but_not_extracted Source produces this information but the current pipeline does not surface it upstream_data_not_propagated An upstream tool emitted this information but the current pipeline dropped it... under_investigation We are working on populating this slot not_applicable This slot does not apply to this variable / record
Why it matters & mappings

Distinguishes "no methods paper exists" from "nobody bothered to record it". Without the reason, a blank DOI silently hides whether the model is undocumented or the metadata is just incomplete.

Reason Cross-Validation R² Is Missingoptional

exposure_model_cross_validation_r2_missing_reason · range MissingReasonEnum · cardinality 0..1

If the quality score is blank, this slot says why — for example, some well-known products simply never publish one. It turns an empty field into an honest answer.

Reason exposure_model_cross_validation_r2 is null.

Example

not_provided_by_sourceDaymet does not publish a cross-validation R²

Allowed values

not_provided_by_source Source product does not produce this information available_but_not_extracted Source produces this information but the current pipeline does not surface it upstream_data_not_propagated An upstream tool emitted this information but the current pipeline dropped it... under_investigation We are working on populating this slot not_applicable This slot does not apply to this variable / record
Why it matters & mappings

Separates "the producer never published a skill score" from "we forgot to record it". Without this, a missing R² is ambiguous and reviewers cannot tell an undocumented model from sloppy metadata.

Reason Ensemble Member Count Is Missingoptional

exposure_model_ensemble_member_count_missing_reason · range MissingReasonEnum · cardinality 0..1

Many products come from just one model run, so "number of members" genuinely does not apply. This slot says so explicitly, instead of leaving readers to wonder whether information was lost.

Reason exposure_model_ensemble_member_count is null.

Example

not_applicablesingle-realisation products (Daymet, ACAG) have no ensemble

Allowed values

not_provided_by_source Source product does not produce this information available_but_not_extracted Source produces this information but the current pipeline does not surface it upstream_data_not_propagated An upstream tool emitted this information but the current pipeline dropped it... under_investigation We are working on populating this slot not_applicable This slot does not apply to this variable / record
Why it matters & mappings

Confirms explicitly that a product is single-realisation rather than an ensemble whose member count was dropped. Without it, a null count is ambiguous and the conditionally-core rule for ensemble products cannot be audited.

Reason Bias Correction Is Missingoptional

bias_correction_applied_missing_reason · range MissingReasonEnum · cardinality 0..1

If nobody could say whether the numbers were statistically adjusted, this slot records why that answer is missing — for example, the data producer never documented it.

Reason bias_correction_applied is null.

Example

not_provided_by_source

Allowed values

not_provided_by_source Source product does not produce this information available_but_not_extracted Source produces this information but the current pipeline does not surface it upstream_data_not_propagated An upstream tool emitted this information but the current pipeline dropped it... under_investigation We are working on populating this slot not_applicable This slot does not apply to this variable / record
Why it matters & mappings

Distinguishes "the producer never documented any correction" from an unrecorded answer. Without it, a blank bias-correction field cannot be told apart from missing metadata, weakening any audit of how values were adjusted.

Full field reference — every slot, cardinality & inheritance
Field Name Tier Cardinality / Range Description
Exposure Model Type exposure_model_type core 1
ExposureModelTypeEnum
The class of model that produced the values
Exposure Model Inputs exposure_model_inputs recommended *
String
Inputs to the model
Methods Paper DOI exposure_model_paper_doi recommended 0..1
String
DOI of the methods paper describing the model (Thornton et al
Reason Methods Paper DOI Is Missing exposure_model_paper_doi_missing_reason optional 0..1
MissingReasonEnum
Reason exposure_model_paper_doi is null
Cross-Validation R² exposure_model_cross_validation_r2 recommended 0..1
Float
Model cross-validation R², where reported by the producer
Reason Cross-Validation R² Is Missing exposure_model_cross_validation_r2_missing_reason optional 0..1
MissingReasonEnum
Reason exposure_model_cross_validation_r2 is null
Known Model Biases exposure_model_known_biases recommended *
String
Free-text flags of known issues, e
Ensemble Member Count exposure_model_ensemble_member_count conditionally core 0..1
Integer
For ensemble products, the number of members
Reason Ensemble Member Count Is Missing exposure_model_ensemble_member_count_missing_reason optional 0..1
MissingReasonEnum
Reason exposure_model_ensemble_member_count is null
Bias Correction Applied bias_correction_applied recommended 0..1
BiasCorrectionAppliedEnum
Whether and how bias correction has been applied
Reason Bias Correction Is Missing bias_correction_applied_missing_reason optional 0..1
MissingReasonEnum
Reason bias_correction_applied is null
Conditional rules on this class
Rule Applied Preconditions Postconditions
slot_conditions {'exposure_model_type': {'equals_string': 'ensemble_machine_learning'}} {'exposure_model_ensemble_member_count': {'required': True}}
Diagram & LinkML source
 classDiagram
    class ExposureModel
    click ExposureModel href "../../classes/ExposureModel/"
      ExposureModel : bias_correction_applied





        ExposureModel --> "0..1" BiasCorrectionAppliedEnum : bias_correction_applied
        click BiasCorrectionAppliedEnum href "../../enums/BiasCorrectionAppliedEnum/"



      ExposureModel : bias_correction_applied_missing_reason





        ExposureModel --> "0..1" MissingReasonEnum : bias_correction_applied_missing_reason
        click MissingReasonEnum href "../../enums/MissingReasonEnum/"



      ExposureModel : exposure_model_cross_validation_r2

      ExposureModel : exposure_model_cross_validation_r2_missing_reason





        ExposureModel --> "0..1" MissingReasonEnum : exposure_model_cross_validation_r2_missing_reason
        click MissingReasonEnum href "../../enums/MissingReasonEnum/"



      ExposureModel : exposure_model_ensemble_member_count

      ExposureModel : exposure_model_ensemble_member_count_missing_reason





        ExposureModel --> "0..1" MissingReasonEnum : exposure_model_ensemble_member_count_missing_reason
        click MissingReasonEnum href "../../enums/MissingReasonEnum/"



      ExposureModel : exposure_model_inputs

      ExposureModel : exposure_model_known_biases

      ExposureModel : exposure_model_paper_doi

      ExposureModel : exposure_model_paper_doi_missing_reason





        ExposureModel --> "0..1" MissingReasonEnum : exposure_model_paper_doi_missing_reason
        click MissingReasonEnum href "../../enums/MissingReasonEnum/"



      ExposureModel : exposure_model_type





        ExposureModel --> "1" ExposureModelTypeEnum : exposure_model_type
        click ExposureModelTypeEnum href "../../enums/ExposureModelTypeEnum/"



name: ExposureModel
annotations:
  domain_of_use:
    tag: domain_of_use
    value: environmental_exposure
description: The model class that produced the values (interpolation, reanalysis,
  ML, statistical blend, equation), its inputs, its methods-paper DOI, its cross-validation
  skill, known biases, and any bias correction. One per record; may be null for direct
  observation.
title: Exposure Model
from_schema: https://w3id.org/linkml/microschemas/envar
see_also:
- https://en.wikipedia.org/wiki/Reanalysis_(meteorology)
rank: 1000
slot_usage:
  exposure_model_type:
    name: exposure_model_type
    required: true
attributes:
  exposure_model_type:
    name: exposure_model_type
    annotations:
      tier:
        tag: tier
        value: core
      justification:
        tag: justification
        value: A measured value, an interpolated value, and an ML-predicted value
          have different error structures and cannot be pooled naively; this is the
          field that tells them apart. Without it, users cannot judge whether values
          are measurements or predictions.
      explanation:
        tag: explanation
        value: 'Most "exposure" numbers were never measured at your door: a model
          estimates them from weather stations, satellites, or physics equations.
          This field says which kind of machinery produced the number, so you know
          how much to trust it and what could go wrong.'
      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 has no first-class exposure-model-type slot; it is present
                  only via the EnVar JSON-LD extension. Natively GAIA carries only
                  a free-text measurement_technique.
          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 carries no exposure-model-type slot.
          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 carries no exposure-model-type slot.
          cher:
            tag: cher
            annotations:
              extent:
                tag: extent
                value: partial
              status:
                tag: status
                value: asserted
              where:
                tag: where
                value: table_dictionary data_level (mXX = modeled data)
              note:
                tag: note
                value: C-HER's data_level code flags modeled data (mXX) and distinguishes
                  calculated (dXX) from modeled, but does not name the model class
                  (reanalysis vs interpolation).
          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 exposure-model class is instance-layer methodology that
                  CDIF / DDI-CDI conceptual and represented layers explicitly do not
                  carry (related-approaches.md §4).
    description: The class of model that produced the values. Daymet = `spatial_interpolation`;
      NARR / ERA5 = `reanalysis`; GridMET = `statistical_blend`; Brokamp PM = `single_machine_learning`;
      Di et al. PM = `ensemble_machine_learning`.
    title: Exposure Model Type
    examples:
    - value: spatial_interpolation
      description: Daymet V4 daily Tmax (station observations interpolated to a 1
        km grid)
    - value: satellite_retrieval
      description: ACAG V5.GL satellite-derived annual PM2.5
    from_schema: https://w3id.org/linkml/microschemas/envar
    see_also:
    - https://daymet.ornl.gov/
    - https://www.climatologylab.org/gridmet.html
    - https://www.ecmwf.int/en/forecasts/dataset/ecmwf-reanalysis-v5
    owner: ExposureModel
    domain_of:
    - ExposureModel
    range: ExposureModelTypeEnum
    required: true
  exposure_model_inputs:
    name: exposure_model_inputs
    annotations:
      tier:
        tag: tier
        value: recommended
      justification:
        tag: justification
        value: Needed to trace what the value actually derives from. Without the input
          list, a shared bias or gap in an upstream dataset cannot be traced through
          to the exposure values it contaminated.
      explanation:
        tag: explanation
        value: A model is only as good as what you feed it. This lists the raw ingredients
          — station readings, satellite images, other datasets — that went into cooking
          up the final numbers.
      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 has no slot anywhere for model inputs.
          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 carries no model-input list.
          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 carries no model-input list.
          cher:
            tag: cher
            annotations:
              extent:
                tag: extent
                value: partial
              status:
                tag: status
                value: asserted
              where:
                tag: where
                value: dataset_lineage (parent resources of a computed/modeled resource)
              note:
                tag: note
                value: C-HER's dataset_lineage links parent resources a child was
                  calculated/modeled from, but as resource FKs, not a named model-input
                  variable list.
          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: Model inputs are instance-layer derivation provenance that
                  the CDIF / DDI-CDI conceptual and represented layers do not carry
                  (related-approaches.md §4).
    description: 'Inputs to the model. For GridMET: `["PRISM monthly normals", "NLDAS-2
      sub-daily reanalysis"]`. For derived heat metrics, the input variable list (held
      in `DerivedHeatMetric.equation_inputs` for typed cases).'
    title: Exposure Model Inputs
    examples:
    - value: GHCN-Daily station observations
      description: sole element of the Daymet V4 input list
    from_schema: https://w3id.org/linkml/microschemas/envar
    see_also:
    - https://prism.oregonstate.edu/
    owner: ExposureModel
    domain_of:
    - ExposureModel
    range: string
    multivalued: true
  exposure_model_paper_doi:
    name: exposure_model_paper_doi
    annotations:
      tier:
        tag: tier
        value: recommended
      justification:
        tag: justification
        value: The reproducibility anchor for how the value was made. Without it,
          anyone auditing or reproducing the analysis must guess which of several
          versions of a method the values actually came from.
      explanation:
        tag: explanation
        value: Scientists publish a paper describing exactly how a model works, and
          a DOI is a permanent web address for that paper. Recording it here means
          anyone can look up the full recipe behind the numbers, even years later.
      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 carries a dataset DOI (dct:identifier) but no methods-paper
                  DOI describing the exposure model; no such slot exists.
          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 carries no methods-paper DOI for the source model.
          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 carries no methods-paper DOI for the source model.
          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 doi field is the resource's own DOI, not a methods-paper
                  DOI for the model that produced the values.
          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 model methods-paper DOI is instance-layer derivation metadata
                  the CDIF / DDI-CDI conceptual and represented layers do not carry.
    description: DOI of the methods paper describing the model (Thornton et al. 2022
      for Daymet; Abatzoglou 2013 for GridMET).
    title: Methods Paper DOI
    examples:
    - value: 10.1021/acs.est.1c05309
      description: van Donkelaar et al. 2021 methods paper for ACAG PM2.5
    from_schema: https://w3id.org/linkml/microschemas/envar
    see_also:
    - https://www.doi.org/
    owner: ExposureModel
    domain_of:
    - ExposureModel
    range: string
  exposure_model_paper_doi_missing_reason:
    name: exposure_model_paper_doi_missing_reason
    annotations:
      tier:
        tag: tier
        value: optional
      justification:
        tag: justification
        value: Distinguishes "no methods paper exists" from "nobody bothered to record
          it". Without the reason, a blank DOI silently hides whether the model is
          undocumented or the metadata is just incomplete.
      explanation:
        tag: explanation
        value: When a field is empty, it helps to say why. This slot records whether
          the paper genuinely does not exist, was not shared by the producer, or simply
          was not looked up.
    description: Reason `exposure_model_paper_doi` is null.
    title: Reason Methods Paper DOI Is Missing
    examples:
    - value: not_provided_by_source
    from_schema: https://w3id.org/linkml/microschemas/envar
    owner: ExposureModel
    domain_of:
    - ExposureModel
    range: MissingReasonEnum
  exposure_model_cross_validation_r2:
    name: exposure_model_cross_validation_r2
    annotations:
      tier:
        tag: tier
        value: recommended
      justification:
        tag: justification
        value: The single most useful one-number quality signal for a modeled product.
          Omitting it leaves downstream users with no quantitative basis for weighing
          one exposure product against another or for propagating model skill into
          their error budgets.
      explanation:
        tag: explanation
        value: Cross-validation R² is a 0-to-1 score of how well the model predicted
          values it had never seen during training — closer to 1 is better. A score
          of 0.90 means the model captures most of the real variation; a low score
          means treat the numbers with caution.
      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 carries no model cross-validation R2; no such slot exists
                  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 carries no model cross-validation R2.
          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 carries no model cross-validation R2.
          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 carries no source-model skill/cross-validation 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: Model cross-validation skill is instance-layer quality metadata
                  the CDIF / DDI-CDI conceptual and represented layers do not carry.
    description: Model cross-validation R², where reported by the producer.
    title: Cross-Validation R²
    examples:
    - value: '0.90'
      description: reported for ACAG V5.GL satellite-derived PM2.5
    from_schema: https://w3id.org/linkml/microschemas/envar
    see_also:
    - https://en.wikipedia.org/wiki/Coefficient_of_determination
    owner: ExposureModel
    domain_of:
    - ExposureModel
    range: float
  exposure_model_cross_validation_r2_missing_reason:
    name: exposure_model_cross_validation_r2_missing_reason
    annotations:
      tier:
        tag: tier
        value: optional
      justification:
        tag: justification
        value: Separates "the producer never published a skill score" from "we forgot
          to record it". Without this, a missing R² is ambiguous and reviewers cannot
          tell an undocumented model from sloppy metadata.
      explanation:
        tag: explanation
        value: If the quality score is blank, this slot says why — for example, some
          well-known products simply never publish one. It turns an empty field into
          an honest answer.
    description: Reason `exposure_model_cross_validation_r2` is null.
    title: Reason Cross-Validation R² Is Missing
    examples:
    - value: not_provided_by_source
      description: Daymet does not publish a cross-validation R²
    from_schema: https://w3id.org/linkml/microschemas/envar
    owner: ExposureModel
    domain_of:
    - ExposureModel
    range: MissingReasonEnum
  exposure_model_known_biases:
    name: exposure_model_known_biases
    annotations:
      tier:
        tag: tier
        value: recommended
      justification:
        tag: justification
        value: The field reviewers care about most; it bites coastal and sparse-station
          analyses in particular. Omitting it lets a documented systematic error (e.g.
          a coastal cold bias) silently propagate into health-effect estimates that
          reviewers will later reject.
      explanation:
        tag: explanation
        value: Every model has known blind spots — places or conditions where it is
          reliably a bit wrong, like running warm in summer or cold at the coast.
          This slot writes those warnings down so the next person does not rediscover
          them the hard way.
      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 carries no known-model-biases field.
          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 carries no known-model-biases 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 carries no known-model-biases 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 has free-text description/notes but no structured known-biases
                  field for the source model.
          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: Known model biases are instance-layer quality metadata the
                  CDIF / DDI-CDI conceptual and represented layers do not carry.
    description: Free-text flags of known issues, e.g. "NLDAS-2 coastal Tmax bias
      up to -1.48 °C", "NARR cold bias at extremes", "Daymet warm bias in summer in
      some western US regions". The field reviewers care about.
    title: Known Model Biases
    examples:
    - value: warm-season warm bias documented in some western US regions
      description: one known bias of Daymet V4 daily Tmax
    - value: interpolation degrades in sparse-station areas
      description: another element of the same Daymet V4 bias list
    from_schema: https://w3id.org/linkml/microschemas/envar
    see_also:
    - https://psl.noaa.gov/data/gridded/data.narr.html
    - https://daymet.ornl.gov/
    owner: ExposureModel
    domain_of:
    - ExposureModel
    range: string
    multivalued: true
  exposure_model_ensemble_member_count:
    name: exposure_model_ensemble_member_count
    annotations:
      tier:
        tag: tier
        value: conditionally_core
      justification:
        tag: justification
        value: 'Mandatory for ensemble products: the member count determines how the
          ensemble spread can be interpreted as an uncertainty estimate. Without it,
          per-value spread statistics cannot be reproduced or sanity-checked.'
      explanation:
        tag: explanation
        value: Some products run the same model many times with slightly different
          settings and combine the results — each run is a "member". Knowing how many
          members there were (say, 100) tells you how much the spread between runs
          can be trusted as a measure of uncertainty.
    description: For ensemble products, the number of members. Null with reason `not_provided_by_source`
      for single-realisation products.
    title: Ensemble Member Count
    examples:
    - value: '100'
      description: e.g. an ensemble ML product with 100 members; single-realisation
        products such as Daymet leave this null
    from_schema: https://w3id.org/linkml/microschemas/envar
    see_also:
    - https://en.wikipedia.org/wiki/Ensemble_forecasting
    owner: ExposureModel
    domain_of:
    - ExposureModel
    range: integer
  exposure_model_ensemble_member_count_missing_reason:
    name: exposure_model_ensemble_member_count_missing_reason
    annotations:
      tier:
        tag: tier
        value: optional
      justification:
        tag: justification
        value: Confirms explicitly that a product is single-realisation rather than
          an ensemble whose member count was dropped. Without it, a null count is
          ambiguous and the conditionally-core rule for ensemble products cannot be
          audited.
      explanation:
        tag: explanation
        value: Many products come from just one model run, so "number of members"
          genuinely does not apply. This slot says so explicitly, instead of leaving
          readers to wonder whether information was lost.
    description: Reason `exposure_model_ensemble_member_count` is null.
    title: Reason Ensemble Member Count Is Missing
    examples:
    - value: not_applicable
      description: single-realisation products (Daymet, ACAG) have no ensemble
    from_schema: https://w3id.org/linkml/microschemas/envar
    owner: ExposureModel
    domain_of:
    - ExposureModel
    range: MissingReasonEnum
  bias_correction_applied:
    name: bias_correction_applied
    annotations:
      tier:
        tag: tier
        value: recommended
      justification:
        tag: justification
        value: Pooling bias-corrected and raw values silently mixes apples and oranges.
          Without this flag, an analyst cannot tell whether two datasets differ because
          of the environment or because one of them was statistically adjusted.
      explanation:
        tag: explanation
        value: Sometimes model output is nudged after the fact to better match real
          observations — that nudging is "bias correction". This slot records whether
          the numbers were adjusted that way and, if so, which technique was used.
      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 carries no bias-correction flag for the source model.
          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 carries no bias-correction flag.
          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 carries no bias-correction flag.
          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 but do not
                  flag whether statistical bias correction was applied.
          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: Bias correction is instance-layer derivation metadata the CDIF
                  / DDI-CDI conceptual and represented layers do not carry.
    description: Whether and how bias correction has been applied. Usually `none`
      for Tmax from reference products.
    title: Bias Correction Applied
    examples:
    - value: none
      description: Daymet V4 daily Tmax is used uncorrected
    from_schema: https://w3id.org/linkml/microschemas/envar
    owner: ExposureModel
    domain_of:
    - ExposureModel
    range: BiasCorrectionAppliedEnum
  bias_correction_applied_missing_reason:
    name: bias_correction_applied_missing_reason
    annotations:
      tier:
        tag: tier
        value: optional
      justification:
        tag: justification
        value: Distinguishes "the producer never documented any correction" from an
          unrecorded answer. Without it, a blank bias-correction field cannot be told
          apart from missing metadata, weakening any audit of how values were adjusted.
      explanation:
        tag: explanation
        value: If nobody could say whether the numbers were statistically adjusted,
          this slot records why that answer is missing — for example, the data producer
          never documented it.
    description: Reason `bias_correction_applied` is null.
    title: Reason Bias Correction Is Missing
    examples:
    - value: not_provided_by_source
    from_schema: https://w3id.org/linkml/microschemas/envar
    owner: ExposureModel
    domain_of:
    - ExposureModel
    range: MissingReasonEnum
rules:
- preconditions:
    slot_conditions:
      exposure_model_type:
        name: exposure_model_type
        equals_string: ensemble_machine_learning
  postconditions:
    slot_conditions:
      exposure_model_ensemble_member_count:
        name: exposure_model_ensemble_member_count
        required: true
  description: Ensemble products must state their member count — ensemble spread is
    meaningless without knowing how many realisations it summarises (tier conditionally_core
    context "ensemble models").

See Also

Identifier and Mapping Information

Annotations

property value
domain_of_use environmental_exposure

Schema Source

Mappings

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