Skip to content

Variables

Variables describe the individual measurements, calculations, or contextual data columns within a dataset. The OAE Data Protocol uses a class hierarchy to capture the different levels of metadata required for different kinds of variables — a directly measured pH value needs calibration and instrument details, while a calculated CO₂ variable needs the calculation method, and a contextual column like a station ID needs minimal metadata.

Variable Hierarchy

graph LR
    V("`*Variable*
    (abstract)`")
    FV("`*FieldVariable*
    (abstract)`")
    ISV("`*InSituVariable*
    (abstract)`")
    MV("`*MeasuredVariable*
    (abstract)`")
    NMV["NonMeasuredVariable"]
    MOV["ModelOutputVariable"]
    SEV["SocioeconomicVariable"]
    CV["CalculatedVariable"]
    DM["DiscreteMeasuredVariable"]
    CM["ContinuousMeasuredVariable"]
    DPH["`DiscretePHVariable
    DiscreteTAVariable
    DiscreteDICVariable
    DiscretePhysiologicalVariable
    *…and others*`"]
    CPH["`ContinuousPHVariable
    ContinuousTAVariable
    ContinuousDICVariable
    ContinuousPhysiologicalVariable
    *…and others*`"]

    V --> FV
    V --> MOV
    FV --> NMV
    FV --> ISV
    ISV --> SEV
    ISV --> CV
    ISV --> MV
    MV --> DM
    MV --> CM
    DM --> DPH
    CM --> CPH

    classDef abstract fill:#f5f5f5,stroke:#999,stroke-dasharray: 4 3,color:#555
    classDef concrete fill:#e0e8f0,stroke:#4F656A
    classDef leaf fill:#d0e8d0,stroke:#4F656A
    class V,FV,ISV,MV abstract
    class DM,CM concrete
    class NMV,MOV,SEV,CV,DPH,CPH leaf

This hierarchy aims to align with NOAA-PMEL's OAPMetadata XSD schema to make interoperability easier between NOAA's OCADS system, and other repositories where OAE researchers may choose to host their data, whether they be other ocean data repositories, and generalist repositories such as Zenodo.

Choosing a Variable Type

In a field dataset, three fields decide each variable's class. Variables in a model output dataset use the ModelOutputVariable class and are classified with the separate ModelVariableType enum. See Model Output Variables below.

  • variable_type: what kind of measurement it is. See VariableType for the values.
  • genesis: whether it was measured by an instrument or calculated from other variables. Not used for non_measured variables.
  • sampling: for measured variables, discrete (bottle or grab samples) or continuous (sensors, underway systems).

Selection → Schema Class Mapping

variable_type genesis sampling Schema Class
pH measured discrete DiscretePHVariable
pH measured continuous ContinuousPHVariable
ta measured discrete DiscreteTAVariable
ta measured continuous ContinuousTAVariable
dic measured discrete DiscreteDICVariable
dic measured continuous ContinuousDICVariable
co2 measured discrete DiscreteCO2Variable
co2 measured continuous ContinuousCO2Variable
sediment measured discrete DiscreteSedimentVariable
sediment measured continuous ContinuousSedimentVariable
hplc measured discrete HPLCVariable
physiological measured discrete DiscretePhysiologicalVariable
physiological measured continuous ContinuousPhysiologicalVariable
socioeconomic measured — SocioeconomicVariable
other measured discrete DiscreteMeasuredVariable
other measured continuous ContinuousMeasuredVariable
Any except non_measured calculated — CalculatedVariable
non_measured — — NonMeasuredVariable

What Each Level Adds

Each class adds fields to the one above it. The class pages list them in full.

  • Variable: what every variable has, such as its column name in the data file, a descriptive name and an optional reference to a community vocabulary.
  • InSituVariable: data the project collected or derived: units, how it was produced and who produced it.
  • MeasuredVariable: how samples were taken and analyzed, the analyzing instrument with its calibration, and quality control.
  • CalculatedVariable: how the value was calculated, including software, inputs and constants.

Model Output Variables

Variables in a ModelOutputDataset are described by a single class, ModelOutputVariable, which sits directly under Variable as a sibling of FieldVariable. ModelOutputVariables carry none of the sampling, instrument, calibration or in-situ QC metadata that field-collected variables do. How the output was produced is described by the simulation configuration on the parent dataset.

Type-Specific Fields (Mixins)

Many measured variables (either discrete or continuous) inherit additional fields based on their variable_type that are always present whether the specific variable is discrete or continuous. In these instances, we use LinkML's mixin feature to allow for trait-like composability of these fields into both the corresponding DiscreteVariable and ContinuousVariable classes for that variable_type.

Variable Type Mixin
pH MeasuredPHFields
ta MeasuredTAFields
dic MeasuredDICFields
co2 MeasuredCO2Fields
sediment MeasuredSedimentFields
physiological MeasuredPhysiologicalFields
other —

Leaf classes (e.g., DiscretePHVariable, DiscreteTAVariable) may add further type-specific fields as well. For a comprehensive list of all required and optional fields please refer to the individual class pages linked in the mapping table above.