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.
Where it sits
Composed intoEnvironmentalExposureRecord
Fields
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_interpolation — Daymet V4 daily Tmax (station observations interpolated to a 1 km grid)
satellite_retrieval — ACAG 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
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.
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
100 — e.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.
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.
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).
Example
GHCN-Daily station observations — sole element of the Daymet V4 input list
Covered by — 5 standards
Why it matters & mappings
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.
See also: https://prism.oregonstate.edu/
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.
DOI of the methods paper describing the model (Thornton et al. 2022 for Daymet; Abatzoglou 2013 for GridMET).
Example
10.1021/acs.est.1c05309 — van Donkelaar et al. 2021 methods paper for ACAG PM2.5
Covered by — 5 standards
Why it matters & mappings
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.
See also: https://www.doi.org/
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.
Model cross-validation R², where reported by the producer.
Example
0.90 — reported for ACAG V5.GL satellite-derived PM2.5
Covered by — 5 standards
Why it matters & mappings
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.
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.
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.
Examples
warm-season warm bias documented in some western US regions — one known bias of Daymet V4 daily Tmax
interpolation degrades in sparse-station areas — another element of the same Daymet V4 bias list
Covered by — 5 standards
Why it matters & mappings
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.
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.
Whether and how bias correction has been applied. Usually none for Tmax from reference products.
Example
none — Daymet V4 daily Tmax is used uncorrected
Allowed values
none No bias correction applied
quantile_mapping Quantile-mapping bias correction
linear_scaling Linear scaling bias correction
delta_method Delta-method bias correction
other Some other bias-correction method has been applied
Covered by — 5 standards
Why it matters & mappings
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.
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.
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_source — Daymet 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.
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_applicable — single-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.
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
- from schema: https://w3id.org/linkml/microschemas/envar
Mappings
| Mapping Type | Mapped Value |
|---|---|
| self | envar:ExposureModel |
| native | envar:ExposureModel |