Data descriptors

Contents

Data descriptors#

Data descriptors#

Pydantic model esgvoc.api.data_descriptors.ActivityCMIP7[source]#

Bases: PlainTermDataDescriptor

Identifier of the CMIP activity to which a dataset belongs

Examples: “PMIP”, “CMIP”, “CFMIP”, “ScenarioMIP”

An ‘activity’ refers to a coordinated set of modeling experiments designed to address specific scientific questions or objectives. Activities generally have the suffix “MIP”, for “model intercomparison project” (even though they’re not referred to as projects within CMIP CVs).

Activity DRS names should not include a phase. For example, the activity should always be ScenarioMIP, not ScenarioMIP6, ScenarioMIP7 etc.

It is now considered essential for each Experiment to be associated with a single Activity. However, this was not followed in CMIP6, which significantly complicates definition and validation of the schemas for these two classes.

Show JSON schema
{
   "$defs": {
      "ActivityCMIP7": {
         "additionalProperties": true,
         "description": "Identifier of the CMIP activity to which a dataset belongs\n\nExamples: \"PMIP\", \"CMIP\", \"CFMIP\", \"ScenarioMIP\"\n\nAn 'activity' refers to a coordinated set of modeling experiments\ndesigned to address specific scientific questions or objectives.\nActivities generally have the suffix \"MIP\",\nfor \"model intercomparison project\"\n(even though they're not referred to as projects within CMIP CVs).\n\nActivity DRS names should not include a phase.\nFor example, the activity should always be ScenarioMIP,\nnot ScenarioMIP6, ScenarioMIP7 etc.\n\nIt is now considered essential for each :py:class:`Experiment`\nto be associated with a single :py:class:`Activity`.\nHowever, this was not followed in CMIP6,\nwhich significantly complicates definition and validation\nof the schemas for these two classes.",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "description": {
               "default": "",
               "title": "Description",
               "type": "string"
            },
            "drs_name": {
               "title": "Drs Name",
               "type": "string"
            },
            "experiments": {
               "anyOf": [
                  {
                     "items": {
                        "oneOf": [
                           {
                              "$ref": "#/$defs/ExperimentLegacy"
                           },
                           {
                              "$ref": "#/$defs/ExperimentCMIP7"
                           },
                           {
                              "$ref": "#/$defs/ExperimentBase"
                           }
                        ]
                     },
                     "type": "array"
                  },
                  {
                     "items": {
                        "type": "string"
                     },
                     "type": "array"
                  }
               ],
               "title": "Experiments"
            },
            "urls": {
               "items": {
                  "format": "uri",
                  "maxLength": 2083,
                  "minLength": 1,
                  "type": "string"
               },
               "title": "Urls",
               "type": "array"
            }
         },
         "required": [
            "id",
            "type",
            "drs_name",
            "experiments",
            "urls"
         ],
         "title": "ActivityCMIP7",
         "type": "object"
      },
      "ActivityLegacy": {
         "additionalProperties": true,
         "description": "Legacy activity model for CMIP6 and earlier versions.\n\nThis version only contains basic fields (id, type, description)\nwithout the additional requirements introduced in CMIP7.",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "description": {
               "default": "",
               "title": "Description",
               "type": "string"
            }
         },
         "required": [
            "id",
            "type"
         ],
         "title": "ActivityLegacy",
         "type": "object"
      },
      "ComponentType": {
         "additionalProperties": true,
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "description": {
               "default": "",
               "title": "Description",
               "type": "string"
            },
            "drs_name": {
               "title": "Drs Name",
               "type": "string"
            }
         },
         "required": [
            "id",
            "type",
            "drs_name"
         ],
         "title": "ComponentType",
         "type": "object"
      },
      "ExperimentBase": {
         "additionalProperties": true,
         "description": "Base experiment model for Universe data.\n\nThis loose model accepts experiment data that doesn't fully conform to either\nExperimentLegacy or ExperimentCMIP7. Used as fallback for incomplete experiments.\nOnly contains fields common to both Legacy and CMIP7 models.",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "description": {
               "default": "",
               "title": "Description",
               "type": "string"
            },
            "drs_name": {
               "title": "Drs Name",
               "type": "string"
            },
            "tier": {
               "anyOf": [
                  {
                     "type": "integer"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Tier"
            },
            "min_number_yrs_per_sim": {
               "anyOf": [
                  {
                     "type": "number"
                  },
                  {
                     "type": "integer"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Min Number Yrs Per Sim"
            },
            "required_model_components": {
               "anyOf": [
                  {
                     "items": {
                        "anyOf": [
                           {
                              "$ref": "#/$defs/ComponentType"
                           },
                           {
                              "type": "string"
                           }
                        ]
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Required Model Components"
            },
            "additional_allowed_model_components": {
               "items": {
                  "anyOf": [
                     {
                        "$ref": "#/$defs/ComponentType"
                     },
                     {
                        "type": "string"
                     }
                  ]
               },
               "title": "Additional Allowed Model Components",
               "type": "array"
            }
         },
         "required": [
            "id",
            "type",
            "drs_name"
         ],
         "title": "ExperimentBase",
         "type": "object"
      },
      "ExperimentCMIP7": {
         "additionalProperties": true,
         "description": "Identifier of the CMIP experiment to which a dataset belongs/a dataset is derived from\n\nExamples: \"historical\", \"piControl\", \"ssp126\"\n\nAn 'experiment' refers to a specific, controlled simulation\nconducted using climate models to investigate particular aspects of the Earth's climate system.\nThese experiments are designed with set parameters, such as initial conditions,\nexternal forcings (like greenhouse gas  concentrations or solar radiation),\nand duration, to explore and understand climate behavior under various conditions.\n\nIt is now considered essential for each :py:class:`Experiment`\nto be associated with a single :py:class:`Activity`.\nHowever, this was not followed in CMIP6,\nwhich significantly complicates definition and validation\nof the schemas for these two classes.",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "description": {
               "default": "",
               "title": "Description",
               "type": "string"
            },
            "drs_name": {
               "title": "Drs Name",
               "type": "string"
            },
            "activity": {
               "title": "Activity",
               "type": "string"
            },
            "additional_allowed_model_components": {
               "anyOf": [
                  {
                     "items": {
                        "type": "string"
                     },
                     "type": "array"
                  },
                  {
                     "items": {
                        "$ref": "#/$defs/ComponentType"
                     },
                     "type": "array"
                  }
               ],
               "title": "Additional Allowed Model Components"
            },
            "branch_information": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "title": "Branch Information"
            },
            "end_timestamp": {
               "anyOf": [
                  {
                     "format": "date-time",
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "title": "End Timestamp"
            },
            "min_ensemble_size": {
               "title": "Min Ensemble Size",
               "type": "integer"
            },
            "min_number_yrs_per_sim": {
               "anyOf": [
                  {
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "title": "Min Number Yrs Per Sim"
            },
            "parent_activity": {
               "anyOf": [
                  {
                     "oneOf": [
                        {
                           "$ref": "#/$defs/ActivityCMIP7"
                        },
                        {
                           "$ref": "#/$defs/ActivityLegacy"
                        }
                     ]
                  },
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "title": "Parent Activity"
            },
            "parent_experiment": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "oneOf": [
                        {
                           "$ref": "#/$defs/ExperimentLegacy"
                        },
                        {
                           "$ref": "#/$defs/ExperimentCMIP7"
                        },
                        {
                           "$ref": "#/$defs/ExperimentBase"
                        }
                     ]
                  },
                  {
                     "type": "null"
                  }
               ],
               "title": "Parent Experiment"
            },
            "parent_mip_era": {
               "anyOf": [
                  {
                     "$ref": "#/$defs/MipEra"
                  },
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "title": "Parent Mip Era"
            },
            "required_model_components": {
               "items": {
                  "anyOf": [
                     {
                        "$ref": "#/$defs/ComponentType"
                     },
                     {
                        "type": "string"
                     }
                  ]
               },
               "title": "Required Model Components",
               "type": "array"
            },
            "start_timestamp": {
               "anyOf": [
                  {
                     "format": "date-time",
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "title": "Start Timestamp"
            },
            "tier": {
               "anyOf": [
                  {
                     "type": "integer"
                  },
                  {
                     "type": "null"
                  }
               ],
               "title": "Tier"
            }
         },
         "required": [
            "id",
            "type",
            "drs_name",
            "activity",
            "additional_allowed_model_components",
            "branch_information",
            "end_timestamp",
            "min_ensemble_size",
            "min_number_yrs_per_sim",
            "parent_activity",
            "parent_experiment",
            "parent_mip_era",
            "required_model_components",
            "start_timestamp",
            "tier"
         ],
         "title": "ExperimentCMIP7",
         "type": "object"
      },
      "ExperimentLegacy": {
         "additionalProperties": true,
         "description": "An 'experiment' refers to a specific, controlled simulation conducted using climate models to     investigate particular aspects of the Earth's climate system. These experiments are designed     with set parameters, such as initial conditions, external forcings (like greenhouse gas     concentrations or solar radiation), and duration, to explore and understand climate behavior     under various scenarios and conditions.",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "description": {
               "default": "",
               "title": "Description",
               "type": "string"
            },
            "drs_name": {
               "title": "Drs Name",
               "type": "string"
            },
            "experiment_id": {
               "title": "Experiment Id",
               "type": "string"
            },
            "activity_id": {
               "items": {
                  "type": "string"
               },
               "title": "Activity Id",
               "type": "array"
            },
            "experiment": {
               "title": "Experiment",
               "type": "string"
            },
            "tier": {
               "anyOf": [
                  {
                     "type": "integer"
                  },
                  {
                     "type": "null"
                  }
               ],
               "title": "Tier"
            },
            "sub_experiment_id": {
               "anyOf": [
                  {
                     "items": {
                        "type": "string"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Sub Experiment Id"
            },
            "start_year": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "integer"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Start Year"
            },
            "end_year": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "integer"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "End Year"
            },
            "min_number_yrs_per_sim": {
               "anyOf": [
                  {
                     "type": "integer"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Min Number Yrs Per Sim"
            },
            "parent_activity_id": {
               "anyOf": [
                  {
                     "items": {
                        "type": "string"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Parent Activity Id"
            },
            "parent_experiment_id": {
               "anyOf": [
                  {
                     "items": {
                        "type": "string"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Parent Experiment Id"
            },
            "required_model_components": {
               "anyOf": [
                  {
                     "items": {
                        "anyOf": [
                           {
                              "$ref": "#/$defs/ComponentType"
                           },
                           {
                              "type": "string"
                           }
                        ]
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Required Model Components"
            },
            "additional_allowed_model_components": {
               "items": {
                  "anyOf": [
                     {
                        "$ref": "#/$defs/ComponentType"
                     },
                     {
                        "type": "string"
                     }
                  ]
               },
               "title": "Additional Allowed Model Components",
               "type": "array"
            }
         },
         "required": [
            "id",
            "type",
            "drs_name",
            "experiment_id",
            "activity_id",
            "experiment",
            "tier"
         ],
         "title": "ExperimentLegacy",
         "type": "object"
      },
      "MipEra": {
         "additionalProperties": true,
         "description": "Label that identifies the MIP era to which a dataset belongs\n\nExamples: \"CMIP6\", \"CMIP7\"\n\nThe MIP era is useful to distinguish among experiments performed during different CMIP phases\nbut with differences in experimental protocol in each phase.\nFor example, the \"historical\" experiments appear in multiple phases of CMIP\nbut have different input forcings in each.\nThis difference can be identified using the MIP era data descriptor.",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "description": {
               "default": "",
               "title": "Description",
               "type": "string"
            },
            "drs_name": {
               "title": "Drs Name",
               "type": "string"
            },
            "url": {
               "format": "uri",
               "maxLength": 2083,
               "minLength": 1,
               "title": "Url",
               "type": "string"
            }
         },
         "required": [
            "id",
            "type",
            "drs_name",
            "url"
         ],
         "title": "MipEra",
         "type": "object"
      }
   },
   "$ref": "#/$defs/ActivityCMIP7"
}

Validators:
  • name_must_not_end_in_number » drs_name

field description: str = ''[source]#

The description of the term.

field drs_name: str [Required][source]#
Validated by:
  • name_must_not_end_in_number

field experiments: list[Experiment] | list[str] [Required][source]#

Experiments ‘sponsored’ by this activity

field id: str [Required][source]#

The identifier of the terms.

field type: str [Required][source]#

The data descriptor to which the term belongs.

field urls: list[HttpUrl] [Required][source]#

URL with more information about this activity

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

validator name_must_not_end_in_number  »  drs_name[source]#
property describe[source]#
Pydantic model esgvoc.api.data_descriptors.Archive[source]#

Bases: PlainTermDataDescriptor

Show JSON schema
{
   "title": "Archive",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "drs_name": {
         "title": "Drs Name",
         "type": "string"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "drs_name"
   ]
}

field description: str = ''[source]#

The description of the term.

field drs_name: str [Required][source]#
field id: str [Required][source]#

The identifier of the terms.

field type: str [Required][source]#

The data descriptor to which the term belongs.

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.AreaLabel[source]#

Bases: PlainTermDataDescriptor

Label that describes a specific area sampling approach

Examples: “lnd”, “air”, “sea”, “u”

This label is used as the area component of a branded variable’s suffix (see BrandedSuffix).

Show JSON schema
{
   "title": "AreaLabel",
   "description": "Label that describes a specific area sampling approach\n\nExamples: \"lnd\", \"air\", \"sea\", \"u\"\n\nThis label is used as the area component of a branded variable's suffix\n(see :py:class:`BrandedSuffix`).",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "drs_name": {
         "title": "Drs Name",
         "type": "string"
      },
      "cf_area_type": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "title": "Cf Area Type"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "drs_name",
      "cf_area_type"
   ]
}

field cf_area_type: str | None [Required][source]#

CF-conventions area type (https://cfconventions.org/Data/area-type-table/current/build/area-type-table.html).

This is set to “u” (“unmasked”) when all areas are sampled i.e. no mask is applied to the data. For underlying details and logic, please see [Taylor et al., 2025](https://docs.google.com/document/d/19jzecgymgiiEsTDzaaqeLP6pTvLT-NzCMaq-wu-QoOc/edit?pli=1&tab=t.0).

If None, there is no CF-conventions area type associated with this area label.

field description: str = ''[source]#

The description of the term.

field drs_name: str [Required][source]#
field id: str [Required][source]#

The identifier of the terms.

field type: str [Required][source]#

The data descriptor to which the term belongs.

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.Arrangement[source]#

Bases: PlainTermDataDescriptor

Horizontal grid arrangement (EMD v1.0 Section 7.3).

Options: arakawa_a, arakawa_b, arakawa_c, arakawa_d, arakawa_e

A grid arrangement describes the relative locations of mass- and velocity-related quantities on the computed grid (for instance Collins et al. (2013), and for unstructured grids Thuburn et al. (2009)).

Show JSON schema
{
   "title": "Arrangement",
   "description": "Horizontal grid arrangement (EMD v1.0 Section 7.3).\n\nOptions: arakawa_a, arakawa_b, arakawa_c, arakawa_d, arakawa_e\n\nA grid arrangement describes the relative locations of mass- and velocity-related quantities\non the computed grid (for instance Collins et al. (2013), and for unstructured grids\nThuburn et al. (2009)).",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "drs_name": {
         "title": "Drs Name",
         "type": "string"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "drs_name"
   ]
}

field description: str = ''[source]#

The description of the term.

field drs_name: str [Required][source]#
field id: str [Required][source]#

The identifier of the terms.

field type: str [Required][source]#

The data descriptor to which the term belongs.

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.BrandedSuffix[source]#

Bases: CompositeTermDataDescriptor

The suffix of a branded variable.

Examples: “tavg-h2m-hxy-u”, “tpt-u-hxy-u”, “tavg-p19-hxy-air”

A branded variable is composed of two parts. The first part is the root variable (see Variable). The second is the suffix, i.e. the component described here. The suffix captures all the information about the time sampling, horizontal sampling, vertical sampling and area masking of the variable.

The suffix is composed of the following components:

  1. TemporalLabel

  2. VerticalLabel

  3. HorizontalLabel

  4. AreaLabel

For underlying details and logic, please see [Taylor et al., 2025](https://docs.google.com/document/d/19jzecgymgiiEsTDzaaqeLP6pTvLT-NzCMaq-wu-QoOc/edit?pli=1&tab=t.0).

Show JSON schema
{
   "title": "BrandedSuffix",
   "description": "The suffix of a branded variable.\n\nExamples: \"tavg-h2m-hxy-u\", \"tpt-u-hxy-u\", \"tavg-p19-hxy-air\"\n\nA branded variable is composed of two parts.\nThe first part is the root variable (see :py:class:`Variable`).\nThe second is the suffix, i.e. the component described here.\nThe suffix captures all the information\nabout the time sampling, horizontal sampling, vertical sampling\nand area masking of the variable.\n\nThe suffix is composed of the following components:\n\n#. :py:class:`TemporalLabel`\n#. :py:class:`VerticalLabel`\n#. :py:class:`HorizontalLabel`\n#. :py:class:`AreaLabel`\n\nFor underlying details and logic, please see\n[Taylor et al., 2025](https://docs.google.com/document/d/19jzecgymgiiEsTDzaaqeLP6pTvLT-NzCMaq-wu-QoOc/edit?pli=1&tab=t.0).",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "separator": {
         "title": "Separator",
         "type": "string"
      },
      "parts": {
         "items": {
            "$ref": "#/$defs/CompositeTermPart"
         },
         "title": "Parts",
         "type": "array"
      }
   },
   "$defs": {
      "CompositeTermPart": {
         "additionalProperties": true,
         "description": "A reference to a term, part of a composite term.",
         "properties": {
            "id": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "items": {
                        "type": "string"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Id"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "is_required": {
               "title": "Is Required",
               "type": "boolean"
            }
         },
         "required": [
            "type",
            "is_required"
         ],
         "title": "CompositeTermPart",
         "type": "object"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "separator",
      "parts"
   ]
}

field description: str = ''[source]#

The description of the term.

field id: str [Required][source]#

The identifier of the terms.

field parts: list[CompositeTermPart] [Required][source]#

The components.

field separator: str [Required][source]#

The components separator character.

field type: str [Required][source]#

The data descriptor to which the term belongs.

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.BrandedVariable[source]#

Bases: CompositeTermDataDescriptor

A climate-related quantity or measurement, including information about sampling.

Examples: “tas_tavg-h2m-hxy-u”, “pr_tpt-u-hxy-u”, “ua_tavg-p19-hxy-air”

The concept of a branded variable was introduced in CMIP7. A branded variable is composed of two parts. The first part is the root variable (see Variable). The second is the suffix (see BrandedSuffix).

For underlying details and logic, please see [Taylor et al., 2025](https://docs.google.com/document/d/19jzecgymgiiEsTDzaaqeLP6pTvLT-NzCMaq-wu-QoOc/edit?pli=1&tab=t.0).

Show JSON schema
{
   "title": "BrandedVariable",
   "description": "A climate-related quantity or measurement, including information about sampling.\n\nExamples: \"tas_tavg-h2m-hxy-u\", \"pr_tpt-u-hxy-u\", \"ua_tavg-p19-hxy-air\"\n\nThe concept of a branded variable was introduced in CMIP7.\nA branded variable is composed of two parts.\nThe first part is the root variable (see :py:class:`Variable`).\nThe second is the suffix (see :py:class:`BrandedSuffix`).\n\nFor underlying details and logic, please see\n[Taylor et al., 2025](https://docs.google.com/document/d/19jzecgymgiiEsTDzaaqeLP6pTvLT-NzCMaq-wu-QoOc/edit?pli=1&tab=t.0).",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "separator": {
         "title": "Separator",
         "type": "string"
      },
      "parts": {
         "items": {
            "$ref": "#/$defs/CompositeTermPart"
         },
         "title": "Parts",
         "type": "array"
      }
   },
   "$defs": {
      "CompositeTermPart": {
         "additionalProperties": true,
         "description": "A reference to a term, part of a composite term.",
         "properties": {
            "id": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "items": {
                        "type": "string"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Id"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "is_required": {
               "title": "Is Required",
               "type": "boolean"
            }
         },
         "required": [
            "type",
            "is_required"
         ],
         "title": "CompositeTermPart",
         "type": "object"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "separator",
      "parts"
   ]
}

field description: str = ''[source]#

The description of the term.

field id: str [Required][source]#

The identifier of the terms.

field parts: list[CompositeTermPart] [Required][source]#

The components.

field separator: str [Required][source]#

The components separator character.

field type: str [Required][source]#

The data descriptor to which the term belongs.

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.Calendar[source]#

Bases: PlainTermDataDescriptor

Show JSON schema
{
   "title": "Calendar",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "drs_name": {
         "title": "Drs Name",
         "type": "string"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "drs_name"
   ]
}

field description: str = ''[source]#

The description of the term.

field drs_name: str [Required][source]#
field id: str [Required][source]#

The identifier of the terms.

field type: str [Required][source]#

The data descriptor to which the term belongs.

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.CellVariableType[source]#

Bases: PlainTermDataDescriptor

Cell variable type (EMD v1.0 Section 7.4).

Options: mass, x_velocity, y_velocity, velocity

Types of physical variables that are carried at, or representative of conditions at, cells of a horizontal subgrid.

Show JSON schema
{
   "title": "CellVariableType",
   "description": "Cell variable type (EMD v1.0 Section 7.4).\n\nOptions: mass, x_velocity, y_velocity, velocity\n\nTypes of physical variables that are carried at, or representative of conditions at,\ncells of a horizontal subgrid.",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "drs_name": {
         "title": "Drs Name",
         "type": "string"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "drs_name"
   ]
}

field description: str = ''[source]#

The description of the term.

field drs_name: str [Required][source]#
field id: str [Required][source]#

The identifier of the terms.

field type: str [Required][source]#

The data descriptor to which the term belongs.

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.CitationUrl[source]#

Bases: PatternTermDataDescriptor

Show JSON schema
{
   "title": "CitationUrl",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "regex": {
         "title": "Regex",
         "type": "string"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "regex"
   ]
}

field description: str = ''[source]#

The description of the term.

field id: str [Required][source]#

The identifier of the terms.

field regex: str [Required][source]#

The regular expression.

field type: str [Required][source]#

The data descriptor to which the term belongs.

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.ComponentType[source]#

Bases: PlainTermDataDescriptor

Show JSON schema
{
   "title": "ComponentType",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "drs_name": {
         "title": "Drs Name",
         "type": "string"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "drs_name"
   ]
}

field description: str = ''[source]#

The description of the term.

field drs_name: str [Required][source]#
field id: str [Required][source]#

The identifier of the terms.

field type: str [Required][source]#

The data descriptor to which the term belongs.

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.CompositeTermDDex[source]#

Bases: CompositeTermDataDescriptor

Show JSON schema
{
   "title": "CompositeTermDDex",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "separator": {
         "title": "Separator",
         "type": "string"
      },
      "parts": {
         "items": {
            "$ref": "#/$defs/CompositeTermPart"
         },
         "title": "Parts",
         "type": "array"
      }
   },
   "$defs": {
      "CompositeTermPart": {
         "additionalProperties": true,
         "description": "A reference to a term, part of a composite term.",
         "properties": {
            "id": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "items": {
                        "type": "string"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Id"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "is_required": {
               "title": "Is Required",
               "type": "boolean"
            }
         },
         "required": [
            "type",
            "is_required"
         ],
         "title": "CompositeTermPart",
         "type": "object"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "separator",
      "parts"
   ]
}

field description: str = ''[source]#

The description of the term.

field id: str [Required][source]#

The identifier of the terms.

field parts: list[CompositeTermPart] [Required][source]#

The components.

field separator: str [Required][source]#

The components separator character.

field type: str [Required][source]#

The data descriptor to which the term belongs.

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.Contact[source]#

Bases: PatternTermDataDescriptor

Show JSON schema
{
   "title": "Contact",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "regex": {
         "title": "Regex",
         "type": "string"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "regex"
   ]
}

field description: str = ''[source]#

The description of the term.

field id: str [Required][source]#

The identifier of the terms.

field regex: str [Required][source]#

The regular expression.

field type: str [Required][source]#

The data descriptor to which the term belongs.

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.Convention[source]#

Bases: PlainTermDataDescriptor

Conventions governing the data

Examples: “CF-1.10”, “CF-1.12”

This data descriptor is actually defined by the CF-conventions. However, it is often used in a more specific and restrictive form within WCRP activities. To support this possibility, this data descriptor must also be defined within esgvoc.

The most commonly specified conventions are the climate and forecast metadata conventions (https://cfconventions.org/). Other conventions can also be specified in the ‘Conventions’ attribute of netCDF files/other metadata. The different conventions are usually separated by a whitespace. Within esgvoc, the ‘components’ (i.e. whitespace separated bits) are all that is specified. If users wish to combine them, they can, but esgvoc does not treat this as either a pattern or composite term.

Show JSON schema
{
   "title": "Convention",
   "description": "Conventions governing the data\n\nExamples: \"CF-1.10\", \"CF-1.12\"\n\nThis data descriptor is actually defined by the CF-conventions.\nHowever, it is often used in a more specific and restrictive form\nwithin WCRP activities.\nTo support this possibility, this data descriptor must also be defined within esgvoc.\n\nThe most commonly specified conventions are the\nclimate and forecast metadata conventions (https://cfconventions.org/).\nOther conventions can also be specified in the 'Conventions'\nattribute of netCDF files/other metadata.\nThe different conventions are usually separated by a whitespace.\nWithin esgvoc, the 'components' (i.e. whitespace separated bits)\nare all that is specified.\nIf users wish to combine them, they can,\nbut esgvoc does not treat this as either a pattern or composite term.",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "drs_name": {
         "title": "Drs Name",
         "type": "string"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "drs_name"
   ]
}

field description: str = ''[source]#

The description of the term.

field drs_name: str [Required][source]#
field id: str [Required][source]#

The identifier of the terms.

field type: str [Required][source]#

The data descriptor to which the term belongs.

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.Coordinate[source]#

Bases: PlainTermDataDescriptor

Native vertical grid coordinate type.

The coordinate types are all CF standard names (except where indicated) with the same definitions. See section 5.2 Native vertical grid properties.

Options for the native vertical grid Coordinate property:

  • none - (Not a standard name) There is no vertical dimension.

  • height - Height is the vertical distance above the earth’s surface.

  • geopotential_height - Geopotential height is the geopotential divided by the standard acceleration due to gravity.

  • air_pressure - Air pressure is the pressure that exists in the medium of air.

  • air_potential_temperature - Air potential temperature is the temperature a parcel of air would have if moved dry adiabatically to a standard pressure.

  • atmosphere_ln_pressure_coordinate - Parametric atmosphere natural log pressure coordinate.

  • atmosphere_sigma_coordinate - Parametric atmosphere sigma coordinate.

  • atmosphere_hybrid_sigma_pressure_coordinate - Parametric atmosphere hybrid sigma pressure coordinate.

  • atmosphere_hybrid_height_coordinate - Parametric atmosphere hybrid height coordinate.

  • atmosphere_sleve_coordinate - Parametric atmosphere smooth vertical level coordinate.

  • depth - Depth is the vertical distance below the earth’s surface.

  • sea_water_pressure - Sea water pressure is the pressure that exists in the medium of sea water.

  • sea_water_potential_temperature - Sea water potential temperature is the temperature a parcel of sea water would have if moved adiabatically to sea level pressure.

  • ocean_sigma_coordinate - Parametric ocean sigma coordinate.

  • ocean_s_coordinate - Parametric ocean s-coordinate.

  • ocean_s_coordinate_g1 - Parametric ocean s-coordinate, generic form 1.

  • ocean_s_coordinate_g2 - Parametric ocean s-coordinate, generic form 2.

  • ocean_sigma_z_coordinate - Parametric ocean sigma over z coordinate.

  • ocean_double_sigma_coordinate - Parametric ocean double sigma coordinate.

  • land_ice_sigma_coordinate - Land ice (glaciers, ice-caps and ice-sheets resting on bedrock and also includes ice-shelves) sigma coordinate.

  • z* - (Not a standard name) The z* coordinate of Adcroft and Campin (2004).

Show JSON schema
{
   "title": "Coordinate",
   "description": "Native vertical grid coordinate type.\n\nThe coordinate types are all CF standard names (except where indicated)\nwith the same definitions. See section 5.2 Native vertical grid properties.\n\nOptions for the native vertical grid Coordinate property:\n\n* **none** - (Not a standard name) There is no vertical dimension.\n* **height** - Height is the vertical distance above the earth's surface.\n* **geopotential_height** - Geopotential height is the geopotential divided by the standard acceleration due to gravity.\n* **air_pressure** - Air pressure is the pressure that exists in the medium of air.\n* **air_potential_temperature** - Air potential temperature is the temperature a parcel of air would have if moved dry adiabatically to a standard pressure.\n* **atmosphere_ln_pressure_coordinate** - Parametric atmosphere natural log pressure coordinate.\n* **atmosphere_sigma_coordinate** - Parametric atmosphere sigma coordinate.\n* **atmosphere_hybrid_sigma_pressure_coordinate** - Parametric atmosphere hybrid sigma pressure coordinate.\n* **atmosphere_hybrid_height_coordinate** - Parametric atmosphere hybrid height coordinate.\n* **atmosphere_sleve_coordinate** - Parametric atmosphere smooth vertical level coordinate.\n* **depth** - Depth is the vertical distance below the earth's surface.\n* **sea_water_pressure** - Sea water pressure is the pressure that exists in the medium of sea water.\n* **sea_water_potential_temperature** - Sea water potential temperature is the temperature a parcel of sea water would have if moved adiabatically to sea level pressure.\n* **ocean_sigma_coordinate** - Parametric ocean sigma coordinate.\n* **ocean_s_coordinate** - Parametric ocean s-coordinate.\n* **ocean_s_coordinate_g1** - Parametric ocean s-coordinate, generic form 1.\n* **ocean_s_coordinate_g2** - Parametric ocean s-coordinate, generic form 2.\n* **ocean_sigma_z_coordinate** - Parametric ocean sigma over z coordinate.\n* **ocean_double_sigma_coordinate** - Parametric ocean double sigma coordinate.\n* **land_ice_sigma_coordinate** - Land ice (glaciers, ice-caps and ice-sheets resting on bedrock and also includes ice-shelves) sigma coordinate.\n* **z*** - (Not a standard name) The z* coordinate of Adcroft and Campin (2004).",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "drs_name": {
         "title": "Drs Name",
         "type": "string"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "drs_name"
   ]
}

field description: str = ''[source]#

The description of the term.

field drs_name: str [Required][source]#
field id: str [Required][source]#

The identifier of the terms.

field type: str [Required][source]#

The data descriptor to which the term belongs.

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.CreationDate[source]#

Bases: PatternTermDataDescriptor

Date (more specifically timestamp) that the file was created

Examples: “2025-08-21T04:23:12Z”, “2024-04-11T14:03:10Z”

Note that the examples above assume a regex of d{4}-d{2}-d{2}Td{2}:d{2}:d{2}Z (this matches ISO 8601 timestamps in UTC). If you use a different regex, different examples would be needed.

Show JSON schema
{
   "title": "CreationDate",
   "description": "Date (more specifically timestamp) that the file was created\n\nExamples: \"2025-08-21T04:23:12Z\", \"2024-04-11T14:03:10Z\"\n\nNote that the examples above assume a `regex` of\n`\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z`\n(this matches ISO 8601 timestamps in UTC).\nIf you use a different regex, different examples would be needed.",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "regex": {
         "title": "Regex",
         "type": "string"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "regex"
   ]
}

field description: str = ''[source]#

The description of the term.

field id: str [Required][source]#

The identifier of the terms.

field regex: str [Required][source]#

The regular expression.

field type: str [Required][source]#

The data descriptor to which the term belongs.

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.DRSSpecs[source]#

Bases: PlainTermDataDescriptor

Data reference syntax (DRS) specification

Examples: “MIP-DRS7”

Identifier of the the data reference syntax used to name files, define directory trees, and uniquely identify datasets. This data descriptor is self-referential: for a given set of CVs (e.g. CMIP7 CVs), it can only have a single value.

In practice, this term was a nice idea, but the way things are architected at the moment, we can’t really exploit it. As background, the idea was that multiple projects could use the same DRS e.g. CMIP8 could use the same DRS as CMIP7 if it wanted. In practice, project_specs is currently defined per project by esgvoc so there is no way for one project to point at another project’s specs to specify the DRS. The way of using the same DRS would be to simply copy the project specs. I actually don’t think this is a bad thing (new projects spin up slowly so copying one file is not a big issue). It just means that this label points basically nowhere, there is no ‘DRS registry’ so people can say, “I have DRS MIP-DRS7, so I go here and look up exactly what that means, then off I go”. However, it does open up the possibility of such centralisation/re-use in future so while it’s a bit redundant now, having it adds only minor extra work and may be useful so I guess we just go with it.

Show JSON schema
{
   "title": "DRSSpecs",
   "description": "Data reference syntax (DRS) specification\n\nExamples: \"MIP-DRS7\"\n\nIdentifier of the the data reference syntax used to name files,\ndefine directory trees, and uniquely identify datasets.\nThis data descriptor is self-referential:\nfor a given set of CVs (e.g. CMIP7 CVs),\nit can only have a single value.\n\nIn practice, this term was a nice idea,\nbut the way things are architected at the moment,\nwe can't really exploit it.\nAs background, the idea was that multiple projects could use the same DRS\ne.g. CMIP8 could use the same DRS as CMIP7 if it wanted.\nIn practice, `project_specs` is currently defined per project by esgvoc\nso there is no way for one project to point at another project's specs\nto specify the DRS.\nThe way of using the same DRS would be to simply copy the project specs.\nI actually don't think this is a bad thing\n(new projects spin up slowly so copying one file is not a big issue).\nIt just means that this label points basically nowhere,\nthere is no 'DRS registry' so people can say,\n\"I have DRS MIP-DRS7, so I go here and look up exactly what that means,\nthen off I go\".\nHowever, it does open up the possibility of such centralisation/re-use in future\nso while it's a bit redundant now, having it adds only minor extra work\nand may be useful so I guess we just go with it.",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "drs_name": {
         "title": "Drs Name",
         "type": "string"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "drs_name"
   ]
}

field description: str = ''[source]#

The description of the term.

field drs_name: str [Required][source]#
field id: str [Required][source]#

The identifier of the terms.

field type: str [Required][source]#

The data descriptor to which the term belongs.

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.DataSpecsVersion[source]#

Bases: PlainTermDataDescriptor

Data specifications version number

Examples: “MIPDS7-2025p10p1”

The data specifications describe the overall set of data specifications used when writing the dataset. This version number captures exactly which set of data specifications are consistent (or intended to be consistent) with this dataset. The DRS values can’t contain ‘.’ so we use ‘p’ instead. To go from a DRS value back to a standard version, get everything after the hyphen (everything before the hyphen is a prefix) then replace “p” with “.”. Something like, drs_name.split(‘-‘)[-1].replace(‘p’, ‘.’). (At the moment, exactly what this means is still vague, particularly for CMIP7. When it solidifies, more details and examples will be added here.)

Show JSON schema
{
   "title": "DataSpecsVersion",
   "description": "Data specifications version number\n\nExamples: \"MIPDS7-2025p10p1\"\n\nThe data specifications describe the overall set of data specifications\nused when writing the dataset.\nThis version number captures exactly which set of data specifications\nare consistent (or intended to be consistent) with this dataset.\nThe DRS values can't contain '.' so we use 'p' instead.\nTo go from a DRS value back to a standard version,\nget everything after the hyphen (everything before the hyphen is a prefix)\nthen replace \"p\" with \".\".\nSomething like, `drs_name.split('-')[-1].replace('p', '.')`.\n(At the moment, exactly what this means is still vague, particularly for CMIP7.\nWhen it solidifies, more details and examples will be added here.)",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "drs_name": {
         "title": "Drs Name",
         "type": "string"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "drs_name"
   ]
}

field description: str = ''[source]#

The description of the term.

field drs_name: str [Required][source]#
field id: str [Required][source]#

The identifier of the terms.

field type: str [Required][source]#

The data descriptor to which the term belongs.

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.Date[source]#

Bases: PatternTermDataDescriptor

Show JSON schema
{
   "title": "Date",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "regex": {
         "title": "Regex",
         "type": "string"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "regex"
   ]
}

field description: str = ''[source]#

The description of the term.

field id: str [Required][source]#

The identifier of the terms.

field regex: str [Required][source]#

The regular expression.

field type: str [Required][source]#

The data descriptor to which the term belongs.

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.DirectoryDate[source]#

Bases: PatternTermDataDescriptor

Date included as part of data paths

Examples: “20240513”, “20230202”, “20250109”

In practice, this acts as a version ID for the dataset. For most CMIP projects, it is the only version ID. For some (e.g. input4MIPs), it is another (redundant) version ID on top of other versioning conventions used by the project.

More detail than you could ever want on why this only in the directory, and not a file attribute, can be found in WCRP-CMIP/CMIP7-CVs#172.

Show JSON schema
{
   "title": "DirectoryDate",
   "description": "Date included as part of data paths\n\nExamples: \"20240513\", \"20230202\", \"20250109\"\n\nIn practice, this acts as a version ID for the dataset.\nFor most CMIP projects, it is the only version ID.\nFor some (e.g. input4MIPs), it is another (redundant) version ID\non top of other versioning conventions used by the project.\n\nMore detail than you could ever want on why this only in the directory,\nand not a file attribute, can be found in\nhttps://github.com/WCRP-CMIP/CMIP7-CVs/issues/172.",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "regex": {
         "title": "Regex",
         "type": "string"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "regex"
   ]
}

field description: str = ''[source]#

The description of the term.

field id: str [Required][source]#

The identifier of the terms.

field regex: str [Required][source]#

The regular expression.

field type: str [Required][source]#

The data descriptor to which the term belongs.

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.EMDModelComponent[source]#

Bases: PlainTermDataDescriptor

Model component description (EMD v1.0 Section 3).

Properties that provide a description of individual model components.

Eight model components are defined that somewhat independently account for different sets of interactive processes: aerosol, atmosphere, atmospheric chemistry, land surface, land ice, ocean, ocean biogeochemistry, and sea ice.

Show JSON schema
{
   "title": "EMDModelComponent",
   "description": "Model component description (EMD v1.0 Section 3).\n\nProperties that provide a description of individual model components.\n\nEight model components are defined that somewhat independently account for different\nsets of interactive processes: aerosol, atmosphere, atmospheric chemistry, land surface,\nland ice, ocean, ocean biogeochemistry, and sea ice.",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "description": "A scientific overview of the model component. The description should summarise the key processes simulated by the model component.",
         "minLength": 1,
         "title": "Description",
         "type": "string"
      },
      "drs_name": {
         "title": "Drs Name",
         "type": "string"
      },
      "component": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "$ref": "#/$defs/ComponentType"
            }
         ],
         "description": "The type of the model component. Taken from 7.1 component CV.",
         "title": "Component"
      },
      "name": {
         "description": "The name of the model component.",
         "minLength": 1,
         "title": "Name",
         "type": "string"
      },
      "family": {
         "description": "The model component's 'family' name. Use 'none' to indicate that there is no such family.",
         "minLength": 1,
         "title": "Family",
         "type": "string"
      },
      "references": {
         "description": "One or more references to published work for the model component.",
         "items": {
            "anyOf": [
               {
                  "type": "string"
               },
               {
                  "$ref": "#/$defs/Reference"
               }
            ]
         },
         "minItems": 1,
         "title": "References",
         "type": "array"
      },
      "code_base": {
         "description": "A URL (preferably for a DOI) for the source code for the model component. Set to 'private' if not publicly available.",
         "minLength": 1,
         "title": "Code Base",
         "type": "string"
      },
      "embedded_in": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "$ref": "#/$defs/ComponentType"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "description": "The host model component (identified by its component property) in which this component is 'embedded'. Taken from 7.1 component CV. Omit when this component is coupled with other components.",
         "title": "Embedded In"
      },
      "coupled_with": {
         "anyOf": [
            {
               "items": {
                  "anyOf": [
                     {
                        "type": "string"
                     },
                     {
                        "$ref": "#/$defs/ComponentType"
                     }
                  ]
               },
               "type": "array"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "description": "The model components (identified by their component properties) with which this component is 'coupled'. Taken from 7.1 component CV. Omit when this component is embedded in another component.",
         "title": "Coupled With"
      },
      "horizontal_computational_grid": {
         "$ref": "#/$defs/HorizontalComputationalGrid",
         "description": "A standardised description of the model component's horizontal computational grid."
      },
      "vertical_computational_grid": {
         "$ref": "#/$defs/VerticalComputationalGrid",
         "description": "A standardised description of the model component's vertical computational grid."
      }
   },
   "$defs": {
      "Arrangement": {
         "additionalProperties": true,
         "description": "Horizontal grid arrangement (EMD v1.0 Section 7.3).\n\nOptions: arakawa_a, arakawa_b, arakawa_c, arakawa_d, arakawa_e\n\nA grid arrangement describes the relative locations of mass- and velocity-related quantities\non the computed grid (for instance Collins et al. (2013), and for unstructured grids\nThuburn et al. (2009)).",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "description": {
               "default": "",
               "title": "Description",
               "type": "string"
            },
            "drs_name": {
               "title": "Drs Name",
               "type": "string"
            }
         },
         "required": [
            "id",
            "type",
            "drs_name"
         ],
         "title": "Arrangement",
         "type": "object"
      },
      "CellVariableType": {
         "additionalProperties": true,
         "description": "Cell variable type (EMD v1.0 Section 7.4).\n\nOptions: mass, x_velocity, y_velocity, velocity\n\nTypes of physical variables that are carried at, or representative of conditions at,\ncells of a horizontal subgrid.",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "description": {
               "default": "",
               "title": "Description",
               "type": "string"
            },
            "drs_name": {
               "title": "Drs Name",
               "type": "string"
            }
         },
         "required": [
            "id",
            "type",
            "drs_name"
         ],
         "title": "CellVariableType",
         "type": "object"
      },
      "ComponentType": {
         "additionalProperties": true,
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "description": {
               "default": "",
               "title": "Description",
               "type": "string"
            },
            "drs_name": {
               "title": "Drs Name",
               "type": "string"
            }
         },
         "required": [
            "id",
            "type",
            "drs_name"
         ],
         "title": "ComponentType",
         "type": "object"
      },
      "Coordinate": {
         "additionalProperties": true,
         "description": "Native vertical grid coordinate type.\n\nThe coordinate types are all CF standard names (except where indicated)\nwith the same definitions. See section 5.2 Native vertical grid properties.\n\nOptions for the native vertical grid Coordinate property:\n\n* **none** - (Not a standard name) There is no vertical dimension.\n* **height** - Height is the vertical distance above the earth's surface.\n* **geopotential_height** - Geopotential height is the geopotential divided by the standard acceleration due to gravity.\n* **air_pressure** - Air pressure is the pressure that exists in the medium of air.\n* **air_potential_temperature** - Air potential temperature is the temperature a parcel of air would have if moved dry adiabatically to a standard pressure.\n* **atmosphere_ln_pressure_coordinate** - Parametric atmosphere natural log pressure coordinate.\n* **atmosphere_sigma_coordinate** - Parametric atmosphere sigma coordinate.\n* **atmosphere_hybrid_sigma_pressure_coordinate** - Parametric atmosphere hybrid sigma pressure coordinate.\n* **atmosphere_hybrid_height_coordinate** - Parametric atmosphere hybrid height coordinate.\n* **atmosphere_sleve_coordinate** - Parametric atmosphere smooth vertical level coordinate.\n* **depth** - Depth is the vertical distance below the earth's surface.\n* **sea_water_pressure** - Sea water pressure is the pressure that exists in the medium of sea water.\n* **sea_water_potential_temperature** - Sea water potential temperature is the temperature a parcel of sea water would have if moved adiabatically to sea level pressure.\n* **ocean_sigma_coordinate** - Parametric ocean sigma coordinate.\n* **ocean_s_coordinate** - Parametric ocean s-coordinate.\n* **ocean_s_coordinate_g1** - Parametric ocean s-coordinate, generic form 1.\n* **ocean_s_coordinate_g2** - Parametric ocean s-coordinate, generic form 2.\n* **ocean_sigma_z_coordinate** - Parametric ocean sigma over z coordinate.\n* **ocean_double_sigma_coordinate** - Parametric ocean double sigma coordinate.\n* **land_ice_sigma_coordinate** - Land ice (glaciers, ice-caps and ice-sheets resting on bedrock and also includes ice-shelves) sigma coordinate.\n* **z*** - (Not a standard name) The z* coordinate of Adcroft and Campin (2004).",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "description": {
               "default": "",
               "title": "Description",
               "type": "string"
            },
            "drs_name": {
               "title": "Drs Name",
               "type": "string"
            }
         },
         "required": [
            "id",
            "type",
            "drs_name"
         ],
         "title": "Coordinate",
         "type": "object"
      },
      "GridMapping": {
         "additionalProperties": true,
         "description": "Grid mapping (EMD v1.0 Section 7.7).\n\nOptions: latitude_longitude, lambert_conformal_conic, etc.\n\nThe name of the coordinate reference system of the horizontal coordinates.",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "description": {
               "default": "",
               "title": "Description",
               "type": "string"
            },
            "drs_name": {
               "title": "Drs Name",
               "type": "string"
            }
         },
         "required": [
            "id",
            "type",
            "drs_name"
         ],
         "title": "GridMapping",
         "type": "object"
      },
      "GridType": {
         "additionalProperties": true,
         "description": "Horizontal grid type (EMD v1.0 Section 7.6).\n\nOptions: regular_latitude_longitude, regular_gaussian, reduced_gaussian, tripolar, etc.\n\nA grid type describes the method for distributing grid points over the sphere.",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "description": {
               "default": "",
               "title": "Description",
               "type": "string"
            },
            "drs_name": {
               "title": "Drs Name",
               "type": "string"
            }
         },
         "required": [
            "id",
            "type",
            "drs_name"
         ],
         "title": "GridType",
         "type": "object"
      },
      "HorizontalComputationalGrid": {
         "additionalProperties": true,
         "description": "Horizontal computational grid description (EMD v1.0 Section 4.1.1).\n\nA model component's horizontal computational grid is composed of one or more\nhorizontal subgrids, on which different sets of variables are calculated.\nWhen the computational grid relies on more than one subgrid, it is referred to\nas a \"staggered\" grid. For most staggered grids, the velocity-related variables\nare calculated on a subgrid offset from the mass-related variables (e.g. pressure,\ntemperature, water vapour and other mass constituents).",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "description": {
               "default": "",
               "title": "Description",
               "type": "string"
            },
            "arrangement": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "$ref": "#/$defs/Arrangement"
                  }
               ],
               "description": "A characterisation of the grid staggering defining the relative positions of computed mass-related and velocity-related variables. Taken from 7.3 arrangement CV. Options: 'arakawa_a', 'arakawa_b', 'arakawa_c', 'arakawa_d', 'arakawa_e'. E.g. 'arakawa_c'",
               "title": "Arrangement"
            },
            "horizontal_subgrids": {
               "description": "All of the subgrids, of which there must be at least one, used to construct the horizontal computational grid. Each subgrid is associated with one or more variable types (mass-related, velocity-related, etc.), consistent with the arrangement property.",
               "items": {
                  "$ref": "#/$defs/HorizontalSubgrid"
               },
               "minItems": 1,
               "title": "Horizontal Subgrids",
               "type": "array"
            }
         },
         "required": [
            "id",
            "type",
            "arrangement",
            "horizontal_subgrids"
         ],
         "title": "HorizontalComputationalGrid",
         "type": "object"
      },
      "HorizontalGridCells": {
         "additionalProperties": true,
         "description": "Horizontal grid cells description (EMD v1.0 Section 4.1.3).\n\nHorizontal grid cells are described by a coordinate system, cell resolutions,\nas well as a number of other grid features. The description does not include\nany information on whether or not the grid cells form part of a model component's\ncomputational grid, and so may be used to describe an arbitrary output grid.",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "description": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "A description of the grid. A description is only required if there is information that is not covered by any of the other properties. Omit when not required.",
               "title": "Description"
            },
            "drs_name": {
               "title": "Drs Name",
               "type": "string"
            },
            "region": {
               "anyOf": [
                  {
                     "$ref": "#/$defs/Region"
                  },
                  {
                     "type": "string"
                  }
               ],
               "description": "The geographical region, or regions, over which the component is simulated. A region is a contiguous part of the Earth's surface, and may include areas for which no calculations are made (such as ocean areas for a land surface component). Taken from 7.5 region CV. E.g. 'global', 'antarctica', 'greenland', 'limited_area'",
               "title": "Region"
            },
            "grid_type": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "$ref": "#/$defs/GridType"
                  }
               ],
               "description": "The horizontal grid type, i.e. the method of distributing grid cells over the region. Taken from 7.6 grid_type CV. E.g. 'regular_latitude_longitude', 'tripolar'",
               "title": "Grid Type"
            },
            "grid_mapping": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "$ref": "#/$defs/GridMapping"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The name of the coordinate reference system of the horizontal coordinates. Taken from 7.7 grid_mapping CV. E.g. 'latitude_longitude', 'lambert_conformal_conic'. Can be None or empty for certain grid types (e.g., tripolar grids).",
               "title": "Grid Mapping"
            },
            "temporal_refinement": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "$ref": "#/$defs/TemporalRefinement"
                  }
               ],
               "description": "The grid temporal refinement, indicating how the distribution of grid cells varies with time. Taken from 7.8 temporal_refinement CV. E.g. 'static'",
               "title": "Temporal Refinement"
            },
            "spatial_refinement": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The grid spatial refinement, indicating how the distribution of grid cells varies with space. NEW in EMD v1.0. Omit when not applicable.",
               "title": "Spatial Refinement"
            },
            "x_resolution": {
               "anyOf": [
                  {
                     "exclusiveMinimum": 0,
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "\nThe size of grid cells in the X direction.\n\nCells for which no calculations are made are included (such as ocean areas\nfor a land surface component).\n\nThe X direction for a grid defined by spherical polar coordinates is longitude.\n\nThe value's physical units are given by the horizontal_units property.\n\nReport only when cell sizes are identical or else reasonably uniform (in their given units).\nWhen cells sizes in the X direction are not identical, a representative value should be\nprovided and this fact noted in the description property.\nIf the cell sizes vary by more than 25%, set this to None.\n",
               "title": "X Resolution"
            },
            "y_resolution": {
               "anyOf": [
                  {
                     "exclusiveMinimum": 0,
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "\nThe size of grid cells in the Y direction.\n\nCells for which no calculations are made are included (such as ocean areas\nfor a land surface component).\n\nThe Y direction for a grid defined by spherical polar coordinates is latitude.\n\nThe value's physical units are given by the horizontal_units property.\n\nReport only when cell sizes are identical or else reasonably uniform (in their given units).\nWhen cells sizes in the Y direction are not identical, a representative value should be\nprovided and this fact noted in the description property.\nIf the cell sizes vary by more than 25%, set this to None.\n",
               "title": "Y Resolution"
            },
            "horizontal_units": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "\nThe physical units of the x_resolution and y_resolution property values.\n\nIf x_resolution and y_resolution are None, set this to None.\n",
               "title": "Horizontal Units"
            },
            "southernmost_latitude": {
               "anyOf": [
                  {
                     "maximum": 90.0,
                     "minimum": -90.0,
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "\nThe southernmost grid cell latitude, in degrees north.\n\nCells for which no calculations are made are included.\nThe southernmost latitude may be shared by multiple cells.\n\nIf the southernmost latitude is not known (e.g. the grid is adaptive), use None.\n",
               "title": "Southernmost Latitude"
            },
            "westernmost_longitude": {
               "anyOf": [
                  {
                     "maximum": 360.0,
                     "minimum": 0.0,
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "\nThe westernmost grid cell longitude, in degrees east, of the southernmost grid cell(s).\n\nCells for which no calculations are made are included.\nThe westernmost longitude is the smallest longitude value of the cells\nthat share the latitude given by the southernmost_latitude.\n\nIf the westernmost longitude is not known (e.g. the grid is adaptive), use None.\n",
               "title": "Westernmost Longitude"
            },
            "n_cells": {
               "anyOf": [
                  {
                     "minimum": 1,
                     "type": "integer"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "\nThe total number of cells in the horizontal grid.\n\nIf the total number of grid cells is not constant, set to None.\n",
               "title": "N Cells"
            },
            "truncation_method": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "$ref": "#/$defs/TruncationMethod"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The method for truncating the spherical harmonic representation of a spectral model when reporting on this grid. If the grid is not used for reporting spherical harmonic representations, set to None.",
               "title": "Truncation Method"
            },
            "truncation_number": {
               "anyOf": [
                  {
                     "type": "integer"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The zonal (east-west) wave number at which a spectral model is truncated when reporting on this grid. If the grid is not used for reporting spectral models, set to None.",
               "title": "Truncation Number"
            },
            "resolution_range_km": {
               "anyOf": [
                  {
                     "items": {
                        "type": "number"
                     },
                     "maxItems": 2,
                     "minItems": 2,
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "\nThe minimum and maximum resolution (in km) of cells of the horizontal grid.\n\nShould be calculated according to the algorithm implemented by\nhttps://github.com/PCMDI/nominal_resolution/blob/master/lib/api.py\nYou need to take the min and max of the array that is returned\nwhen using the returnMaxDistance of the mean_resolution function.\n",
               "title": "Resolution Range Km"
            }
         },
         "required": [
            "id",
            "type",
            "drs_name",
            "region",
            "grid_type",
            "temporal_refinement"
         ],
         "title": "HorizontalGridCells",
         "type": "object"
      },
      "HorizontalSubgrid": {
         "additionalProperties": true,
         "description": "Horizontal subgrid description (EMD v1.0 Section 4.1.2).\n\nA horizontal subgrid describes the grid cells at one of the stagger positions\nof a horizontal computational grid. Often the locations of mass-related and\nvelocity-related variables differ, so more than one horizontal subgrid will\nbe defined as part of a horizontal computational grid.",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "description": {
               "default": "",
               "title": "Description",
               "type": "string"
            },
            "drs_name": {
               "title": "Drs Name",
               "type": "string"
            },
            "cell_variable_type": {
               "description": "The types of physical variables that are carried at, or representative of conditions at, the cells described by this horizontal subgrid. Taken from 7.4 cell_variable_type CV. Options: 'mass', 'x_velocity', 'y_velocity', 'velocity'. E.g. ['mass'], ['x_velocity'], ['mass', 'x_velocity', 'y_velocity'], ['mass', 'velocity']. Can be an empty list in certain cases.",
               "items": {
                  "anyOf": [
                     {
                        "type": "string"
                     },
                     {
                        "$ref": "#/$defs/CellVariableType"
                     }
                  ]
               },
               "title": "Cell Variable Type",
               "type": "array"
            },
            "horizontal_grid_cells": {
               "$ref": "#/$defs/HorizontalGridCells",
               "description": "A description of the characteristics and location of the grid cells of this subgrid."
            }
         },
         "required": [
            "id",
            "type",
            "drs_name",
            "horizontal_grid_cells"
         ],
         "title": "HorizontalSubgrid",
         "type": "object"
      },
      "Reference": {
         "additionalProperties": true,
         "description": "Academic reference to published work for the top-level model or model components.\n\nAn academic reference to published work for the top-level model or one of its model\ncomponents is defined by the following properties:\n\n* **Citation** - A human-readable citation for the work.\n  E.g. Smith, R. S., Mathiot, P., Siahaan, A., Lee, V., Cornford, S. L., Gregory, J. M.,\n  et al. (2021). Coupling the U.K. Earth System model to dynamic models of the Greenland\n  and Antarctic ice sheets. Journal of Advances in Modeling Earth Systems, 13,\n  e2021MS002520. https://doi.org/10.1029/2021MS002520, 2023\n\n* **DOI** - The persistent identifier (DOI) used to identify the work.\n  A DOI is required for all references. A reference that does not already have a DOI\n  (as could be the case for some technical reports, for instance) must be given one\n  (e.g. with a service like Zenodo).\n  E.g. https://doi.org/10.1029/2021MS002520",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "description": {
               "default": "",
               "title": "Description",
               "type": "string"
            },
            "drs_name": {
               "title": "Drs Name",
               "type": "string"
            },
            "citation": {
               "description": "A human-readable citation for the work.",
               "minLength": 1,
               "title": "Citation",
               "type": "string"
            },
            "doi": {
               "description": "The persistent identifier (DOI) used to identify the work. Must be a valid DOI URL.",
               "minLength": 1,
               "title": "Doi",
               "type": "string"
            }
         },
         "required": [
            "id",
            "type",
            "drs_name",
            "citation",
            "doi"
         ],
         "title": "Reference",
         "type": "object"
      },
      "Region": {
         "additionalProperties": true,
         "description": "Region associated with the dataset\n\nExamples: \"glb\", \"30s-90s\", \"grl\"\n\nIn other words, the domain over which the dataset is provided.\nThis is intended as a rough categorisation only\nand is not precisely defined.",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "description": {
               "default": "",
               "title": "Description",
               "type": "string"
            },
            "drs_name": {
               "title": "Drs Name",
               "type": "string"
            },
            "cf_standard_region": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "title": "Cf Standard Region"
            },
            "iso_region": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "title": "Iso Region"
            }
         },
         "required": [
            "id",
            "type",
            "drs_name",
            "cf_standard_region",
            "iso_region"
         ],
         "title": "Region",
         "type": "object"
      },
      "TemporalRefinement": {
         "additionalProperties": true,
         "description": "Temporal refinement (EMD v1.0 Section 7.8).\n\nOptions: static, etc.\n\nThe grid temporal refinement, indicating how the distribution of grid cells varies with time.",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "description": {
               "default": "",
               "title": "Description",
               "type": "string"
            },
            "drs_name": {
               "title": "Drs Name",
               "type": "string"
            }
         },
         "required": [
            "id",
            "type",
            "drs_name"
         ],
         "title": "TemporalRefinement",
         "type": "object"
      },
      "TruncationMethod": {
         "additionalProperties": true,
         "description": "Truncation method (EMD v1.0 Section 7.12).\n\nThe method for truncating the spherical harmonic representation of a spectral model.",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "description": {
               "default": "",
               "title": "Description",
               "type": "string"
            },
            "drs_name": {
               "title": "Drs Name",
               "type": "string"
            }
         },
         "required": [
            "id",
            "type",
            "drs_name"
         ],
         "title": "TruncationMethod",
         "type": "object"
      },
      "VerticalComputationalGrid": {
         "additionalProperties": true,
         "description": "Vertical computational grid description (EMD v1.0 Section 4.2).\n\nThe model component's vertical computational grid is described by a subset of the following properties.",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "description": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "A description of the vertical grid. A description is only required if there is information that is not covered by any of the other properties. Omit when not required.",
               "title": "Description"
            },
            "vertical_coordinate": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "$ref": "#/$defs/Coordinate"
                  }
               ],
               "description": "The coordinate type of the vertical grid. Taken from 7.11 vertical_coordinate CV. If there is no vertical grid, then the value 'none' must be selected.",
               "title": "Vertical Coordinate"
            },
            "n_z": {
               "anyOf": [
                  {
                     "minimum": 1,
                     "type": "integer"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The number of layers (i.e. grid cells) in the Z direction. Omit when not applicable or not constant. If the number of layers varies in time or across the horizontal grid, then the n_z_range property may be used instead.",
               "title": "N Z"
            },
            "n_z_range": {
               "anyOf": [
                  {
                     "items": {
                        "type": "integer"
                     },
                     "maxItems": 2,
                     "minItems": 2,
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The minimum and maximum number of layers for vertical grids with a time- or space-varying number of layers. Omit if the n_z property has been set.",
               "title": "N Z Range"
            },
            "bottom_layer_thickness": {
               "anyOf": [
                  {
                     "exclusiveMinimum": 0,
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The thickness of the bottom model layer (i.e. the layer closest to the centre of the Earth). The value should be reported as a dimensional (as opposed to parametric) quantity. All measurements are in metres (EMD v1.0).",
               "title": "Bottom Layer Thickness"
            },
            "top_layer_thickness": {
               "anyOf": [
                  {
                     "exclusiveMinimum": 0,
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The thickness of the top model layer (i.e. the layer furthest away from the centre of the Earth). The value should be reported as a dimensional (as opposed to parametric) quantity. All measurements are in metres (EMD v1.0).",
               "title": "Top Layer Thickness"
            },
            "top_of_model": {
               "anyOf": [
                  {
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The upper boundary of the top model layer (i.e. the upper boundary of the layer that is furthest away from the centre of the Earth). The value should be relative to the lower boundary of the bottom layer of the model, or an appropriate datum (such as mean sea level). All measurements are in metres (EMD v1.0).",
               "title": "Top Of Model"
            }
         },
         "required": [
            "id",
            "type",
            "vertical_coordinate"
         ],
         "title": "VerticalComputationalGrid",
         "type": "object"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "description",
      "drs_name",
      "component",
      "name",
      "family",
      "references",
      "code_base",
      "horizontal_computational_grid",
      "vertical_computational_grid"
   ]
}

Validators:
  • validate_code_base_format » code_base

  • validate_coupling_exclusivity » coupled_with

  • validate_embedding_exclusivity » embedded_in

  • validate_non_empty_strings » code_base

  • validate_non_empty_strings » component

  • validate_non_empty_strings » description

  • validate_non_empty_strings » family

  • validate_non_empty_strings » name

field code_base: str [Required][source]#

A URL (preferably for a DOI) for the source code for the model component. Set to ‘private’ if not publicly available.

Constraints:
  • min_length = 1

Validated by:
  • validate_code_base_format

  • validate_non_empty_strings

field component: str | ComponentType [Required][source]#

The type of the model component. Taken from 7.1 component CV.

Validated by:
  • validate_non_empty_strings

field coupled_with: List[str | ComponentType] | None = None[source]#

The model components (identified by their component properties) with which this component is ‘coupled’. Taken from 7.1 component CV. Omit when this component is embedded in another component.

Validated by:
  • validate_coupling_exclusivity

field description: str [Required][source]#

The description of the term.

A scientific overview of the model component. The description should summarise the key processes simulated by the model component.

Constraints:
  • min_length = 1

Validated by:
  • validate_non_empty_strings

field drs_name: str [Required][source]#
field embedded_in: str | ComponentType | None = None[source]#

The host model component (identified by its component property) in which this component is ‘embedded’. Taken from 7.1 component CV. Omit when this component is coupled with other components.

Validated by:
  • validate_embedding_exclusivity

field family: str [Required][source]#

The model component’s ‘family’ name. Use ‘none’ to indicate that there is no such family.

Constraints:
  • min_length = 1

Validated by:
  • validate_non_empty_strings

field horizontal_computational_grid: HorizontalComputationalGrid [Required][source]#

A standardised description of the model component’s horizontal computational grid.

field id: str [Required][source]#

The identifier of the terms.

field name: str [Required][source]#

The name of the model component.

Constraints:
  • min_length = 1

Validated by:
  • validate_non_empty_strings

field references: List[str | Reference] [Required][source]#

One or more references to published work for the model component.

Constraints:
  • min_length = 1

field type: str [Required][source]#

The data descriptor to which the term belongs.

field vertical_computational_grid: VerticalComputationalGrid [Required][source]#

A standardised description of the model component’s vertical computational grid.

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

validator validate_code_base_format  »  code_base[source]#

Validate code_base is either ‘private’ or a URL.

validator validate_coupling_exclusivity  »  coupled_with[source]#

Validate that a component cannot be both embedded and coupled.

validator validate_embedding_exclusivity  »  embedded_in[source]#

Validate that a component cannot be both embedded and coupled.

validator validate_non_empty_strings  »  component, family, name, code_base, description[source]#

Validate that string fields are not empty.

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.EMDResolution[source]#

Bases: PlainTermDataDescriptor

The nominal resolution (in km) characterises the resolution of a model’s native horizontal grid.

See section 5.1 Native horizontal grid properties. Options for the native horizontal grid nominal resolution property are defined in the following table as a function of the value of the mean resolution km property:

Mean resolution R

Nominal resolution

0.036 ≤ R < 0.072

0.05 km

0.072 ≤ R < 0.16

0.1 km

0.16 ≤ R < 0.36

0.25 km

0.36 ≤ R < 0.72

0.5 km

0.72 ≤ R < 1.6

1 km

1.6 ≤ R < 3.6

2.5 km

3.6 ≤ R < 7.2

5 km

7.2 ≤ R < 16

10 km

16 ≤ R < 36

25 km

36 ≤ R < 72

50 km

72 ≤ R < 160

100 km

160 ≤ R < 360

250 km

360 ≤ R < 720

500 km

720 ≤ R < 1600

1000 km

1600 ≤ R < 3600

2500 km

3600 ≤ R < 7200

5000 km

7200 ≤ R < 16000

10000 km

Show JSON schema
{
   "title": "EMDResolution",
   "description": "The nominal resolution (in km) characterises the resolution of a model's native horizontal grid.\n\nSee section 5.1 Native horizontal grid properties.\nOptions for the native horizontal grid nominal resolution property are defined\nin the following table as a function of the value of the mean resolution km property:\n\n==================== ====================\nMean resolution R    Nominal resolution\n==================== ====================\n0.036 \u2264 R < 0.072    0.05 km\n0.072 \u2264 R < 0.16     0.1 km\n0.16 \u2264 R < 0.36      0.25 km\n0.36 \u2264 R < 0.72      0.5 km\n0.72 \u2264 R < 1.6       1 km\n1.6 \u2264 R < 3.6        2.5 km\n3.6 \u2264 R < 7.2        5 km\n7.2 \u2264 R < 16         10 km\n16 \u2264 R < 36          25 km\n36 \u2264 R < 72          50 km\n72 \u2264 R < 160         100 km\n160 \u2264 R < 360        250 km\n360 \u2264 R < 720        500 km\n720 \u2264 R < 1600       1000 km\n1600 \u2264 R < 3600      2500 km\n3600 \u2264 R < 7200      5000 km\n7200 \u2264 R < 16000     10000 km\n==================== ====================",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "drs_name": {
         "title": "Drs Name",
         "type": "string"
      },
      "mean_resolution": {
         "title": "Mean Resolution",
         "type": "string"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "drs_name",
      "mean_resolution"
   ]
}

field description: str = ''[source]#

The description of the term.

field drs_name: str [Required][source]#
field id: str [Required][source]#

The identifier of the terms.

field mean_resolution: str [Required][source]#
field type: str [Required][source]#

The data descriptor to which the term belongs.

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.ForcingIndex[source]#

Bases: PatternTermDataDescriptor

Label that identifies the forcing variant used to produce a dataset

Examples: “f1”, “f2”, “f23”

This label can be used, for example, to distinguish between two historical simulations, one forced with the recommended forcing data sets and another forced by a different dataset, which might yield information about how forcing uncertainty affects the simulation. The value has no intrinsic meaning within the CVs. However, in other external sources (to be confirmed which) the meaning of this forcing label for a given simulation can be looked up.

Show JSON schema
{
   "title": "ForcingIndex",
   "description": "Label that identifies the forcing variant used to produce a dataset\n\nExamples: \"f1\", \"f2\", \"f23\"\n\nThis label can be used, for example, to distinguish between two historical simulations,\none forced with the recommended forcing data sets\nand another forced by a different dataset,\nwhich might yield information about how forcing uncertainty affects the simulation.\nThe value has no intrinsic meaning within the CVs.\nHowever, in other external sources (to be confirmed which)\nthe meaning of this forcing label for a given simulation can be looked up.",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "regex": {
         "title": "Regex",
         "type": "string"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "regex"
   ]
}

field description: str = ''[source]#

The description of the term.

field id: str [Required][source]#

The identifier of the terms.

field regex: str [Required][source]#

The regular expression.

field type: str [Required][source]#

The data descriptor to which the term belongs.

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.Frequency[source]#

Bases: PlainTermDataDescriptor

Reporting/temporal sampling interval used when creating the dataset

Examples: “mon”, “day”, “3hr”, “monC”

This is a bit of a trickier concept than it first appears. For time average data, it is effectively the size of each time cell (e.g. if each time point is the average of a month’s worth of data, then the data is assigned the term “mon”). For time point data, it is the time interval between each reported point (e.g. if the data is reported at midday each day, then the data is assigned the term “day”, although in practice the size of each time cell works in this case too).

This can usually be validated against the actual data in the file, but it can be complicated with some calendars (e.g. the Julian-Gregorian calendar which has 15 missing days in 1582), reporting intervals (e.g. “mon”, which changes length at each interval) and when climatologies are involved (as identifying these follows special rules covered by the CF conventions).

Show JSON schema
{
   "title": "Frequency",
   "description": "Reporting/temporal sampling interval used when creating the dataset\n\nExamples: \"mon\", \"day\", \"3hr\", \"monC\"\n\nThis is a bit of a trickier concept than it first appears.\nFor time average data, it is effectively the size of each time cell\n(e.g. if each time point is the average of a month's worth of data,\nthen the data is assigned the term \"mon\").\nFor time point data, it is the time interval between each reported point\n(e.g. if the data is reported at midday each day,\nthen the data is assigned the term \"day\",\nalthough in practice the size of each time cell works in this case too).\n\nThis can usually be validated against the actual data in the file,\nbut it can be complicated with some calendars\n(e.g. the Julian-Gregorian calendar which has 15 missing days in 1582),\nreporting intervals (e.g. \"mon\", which changes length at each interval)\nand when climatologies are involved\n(as identifying these follows special rules covered by the CF conventions).",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "drs_name": {
         "title": "Drs Name",
         "type": "string"
      },
      "interval": {
         "anyOf": [
            {
               "type": "number"
            },
            {
               "type": "null"
            }
         ],
         "title": "Interval"
      },
      "units": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "title": "Units"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "drs_name",
      "interval",
      "units"
   ]
}

field description: str = ''[source]#

The description of the term.

field drs_name: str [Required][source]#
field id: str [Required][source]#

The identifier of the terms.

field interval: float | None [Required][source]#

Size of the interval

See self.units for units.

If None, then the interval for this frequency label is undefined, either because it does not exist (e.g. the label for data that does not have a time dimension) or because the label does not uniquely define the interval (e.g. sub-hour labels).

field type: str [Required][source]#

The data descriptor to which the term belongs.

field units: str | None [Required][source]#

Units of the interval

If None, then the units for this frequency are not defined because it does not exist (e.g. the label for data that does not have a time dimension).

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.FurtherInfoUrl[source]#

Bases: PatternTermDataDescriptor

Show JSON schema
{
   "title": "FurtherInfoUrl",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "regex": {
         "title": "Regex",
         "type": "string"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "regex"
   ]
}

field description: str = ''[source]#

The description of the term.

field id: str [Required][source]#

The identifier of the terms.

field regex: str [Required][source]#

The regular expression.

field type: str [Required][source]#

The data descriptor to which the term belongs.

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.Grid[source]#

Bases: PlainTermDataDescriptor

Grid (horizontal) on which the data is reported

Examples: “g1”, “g2”, “g33”

The value has no intrinsic meaning within the CVs. However, the other attributes of this model provide information about the grid and in other external sources (to be confirmed which) further resources can be found e.g. cell areas.

Grids with the same id (also referred to as ‘grid label’) are identical (details on how we check identical are to come, for discussion, see WCRP-CMIP/CMIP7-CVs#202) and can be used by more than one model (also referred to as ‘source’ in CMIP language). Grids with different labels are different.

Show JSON schema
{
   "title": "Grid",
   "description": "Grid (horizontal) on which the data is reported\n\nExamples: \"g1\", \"g2\", \"g33\"\n\nThe value has no intrinsic meaning within the CVs.\nHowever, the other attributes of this model\nprovide information about the grid\nand in other external sources (to be confirmed which)\nfurther resources can be found e.g. cell areas.\n\nGrids with the same id (also referred to as 'grid label')\nare identical (details on how we check identical are to come, for discussion,\nsee https://github.com/WCRP-CMIP/CMIP7-CVs/issues/202)\nand can be used by more than one model\n(also referred to as 'source' in CMIP language).\nGrids with different labels are different.",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "drs_name": {
         "title": "Drs Name",
         "type": "string"
      },
      "region": {
         "anyOf": [
            {
               "$ref": "#/$defs/Region"
            },
            {
               "type": "string"
            }
         ],
         "title": "Region"
      }
   },
   "$defs": {
      "Region": {
         "additionalProperties": true,
         "description": "Region associated with the dataset\n\nExamples: \"glb\", \"30s-90s\", \"grl\"\n\nIn other words, the domain over which the dataset is provided.\nThis is intended as a rough categorisation only\nand is not precisely defined.",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "description": {
               "default": "",
               "title": "Description",
               "type": "string"
            },
            "drs_name": {
               "title": "Drs Name",
               "type": "string"
            },
            "cf_standard_region": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "title": "Cf Standard Region"
            },
            "iso_region": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "title": "Iso Region"
            }
         },
         "required": [
            "id",
            "type",
            "drs_name",
            "cf_standard_region",
            "iso_region"
         ],
         "title": "Region",
         "type": "object"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "drs_name",
      "region"
   ]
}

field description: str = ''[source]#

The description of the term.

field drs_name: str [Required][source]#
field id: str [Required][source]#

The identifier of the terms.

field region: Region | str [Required][source]#

Region represented by this grid

field type: str [Required][source]#

The data descriptor to which the term belongs.

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.GridMapping[source]#

Bases: PlainTermDataDescriptor

Grid mapping (EMD v1.0 Section 7.7).

Options: latitude_longitude, lambert_conformal_conic, etc.

The name of the coordinate reference system of the horizontal coordinates.

Show JSON schema
{
   "title": "GridMapping",
   "description": "Grid mapping (EMD v1.0 Section 7.7).\n\nOptions: latitude_longitude, lambert_conformal_conic, etc.\n\nThe name of the coordinate reference system of the horizontal coordinates.",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "drs_name": {
         "title": "Drs Name",
         "type": "string"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "drs_name"
   ]
}

field description: str = ''[source]#

The description of the term.

field drs_name: str [Required][source]#
field id: str [Required][source]#

The identifier of the terms.

field type: str [Required][source]#

The data descriptor to which the term belongs.

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.GridRegion[source]#

Bases: PlainTermDataDescriptor

Horizontal grid region (EMD v1.0 Section 7.5).

Options: global, antarctica, greenland, limited_area, 30S-90S, etc.

A region is a contiguous part of the Earth’s surface which spans the horizontal grid cells.

Show JSON schema
{
   "title": "GridRegion",
   "description": "Horizontal grid region (EMD v1.0 Section 7.5).\n\nOptions: global, antarctica, greenland, limited_area, 30S-90S, etc.\n\nA region is a contiguous part of the Earth's surface which spans the horizontal grid cells.",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "drs_name": {
         "title": "Drs Name",
         "type": "string"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "drs_name"
   ]
}

field description: str = ''[source]#

The description of the term.

field drs_name: str [Required][source]#
field id: str [Required][source]#

The identifier of the terms.

field type: str [Required][source]#

The data descriptor to which the term belongs.

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.GridType[source]#

Bases: PlainTermDataDescriptor

Horizontal grid type (EMD v1.0 Section 7.6).

Options: regular_latitude_longitude, regular_gaussian, reduced_gaussian, tripolar, etc.

A grid type describes the method for distributing grid points over the sphere.

Show JSON schema
{
   "title": "GridType",
   "description": "Horizontal grid type (EMD v1.0 Section 7.6).\n\nOptions: regular_latitude_longitude, regular_gaussian, reduced_gaussian, tripolar, etc.\n\nA grid type describes the method for distributing grid points over the sphere.",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "drs_name": {
         "title": "Drs Name",
         "type": "string"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "drs_name"
   ]
}

field description: str = ''[source]#

The description of the term.

field drs_name: str [Required][source]#
field id: str [Required][source]#

The identifier of the terms.

field type: str [Required][source]#

The data descriptor to which the term belongs.

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.HorizontalComputationalGrid[source]#

Bases: DataDescriptor

Horizontal computational grid description (EMD v1.0 Section 4.1.1).

A model component’s horizontal computational grid is composed of one or more horizontal subgrids, on which different sets of variables are calculated. When the computational grid relies on more than one subgrid, it is referred to as a “staggered” grid. For most staggered grids, the velocity-related variables are calculated on a subgrid offset from the mass-related variables (e.g. pressure, temperature, water vapour and other mass constituents).

Show JSON schema
{
   "title": "HorizontalComputationalGrid",
   "description": "Horizontal computational grid description (EMD v1.0 Section 4.1.1).\n\nA model component's horizontal computational grid is composed of one or more\nhorizontal subgrids, on which different sets of variables are calculated.\nWhen the computational grid relies on more than one subgrid, it is referred to\nas a \"staggered\" grid. For most staggered grids, the velocity-related variables\nare calculated on a subgrid offset from the mass-related variables (e.g. pressure,\ntemperature, water vapour and other mass constituents).",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "arrangement": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "$ref": "#/$defs/Arrangement"
            }
         ],
         "description": "A characterisation of the grid staggering defining the relative positions of computed mass-related and velocity-related variables. Taken from 7.3 arrangement CV. Options: 'arakawa_a', 'arakawa_b', 'arakawa_c', 'arakawa_d', 'arakawa_e'. E.g. 'arakawa_c'",
         "title": "Arrangement"
      },
      "horizontal_subgrids": {
         "description": "All of the subgrids, of which there must be at least one, used to construct the horizontal computational grid. Each subgrid is associated with one or more variable types (mass-related, velocity-related, etc.), consistent with the arrangement property.",
         "items": {
            "$ref": "#/$defs/HorizontalSubgrid"
         },
         "minItems": 1,
         "title": "Horizontal Subgrids",
         "type": "array"
      }
   },
   "$defs": {
      "Arrangement": {
         "additionalProperties": true,
         "description": "Horizontal grid arrangement (EMD v1.0 Section 7.3).\n\nOptions: arakawa_a, arakawa_b, arakawa_c, arakawa_d, arakawa_e\n\nA grid arrangement describes the relative locations of mass- and velocity-related quantities\non the computed grid (for instance Collins et al. (2013), and for unstructured grids\nThuburn et al. (2009)).",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "description": {
               "default": "",
               "title": "Description",
               "type": "string"
            },
            "drs_name": {
               "title": "Drs Name",
               "type": "string"
            }
         },
         "required": [
            "id",
            "type",
            "drs_name"
         ],
         "title": "Arrangement",
         "type": "object"
      },
      "CellVariableType": {
         "additionalProperties": true,
         "description": "Cell variable type (EMD v1.0 Section 7.4).\n\nOptions: mass, x_velocity, y_velocity, velocity\n\nTypes of physical variables that are carried at, or representative of conditions at,\ncells of a horizontal subgrid.",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "description": {
               "default": "",
               "title": "Description",
               "type": "string"
            },
            "drs_name": {
               "title": "Drs Name",
               "type": "string"
            }
         },
         "required": [
            "id",
            "type",
            "drs_name"
         ],
         "title": "CellVariableType",
         "type": "object"
      },
      "GridMapping": {
         "additionalProperties": true,
         "description": "Grid mapping (EMD v1.0 Section 7.7).\n\nOptions: latitude_longitude, lambert_conformal_conic, etc.\n\nThe name of the coordinate reference system of the horizontal coordinates.",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "description": {
               "default": "",
               "title": "Description",
               "type": "string"
            },
            "drs_name": {
               "title": "Drs Name",
               "type": "string"
            }
         },
         "required": [
            "id",
            "type",
            "drs_name"
         ],
         "title": "GridMapping",
         "type": "object"
      },
      "GridType": {
         "additionalProperties": true,
         "description": "Horizontal grid type (EMD v1.0 Section 7.6).\n\nOptions: regular_latitude_longitude, regular_gaussian, reduced_gaussian, tripolar, etc.\n\nA grid type describes the method for distributing grid points over the sphere.",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "description": {
               "default": "",
               "title": "Description",
               "type": "string"
            },
            "drs_name": {
               "title": "Drs Name",
               "type": "string"
            }
         },
         "required": [
            "id",
            "type",
            "drs_name"
         ],
         "title": "GridType",
         "type": "object"
      },
      "HorizontalGridCells": {
         "additionalProperties": true,
         "description": "Horizontal grid cells description (EMD v1.0 Section 4.1.3).\n\nHorizontal grid cells are described by a coordinate system, cell resolutions,\nas well as a number of other grid features. The description does not include\nany information on whether or not the grid cells form part of a model component's\ncomputational grid, and so may be used to describe an arbitrary output grid.",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "description": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "A description of the grid. A description is only required if there is information that is not covered by any of the other properties. Omit when not required.",
               "title": "Description"
            },
            "drs_name": {
               "title": "Drs Name",
               "type": "string"
            },
            "region": {
               "anyOf": [
                  {
                     "$ref": "#/$defs/Region"
                  },
                  {
                     "type": "string"
                  }
               ],
               "description": "The geographical region, or regions, over which the component is simulated. A region is a contiguous part of the Earth's surface, and may include areas for which no calculations are made (such as ocean areas for a land surface component). Taken from 7.5 region CV. E.g. 'global', 'antarctica', 'greenland', 'limited_area'",
               "title": "Region"
            },
            "grid_type": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "$ref": "#/$defs/GridType"
                  }
               ],
               "description": "The horizontal grid type, i.e. the method of distributing grid cells over the region. Taken from 7.6 grid_type CV. E.g. 'regular_latitude_longitude', 'tripolar'",
               "title": "Grid Type"
            },
            "grid_mapping": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "$ref": "#/$defs/GridMapping"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The name of the coordinate reference system of the horizontal coordinates. Taken from 7.7 grid_mapping CV. E.g. 'latitude_longitude', 'lambert_conformal_conic'. Can be None or empty for certain grid types (e.g., tripolar grids).",
               "title": "Grid Mapping"
            },
            "temporal_refinement": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "$ref": "#/$defs/TemporalRefinement"
                  }
               ],
               "description": "The grid temporal refinement, indicating how the distribution of grid cells varies with time. Taken from 7.8 temporal_refinement CV. E.g. 'static'",
               "title": "Temporal Refinement"
            },
            "spatial_refinement": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The grid spatial refinement, indicating how the distribution of grid cells varies with space. NEW in EMD v1.0. Omit when not applicable.",
               "title": "Spatial Refinement"
            },
            "x_resolution": {
               "anyOf": [
                  {
                     "exclusiveMinimum": 0,
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "\nThe size of grid cells in the X direction.\n\nCells for which no calculations are made are included (such as ocean areas\nfor a land surface component).\n\nThe X direction for a grid defined by spherical polar coordinates is longitude.\n\nThe value's physical units are given by the horizontal_units property.\n\nReport only when cell sizes are identical or else reasonably uniform (in their given units).\nWhen cells sizes in the X direction are not identical, a representative value should be\nprovided and this fact noted in the description property.\nIf the cell sizes vary by more than 25%, set this to None.\n",
               "title": "X Resolution"
            },
            "y_resolution": {
               "anyOf": [
                  {
                     "exclusiveMinimum": 0,
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "\nThe size of grid cells in the Y direction.\n\nCells for which no calculations are made are included (such as ocean areas\nfor a land surface component).\n\nThe Y direction for a grid defined by spherical polar coordinates is latitude.\n\nThe value's physical units are given by the horizontal_units property.\n\nReport only when cell sizes are identical or else reasonably uniform (in their given units).\nWhen cells sizes in the Y direction are not identical, a representative value should be\nprovided and this fact noted in the description property.\nIf the cell sizes vary by more than 25%, set this to None.\n",
               "title": "Y Resolution"
            },
            "horizontal_units": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "\nThe physical units of the x_resolution and y_resolution property values.\n\nIf x_resolution and y_resolution are None, set this to None.\n",
               "title": "Horizontal Units"
            },
            "southernmost_latitude": {
               "anyOf": [
                  {
                     "maximum": 90.0,
                     "minimum": -90.0,
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "\nThe southernmost grid cell latitude, in degrees north.\n\nCells for which no calculations are made are included.\nThe southernmost latitude may be shared by multiple cells.\n\nIf the southernmost latitude is not known (e.g. the grid is adaptive), use None.\n",
               "title": "Southernmost Latitude"
            },
            "westernmost_longitude": {
               "anyOf": [
                  {
                     "maximum": 360.0,
                     "minimum": 0.0,
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "\nThe westernmost grid cell longitude, in degrees east, of the southernmost grid cell(s).\n\nCells for which no calculations are made are included.\nThe westernmost longitude is the smallest longitude value of the cells\nthat share the latitude given by the southernmost_latitude.\n\nIf the westernmost longitude is not known (e.g. the grid is adaptive), use None.\n",
               "title": "Westernmost Longitude"
            },
            "n_cells": {
               "anyOf": [
                  {
                     "minimum": 1,
                     "type": "integer"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "\nThe total number of cells in the horizontal grid.\n\nIf the total number of grid cells is not constant, set to None.\n",
               "title": "N Cells"
            },
            "truncation_method": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "$ref": "#/$defs/TruncationMethod"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The method for truncating the spherical harmonic representation of a spectral model when reporting on this grid. If the grid is not used for reporting spherical harmonic representations, set to None.",
               "title": "Truncation Method"
            },
            "truncation_number": {
               "anyOf": [
                  {
                     "type": "integer"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The zonal (east-west) wave number at which a spectral model is truncated when reporting on this grid. If the grid is not used for reporting spectral models, set to None.",
               "title": "Truncation Number"
            },
            "resolution_range_km": {
               "anyOf": [
                  {
                     "items": {
                        "type": "number"
                     },
                     "maxItems": 2,
                     "minItems": 2,
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "\nThe minimum and maximum resolution (in km) of cells of the horizontal grid.\n\nShould be calculated according to the algorithm implemented by\nhttps://github.com/PCMDI/nominal_resolution/blob/master/lib/api.py\nYou need to take the min and max of the array that is returned\nwhen using the returnMaxDistance of the mean_resolution function.\n",
               "title": "Resolution Range Km"
            }
         },
         "required": [
            "id",
            "type",
            "drs_name",
            "region",
            "grid_type",
            "temporal_refinement"
         ],
         "title": "HorizontalGridCells",
         "type": "object"
      },
      "HorizontalSubgrid": {
         "additionalProperties": true,
         "description": "Horizontal subgrid description (EMD v1.0 Section 4.1.2).\n\nA horizontal subgrid describes the grid cells at one of the stagger positions\nof a horizontal computational grid. Often the locations of mass-related and\nvelocity-related variables differ, so more than one horizontal subgrid will\nbe defined as part of a horizontal computational grid.",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "description": {
               "default": "",
               "title": "Description",
               "type": "string"
            },
            "drs_name": {
               "title": "Drs Name",
               "type": "string"
            },
            "cell_variable_type": {
               "description": "The types of physical variables that are carried at, or representative of conditions at, the cells described by this horizontal subgrid. Taken from 7.4 cell_variable_type CV. Options: 'mass', 'x_velocity', 'y_velocity', 'velocity'. E.g. ['mass'], ['x_velocity'], ['mass', 'x_velocity', 'y_velocity'], ['mass', 'velocity']. Can be an empty list in certain cases.",
               "items": {
                  "anyOf": [
                     {
                        "type": "string"
                     },
                     {
                        "$ref": "#/$defs/CellVariableType"
                     }
                  ]
               },
               "title": "Cell Variable Type",
               "type": "array"
            },
            "horizontal_grid_cells": {
               "$ref": "#/$defs/HorizontalGridCells",
               "description": "A description of the characteristics and location of the grid cells of this subgrid."
            }
         },
         "required": [
            "id",
            "type",
            "drs_name",
            "horizontal_grid_cells"
         ],
         "title": "HorizontalSubgrid",
         "type": "object"
      },
      "Region": {
         "additionalProperties": true,
         "description": "Region associated with the dataset\n\nExamples: \"glb\", \"30s-90s\", \"grl\"\n\nIn other words, the domain over which the dataset is provided.\nThis is intended as a rough categorisation only\nand is not precisely defined.",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "description": {
               "default": "",
               "title": "Description",
               "type": "string"
            },
            "drs_name": {
               "title": "Drs Name",
               "type": "string"
            },
            "cf_standard_region": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "title": "Cf Standard Region"
            },
            "iso_region": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "title": "Iso Region"
            }
         },
         "required": [
            "id",
            "type",
            "drs_name",
            "cf_standard_region",
            "iso_region"
         ],
         "title": "Region",
         "type": "object"
      },
      "TemporalRefinement": {
         "additionalProperties": true,
         "description": "Temporal refinement (EMD v1.0 Section 7.8).\n\nOptions: static, etc.\n\nThe grid temporal refinement, indicating how the distribution of grid cells varies with time.",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "description": {
               "default": "",
               "title": "Description",
               "type": "string"
            },
            "drs_name": {
               "title": "Drs Name",
               "type": "string"
            }
         },
         "required": [
            "id",
            "type",
            "drs_name"
         ],
         "title": "TemporalRefinement",
         "type": "object"
      },
      "TruncationMethod": {
         "additionalProperties": true,
         "description": "Truncation method (EMD v1.0 Section 7.12).\n\nThe method for truncating the spherical harmonic representation of a spectral model.",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "description": {
               "default": "",
               "title": "Description",
               "type": "string"
            },
            "drs_name": {
               "title": "Drs Name",
               "type": "string"
            }
         },
         "required": [
            "id",
            "type",
            "drs_name"
         ],
         "title": "TruncationMethod",
         "type": "object"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "arrangement",
      "horizontal_subgrids"
   ]
}

Validators:
  • validate_at_least_one_subgrid » horizontal_subgrids

field arrangement: str | Arrangement [Required][source]#

A characterisation of the grid staggering defining the relative positions of computed mass-related and velocity-related variables. Taken from 7.3 arrangement CV. Options: ‘arakawa_a’, ‘arakawa_b’, ‘arakawa_c’, ‘arakawa_d’, ‘arakawa_e’. E.g. ‘arakawa_c’

field description: str = ''[source]#

The description of the term.

field horizontal_subgrids: List[HorizontalSubgrid] [Required][source]#

All of the subgrids, of which there must be at least one, used to construct the horizontal computational grid. Each subgrid is associated with one or more variable types (mass-related, velocity-related, etc.), consistent with the arrangement property.

Constraints:
  • min_length = 1

Validated by:
  • validate_at_least_one_subgrid

field id: str [Required][source]#

The identifier of the terms.

field type: str [Required][source]#

The data descriptor to which the term belongs.

accept(visitor)[source]#

Accept a data descriptor visitor.

validator validate_at_least_one_subgrid  »  horizontal_subgrids[source]#

Validate that there is at least one horizontal subgrid.

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.HorizontalGridCells[source]#

Bases: PlainTermDataDescriptor

Horizontal grid cells description (EMD v1.0 Section 4.1.3).

Horizontal grid cells are described by a coordinate system, cell resolutions, as well as a number of other grid features. The description does not include any information on whether or not the grid cells form part of a model component’s computational grid, and so may be used to describe an arbitrary output grid.

Show JSON schema
{
   "title": "HorizontalGridCells",
   "description": "Horizontal grid cells description (EMD v1.0 Section 4.1.3).\n\nHorizontal grid cells are described by a coordinate system, cell resolutions,\nas well as a number of other grid features. The description does not include\nany information on whether or not the grid cells form part of a model component's\ncomputational grid, and so may be used to describe an arbitrary output grid.",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "description": "A description of the grid. A description is only required if there is information that is not covered by any of the other properties. Omit when not required.",
         "title": "Description"
      },
      "drs_name": {
         "title": "Drs Name",
         "type": "string"
      },
      "region": {
         "anyOf": [
            {
               "$ref": "#/$defs/Region"
            },
            {
               "type": "string"
            }
         ],
         "description": "The geographical region, or regions, over which the component is simulated. A region is a contiguous part of the Earth's surface, and may include areas for which no calculations are made (such as ocean areas for a land surface component). Taken from 7.5 region CV. E.g. 'global', 'antarctica', 'greenland', 'limited_area'",
         "title": "Region"
      },
      "grid_type": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "$ref": "#/$defs/GridType"
            }
         ],
         "description": "The horizontal grid type, i.e. the method of distributing grid cells over the region. Taken from 7.6 grid_type CV. E.g. 'regular_latitude_longitude', 'tripolar'",
         "title": "Grid Type"
      },
      "grid_mapping": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "$ref": "#/$defs/GridMapping"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "description": "The name of the coordinate reference system of the horizontal coordinates. Taken from 7.7 grid_mapping CV. E.g. 'latitude_longitude', 'lambert_conformal_conic'. Can be None or empty for certain grid types (e.g., tripolar grids).",
         "title": "Grid Mapping"
      },
      "temporal_refinement": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "$ref": "#/$defs/TemporalRefinement"
            }
         ],
         "description": "The grid temporal refinement, indicating how the distribution of grid cells varies with time. Taken from 7.8 temporal_refinement CV. E.g. 'static'",
         "title": "Temporal Refinement"
      },
      "spatial_refinement": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "description": "The grid spatial refinement, indicating how the distribution of grid cells varies with space. NEW in EMD v1.0. Omit when not applicable.",
         "title": "Spatial Refinement"
      },
      "x_resolution": {
         "anyOf": [
            {
               "exclusiveMinimum": 0,
               "type": "number"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "description": "\nThe size of grid cells in the X direction.\n\nCells for which no calculations are made are included (such as ocean areas\nfor a land surface component).\n\nThe X direction for a grid defined by spherical polar coordinates is longitude.\n\nThe value's physical units are given by the horizontal_units property.\n\nReport only when cell sizes are identical or else reasonably uniform (in their given units).\nWhen cells sizes in the X direction are not identical, a representative value should be\nprovided and this fact noted in the description property.\nIf the cell sizes vary by more than 25%, set this to None.\n",
         "title": "X Resolution"
      },
      "y_resolution": {
         "anyOf": [
            {
               "exclusiveMinimum": 0,
               "type": "number"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "description": "\nThe size of grid cells in the Y direction.\n\nCells for which no calculations are made are included (such as ocean areas\nfor a land surface component).\n\nThe Y direction for a grid defined by spherical polar coordinates is latitude.\n\nThe value's physical units are given by the horizontal_units property.\n\nReport only when cell sizes are identical or else reasonably uniform (in their given units).\nWhen cells sizes in the Y direction are not identical, a representative value should be\nprovided and this fact noted in the description property.\nIf the cell sizes vary by more than 25%, set this to None.\n",
         "title": "Y Resolution"
      },
      "horizontal_units": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "description": "\nThe physical units of the x_resolution and y_resolution property values.\n\nIf x_resolution and y_resolution are None, set this to None.\n",
         "title": "Horizontal Units"
      },
      "southernmost_latitude": {
         "anyOf": [
            {
               "maximum": 90.0,
               "minimum": -90.0,
               "type": "number"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "description": "\nThe southernmost grid cell latitude, in degrees north.\n\nCells for which no calculations are made are included.\nThe southernmost latitude may be shared by multiple cells.\n\nIf the southernmost latitude is not known (e.g. the grid is adaptive), use None.\n",
         "title": "Southernmost Latitude"
      },
      "westernmost_longitude": {
         "anyOf": [
            {
               "maximum": 360.0,
               "minimum": 0.0,
               "type": "number"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "description": "\nThe westernmost grid cell longitude, in degrees east, of the southernmost grid cell(s).\n\nCells for which no calculations are made are included.\nThe westernmost longitude is the smallest longitude value of the cells\nthat share the latitude given by the southernmost_latitude.\n\nIf the westernmost longitude is not known (e.g. the grid is adaptive), use None.\n",
         "title": "Westernmost Longitude"
      },
      "n_cells": {
         "anyOf": [
            {
               "minimum": 1,
               "type": "integer"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "description": "\nThe total number of cells in the horizontal grid.\n\nIf the total number of grid cells is not constant, set to None.\n",
         "title": "N Cells"
      },
      "truncation_method": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "$ref": "#/$defs/TruncationMethod"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "description": "The method for truncating the spherical harmonic representation of a spectral model when reporting on this grid. If the grid is not used for reporting spherical harmonic representations, set to None.",
         "title": "Truncation Method"
      },
      "truncation_number": {
         "anyOf": [
            {
               "type": "integer"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "description": "The zonal (east-west) wave number at which a spectral model is truncated when reporting on this grid. If the grid is not used for reporting spectral models, set to None.",
         "title": "Truncation Number"
      },
      "resolution_range_km": {
         "anyOf": [
            {
               "items": {
                  "type": "number"
               },
               "maxItems": 2,
               "minItems": 2,
               "type": "array"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "description": "\nThe minimum and maximum resolution (in km) of cells of the horizontal grid.\n\nShould be calculated according to the algorithm implemented by\nhttps://github.com/PCMDI/nominal_resolution/blob/master/lib/api.py\nYou need to take the min and max of the array that is returned\nwhen using the returnMaxDistance of the mean_resolution function.\n",
         "title": "Resolution Range Km"
      }
   },
   "$defs": {
      "GridMapping": {
         "additionalProperties": true,
         "description": "Grid mapping (EMD v1.0 Section 7.7).\n\nOptions: latitude_longitude, lambert_conformal_conic, etc.\n\nThe name of the coordinate reference system of the horizontal coordinates.",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "description": {
               "default": "",
               "title": "Description",
               "type": "string"
            },
            "drs_name": {
               "title": "Drs Name",
               "type": "string"
            }
         },
         "required": [
            "id",
            "type",
            "drs_name"
         ],
         "title": "GridMapping",
         "type": "object"
      },
      "GridType": {
         "additionalProperties": true,
         "description": "Horizontal grid type (EMD v1.0 Section 7.6).\n\nOptions: regular_latitude_longitude, regular_gaussian, reduced_gaussian, tripolar, etc.\n\nA grid type describes the method for distributing grid points over the sphere.",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "description": {
               "default": "",
               "title": "Description",
               "type": "string"
            },
            "drs_name": {
               "title": "Drs Name",
               "type": "string"
            }
         },
         "required": [
            "id",
            "type",
            "drs_name"
         ],
         "title": "GridType",
         "type": "object"
      },
      "Region": {
         "additionalProperties": true,
         "description": "Region associated with the dataset\n\nExamples: \"glb\", \"30s-90s\", \"grl\"\n\nIn other words, the domain over which the dataset is provided.\nThis is intended as a rough categorisation only\nand is not precisely defined.",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "description": {
               "default": "",
               "title": "Description",
               "type": "string"
            },
            "drs_name": {
               "title": "Drs Name",
               "type": "string"
            },
            "cf_standard_region": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "title": "Cf Standard Region"
            },
            "iso_region": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "title": "Iso Region"
            }
         },
         "required": [
            "id",
            "type",
            "drs_name",
            "cf_standard_region",
            "iso_region"
         ],
         "title": "Region",
         "type": "object"
      },
      "TemporalRefinement": {
         "additionalProperties": true,
         "description": "Temporal refinement (EMD v1.0 Section 7.8).\n\nOptions: static, etc.\n\nThe grid temporal refinement, indicating how the distribution of grid cells varies with time.",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "description": {
               "default": "",
               "title": "Description",
               "type": "string"
            },
            "drs_name": {
               "title": "Drs Name",
               "type": "string"
            }
         },
         "required": [
            "id",
            "type",
            "drs_name"
         ],
         "title": "TemporalRefinement",
         "type": "object"
      },
      "TruncationMethod": {
         "additionalProperties": true,
         "description": "Truncation method (EMD v1.0 Section 7.12).\n\nThe method for truncating the spherical harmonic representation of a spectral model.",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "description": {
               "default": "",
               "title": "Description",
               "type": "string"
            },
            "drs_name": {
               "title": "Drs Name",
               "type": "string"
            }
         },
         "required": [
            "id",
            "type",
            "drs_name"
         ],
         "title": "TruncationMethod",
         "type": "object"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "drs_name",
      "region",
      "grid_type",
      "temporal_refinement"
   ]
}

Validators:
  • validate_horizontal_units » horizontal_units

  • validate_resolution_range » resolution_range_km

field description: str | None = None[source]#

The description of the term.

A description of the grid. A description is only required if there is information that is not covered by any of the other properties. Omit when not required.

field drs_name: str [Required][source]#
field grid_mapping: str | GridMapping | None = None[source]#

The name of the coordinate reference system of the horizontal coordinates. Taken from 7.7 grid_mapping CV. E.g. ‘latitude_longitude’, ‘lambert_conformal_conic’. Can be None or empty for certain grid types (e.g., tripolar grids).

field grid_type: str | GridType [Required][source]#

The horizontal grid type, i.e. the method of distributing grid cells over the region. Taken from 7.6 grid_type CV. E.g. ‘regular_latitude_longitude’, ‘tripolar’

field horizontal_units: str | None = None[source]#

The physical units of the x_resolution and y_resolution property values.

If x_resolution and y_resolution are None, set this to None.

Validated by:
  • validate_horizontal_units

field id: str [Required][source]#

The identifier of the terms.

field n_cells: int | None = None[source]#

The total number of cells in the horizontal grid.

If the total number of grid cells is not constant, set to None.

Constraints:
  • ge = 1

field region: Region | str [Required][source]#

The geographical region, or regions, over which the component is simulated. A region is a contiguous part of the Earth’s surface, and may include areas for which no calculations are made (such as ocean areas for a land surface component). Taken from 7.5 region CV. E.g. ‘global’, ‘antarctica’, ‘greenland’, ‘limited_area’

field resolution_range_km: list[float] | None = None[source]#

The minimum and maximum resolution (in km) of cells of the horizontal grid.

Should be calculated according to the algorithm implemented by PCMDI/nominal_resolution You need to take the min and max of the array that is returned when using the returnMaxDistance of the mean_resolution function.

Constraints:
  • min_length = 2

  • max_length = 2

Validated by:
  • validate_resolution_range

field southernmost_latitude: float | None = None[source]#

The southernmost grid cell latitude, in degrees north.

Cells for which no calculations are made are included. The southernmost latitude may be shared by multiple cells.

If the southernmost latitude is not known (e.g. the grid is adaptive), use None.

Constraints:
  • ge = -90.0

  • le = 90.0

field spatial_refinement: str | None = None[source]#

The grid spatial refinement, indicating how the distribution of grid cells varies with space. NEW in EMD v1.0. Omit when not applicable.

field temporal_refinement: str | TemporalRefinement [Required][source]#

The grid temporal refinement, indicating how the distribution of grid cells varies with time. Taken from 7.8 temporal_refinement CV. E.g. ‘static’

field truncation_method: str | TruncationMethod | None = None[source]#

The method for truncating the spherical harmonic representation of a spectral model when reporting on this grid. If the grid is not used for reporting spherical harmonic representations, set to None.

field truncation_number: int | None = None[source]#

The zonal (east-west) wave number at which a spectral model is truncated when reporting on this grid. If the grid is not used for reporting spectral models, set to None.

field type: str [Required][source]#

The data descriptor to which the term belongs.

field westernmost_longitude: float | None = None[source]#

The westernmost grid cell longitude, in degrees east, of the southernmost grid cell(s).

Cells for which no calculations are made are included. The westernmost longitude is the smallest longitude value of the cells that share the latitude given by the southernmost_latitude.

If the westernmost longitude is not known (e.g. the grid is adaptive), use None.

Constraints:
  • ge = 0.0

  • le = 360.0

field x_resolution: float | None = None[source]#

The size of grid cells in the X direction.

Cells for which no calculations are made are included (such as ocean areas for a land surface component).

The X direction for a grid defined by spherical polar coordinates is longitude.

The value’s physical units are given by the horizontal_units property.

Report only when cell sizes are identical or else reasonably uniform (in their given units). When cells sizes in the X direction are not identical, a representative value should be provided and this fact noted in the description property. If the cell sizes vary by more than 25%, set this to None.

Constraints:
  • gt = 0

field y_resolution: float | None = None[source]#

The size of grid cells in the Y direction.

Cells for which no calculations are made are included (such as ocean areas for a land surface component).

The Y direction for a grid defined by spherical polar coordinates is latitude.

The value’s physical units are given by the horizontal_units property.

Report only when cell sizes are identical or else reasonably uniform (in their given units). When cells sizes in the Y direction are not identical, a representative value should be provided and this fact noted in the description property. If the cell sizes vary by more than 25%, set this to None.

Constraints:
  • gt = 0

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

validator validate_horizontal_units  »  horizontal_units[source]#

Validate horizontal_units.

validator validate_resolution_range  »  resolution_range_km[source]#

Validate that resolution range has exactly 2 values and min <= max.

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.HorizontalLabel[source]#

Bases: PlainTermDataDescriptor

Label that describes a specific horizontal sampling approach

Examples: “hxy”, “hs”, “hm”

This is set to “hm” (“horizontal mean”) when no other horizontal labels apply. For underlying details and logic, please see [Taylor et al., 2025](https://docs.google.com/document/d/19jzecgymgiiEsTDzaaqeLP6pTvLT-NzCMaq-wu-QoOc/edit?pli=1&tab=t.0).

This label is used as the area component of a branded variable’s suffix (see BrandedSuffix).

Show JSON schema
{
   "title": "HorizontalLabel",
   "description": "Label that describes a specific horizontal sampling approach\n\nExamples: \"hxy\", \"hs\", \"hm\"\n\nThis is set to \"hm\" (\"horizontal mean\") when no other horizontal labels apply.\nFor underlying details and logic, please see\n[Taylor et al., 2025](https://docs.google.com/document/d/19jzecgymgiiEsTDzaaqeLP6pTvLT-NzCMaq-wu-QoOc/edit?pli=1&tab=t.0).\n\nThis label is used as the area component of a branded variable's suffix\n(see :py:class:`BrandedSuffix`).",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "drs_name": {
         "title": "Drs Name",
         "type": "string"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "drs_name"
   ]
}

field description: str = ''[source]#

The description of the term.

field drs_name: str [Required][source]#
field id: str [Required][source]#

The identifier of the terms.

field type: str [Required][source]#

The data descriptor to which the term belongs.

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.HorizontalSubgrid[source]#

Bases: PlainTermDataDescriptor

Horizontal subgrid description (EMD v1.0 Section 4.1.2).

A horizontal subgrid describes the grid cells at one of the stagger positions of a horizontal computational grid. Often the locations of mass-related and velocity-related variables differ, so more than one horizontal subgrid will be defined as part of a horizontal computational grid.

Show JSON schema
{
   "title": "HorizontalSubgrid",
   "description": "Horizontal subgrid description (EMD v1.0 Section 4.1.2).\n\nA horizontal subgrid describes the grid cells at one of the stagger positions\nof a horizontal computational grid. Often the locations of mass-related and\nvelocity-related variables differ, so more than one horizontal subgrid will\nbe defined as part of a horizontal computational grid.",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "drs_name": {
         "title": "Drs Name",
         "type": "string"
      },
      "cell_variable_type": {
         "description": "The types of physical variables that are carried at, or representative of conditions at, the cells described by this horizontal subgrid. Taken from 7.4 cell_variable_type CV. Options: 'mass', 'x_velocity', 'y_velocity', 'velocity'. E.g. ['mass'], ['x_velocity'], ['mass', 'x_velocity', 'y_velocity'], ['mass', 'velocity']. Can be an empty list in certain cases.",
         "items": {
            "anyOf": [
               {
                  "type": "string"
               },
               {
                  "$ref": "#/$defs/CellVariableType"
               }
            ]
         },
         "title": "Cell Variable Type",
         "type": "array"
      },
      "horizontal_grid_cells": {
         "$ref": "#/$defs/HorizontalGridCells",
         "description": "A description of the characteristics and location of the grid cells of this subgrid."
      }
   },
   "$defs": {
      "CellVariableType": {
         "additionalProperties": true,
         "description": "Cell variable type (EMD v1.0 Section 7.4).\n\nOptions: mass, x_velocity, y_velocity, velocity\n\nTypes of physical variables that are carried at, or representative of conditions at,\ncells of a horizontal subgrid.",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "description": {
               "default": "",
               "title": "Description",
               "type": "string"
            },
            "drs_name": {
               "title": "Drs Name",
               "type": "string"
            }
         },
         "required": [
            "id",
            "type",
            "drs_name"
         ],
         "title": "CellVariableType",
         "type": "object"
      },
      "GridMapping": {
         "additionalProperties": true,
         "description": "Grid mapping (EMD v1.0 Section 7.7).\n\nOptions: latitude_longitude, lambert_conformal_conic, etc.\n\nThe name of the coordinate reference system of the horizontal coordinates.",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "description": {
               "default": "",
               "title": "Description",
               "type": "string"
            },
            "drs_name": {
               "title": "Drs Name",
               "type": "string"
            }
         },
         "required": [
            "id",
            "type",
            "drs_name"
         ],
         "title": "GridMapping",
         "type": "object"
      },
      "GridType": {
         "additionalProperties": true,
         "description": "Horizontal grid type (EMD v1.0 Section 7.6).\n\nOptions: regular_latitude_longitude, regular_gaussian, reduced_gaussian, tripolar, etc.\n\nA grid type describes the method for distributing grid points over the sphere.",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "description": {
               "default": "",
               "title": "Description",
               "type": "string"
            },
            "drs_name": {
               "title": "Drs Name",
               "type": "string"
            }
         },
         "required": [
            "id",
            "type",
            "drs_name"
         ],
         "title": "GridType",
         "type": "object"
      },
      "HorizontalGridCells": {
         "additionalProperties": true,
         "description": "Horizontal grid cells description (EMD v1.0 Section 4.1.3).\n\nHorizontal grid cells are described by a coordinate system, cell resolutions,\nas well as a number of other grid features. The description does not include\nany information on whether or not the grid cells form part of a model component's\ncomputational grid, and so may be used to describe an arbitrary output grid.",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "description": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "A description of the grid. A description is only required if there is information that is not covered by any of the other properties. Omit when not required.",
               "title": "Description"
            },
            "drs_name": {
               "title": "Drs Name",
               "type": "string"
            },
            "region": {
               "anyOf": [
                  {
                     "$ref": "#/$defs/Region"
                  },
                  {
                     "type": "string"
                  }
               ],
               "description": "The geographical region, or regions, over which the component is simulated. A region is a contiguous part of the Earth's surface, and may include areas for which no calculations are made (such as ocean areas for a land surface component). Taken from 7.5 region CV. E.g. 'global', 'antarctica', 'greenland', 'limited_area'",
               "title": "Region"
            },
            "grid_type": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "$ref": "#/$defs/GridType"
                  }
               ],
               "description": "The horizontal grid type, i.e. the method of distributing grid cells over the region. Taken from 7.6 grid_type CV. E.g. 'regular_latitude_longitude', 'tripolar'",
               "title": "Grid Type"
            },
            "grid_mapping": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "$ref": "#/$defs/GridMapping"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The name of the coordinate reference system of the horizontal coordinates. Taken from 7.7 grid_mapping CV. E.g. 'latitude_longitude', 'lambert_conformal_conic'. Can be None or empty for certain grid types (e.g., tripolar grids).",
               "title": "Grid Mapping"
            },
            "temporal_refinement": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "$ref": "#/$defs/TemporalRefinement"
                  }
               ],
               "description": "The grid temporal refinement, indicating how the distribution of grid cells varies with time. Taken from 7.8 temporal_refinement CV. E.g. 'static'",
               "title": "Temporal Refinement"
            },
            "spatial_refinement": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The grid spatial refinement, indicating how the distribution of grid cells varies with space. NEW in EMD v1.0. Omit when not applicable.",
               "title": "Spatial Refinement"
            },
            "x_resolution": {
               "anyOf": [
                  {
                     "exclusiveMinimum": 0,
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "\nThe size of grid cells in the X direction.\n\nCells for which no calculations are made are included (such as ocean areas\nfor a land surface component).\n\nThe X direction for a grid defined by spherical polar coordinates is longitude.\n\nThe value's physical units are given by the horizontal_units property.\n\nReport only when cell sizes are identical or else reasonably uniform (in their given units).\nWhen cells sizes in the X direction are not identical, a representative value should be\nprovided and this fact noted in the description property.\nIf the cell sizes vary by more than 25%, set this to None.\n",
               "title": "X Resolution"
            },
            "y_resolution": {
               "anyOf": [
                  {
                     "exclusiveMinimum": 0,
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "\nThe size of grid cells in the Y direction.\n\nCells for which no calculations are made are included (such as ocean areas\nfor a land surface component).\n\nThe Y direction for a grid defined by spherical polar coordinates is latitude.\n\nThe value's physical units are given by the horizontal_units property.\n\nReport only when cell sizes are identical or else reasonably uniform (in their given units).\nWhen cells sizes in the Y direction are not identical, a representative value should be\nprovided and this fact noted in the description property.\nIf the cell sizes vary by more than 25%, set this to None.\n",
               "title": "Y Resolution"
            },
            "horizontal_units": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "\nThe physical units of the x_resolution and y_resolution property values.\n\nIf x_resolution and y_resolution are None, set this to None.\n",
               "title": "Horizontal Units"
            },
            "southernmost_latitude": {
               "anyOf": [
                  {
                     "maximum": 90.0,
                     "minimum": -90.0,
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "\nThe southernmost grid cell latitude, in degrees north.\n\nCells for which no calculations are made are included.\nThe southernmost latitude may be shared by multiple cells.\n\nIf the southernmost latitude is not known (e.g. the grid is adaptive), use None.\n",
               "title": "Southernmost Latitude"
            },
            "westernmost_longitude": {
               "anyOf": [
                  {
                     "maximum": 360.0,
                     "minimum": 0.0,
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "\nThe westernmost grid cell longitude, in degrees east, of the southernmost grid cell(s).\n\nCells for which no calculations are made are included.\nThe westernmost longitude is the smallest longitude value of the cells\nthat share the latitude given by the southernmost_latitude.\n\nIf the westernmost longitude is not known (e.g. the grid is adaptive), use None.\n",
               "title": "Westernmost Longitude"
            },
            "n_cells": {
               "anyOf": [
                  {
                     "minimum": 1,
                     "type": "integer"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "\nThe total number of cells in the horizontal grid.\n\nIf the total number of grid cells is not constant, set to None.\n",
               "title": "N Cells"
            },
            "truncation_method": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "$ref": "#/$defs/TruncationMethod"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The method for truncating the spherical harmonic representation of a spectral model when reporting on this grid. If the grid is not used for reporting spherical harmonic representations, set to None.",
               "title": "Truncation Method"
            },
            "truncation_number": {
               "anyOf": [
                  {
                     "type": "integer"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The zonal (east-west) wave number at which a spectral model is truncated when reporting on this grid. If the grid is not used for reporting spectral models, set to None.",
               "title": "Truncation Number"
            },
            "resolution_range_km": {
               "anyOf": [
                  {
                     "items": {
                        "type": "number"
                     },
                     "maxItems": 2,
                     "minItems": 2,
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "\nThe minimum and maximum resolution (in km) of cells of the horizontal grid.\n\nShould be calculated according to the algorithm implemented by\nhttps://github.com/PCMDI/nominal_resolution/blob/master/lib/api.py\nYou need to take the min and max of the array that is returned\nwhen using the returnMaxDistance of the mean_resolution function.\n",
               "title": "Resolution Range Km"
            }
         },
         "required": [
            "id",
            "type",
            "drs_name",
            "region",
            "grid_type",
            "temporal_refinement"
         ],
         "title": "HorizontalGridCells",
         "type": "object"
      },
      "Region": {
         "additionalProperties": true,
         "description": "Region associated with the dataset\n\nExamples: \"glb\", \"30s-90s\", \"grl\"\n\nIn other words, the domain over which the dataset is provided.\nThis is intended as a rough categorisation only\nand is not precisely defined.",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "description": {
               "default": "",
               "title": "Description",
               "type": "string"
            },
            "drs_name": {
               "title": "Drs Name",
               "type": "string"
            },
            "cf_standard_region": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "title": "Cf Standard Region"
            },
            "iso_region": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "title": "Iso Region"
            }
         },
         "required": [
            "id",
            "type",
            "drs_name",
            "cf_standard_region",
            "iso_region"
         ],
         "title": "Region",
         "type": "object"
      },
      "TemporalRefinement": {
         "additionalProperties": true,
         "description": "Temporal refinement (EMD v1.0 Section 7.8).\n\nOptions: static, etc.\n\nThe grid temporal refinement, indicating how the distribution of grid cells varies with time.",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "description": {
               "default": "",
               "title": "Description",
               "type": "string"
            },
            "drs_name": {
               "title": "Drs Name",
               "type": "string"
            }
         },
         "required": [
            "id",
            "type",
            "drs_name"
         ],
         "title": "TemporalRefinement",
         "type": "object"
      },
      "TruncationMethod": {
         "additionalProperties": true,
         "description": "Truncation method (EMD v1.0 Section 7.12).\n\nThe method for truncating the spherical harmonic representation of a spectral model.",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "description": {
               "default": "",
               "title": "Description",
               "type": "string"
            },
            "drs_name": {
               "title": "Drs Name",
               "type": "string"
            }
         },
         "required": [
            "id",
            "type",
            "drs_name"
         ],
         "title": "TruncationMethod",
         "type": "object"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "drs_name",
      "horizontal_grid_cells"
   ]
}

field cell_variable_type: List[str | CellVariableType] [Optional][source]#

The types of physical variables that are carried at, or representative of conditions at, the cells described by this horizontal subgrid. Taken from 7.4 cell_variable_type CV. Options: ‘mass’, ‘x_velocity’, ‘y_velocity’, ‘velocity’. E.g. [‘mass’], [‘x_velocity’], [‘mass’, ‘x_velocity’, ‘y_velocity’], [‘mass’, ‘velocity’]. Can be an empty list in certain cases.

field description: str = ''[source]#

The description of the term.

field drs_name: str [Required][source]#
field horizontal_grid_cells: HorizontalGridCells [Required][source]#

A description of the characteristics and location of the grid cells of this subgrid.

field id: str [Required][source]#

The identifier of the terms.

field type: str [Required][source]#

The data descriptor to which the term belongs.

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.HorizontalUnits[source]#

Bases: PlainTermDataDescriptor

Show JSON schema
{
   "title": "HorizontalUnits",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "drs_name": {
         "title": "Drs Name",
         "type": "string"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "drs_name"
   ]
}

field description: str = ''[source]#

The description of the term.

field drs_name: str [Required][source]#
field id: str [Required][source]#

The identifier of the terms.

field type: str [Required][source]#

The data descriptor to which the term belongs.

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.InitializationIndex[source]#

Bases: PatternTermDataDescriptor

Label that identifies the initialization variant used to produce a dataset

Examples: “i1”, “i2”, “i196001”, “i201001”, “i201001a”, “i201001b”

This label can be used, for example, to distinguish between two simulations that were initialised in different ways or on different dates (this is most commonly used for decadal prediction simulations).

When this is of the form id*, the value has no intrinsic meaning within the CVs. However, in other external sources (to be confirmed which) the meaning of this initialization label for a given simulation can be looked up.

When this is of the form id{6}[abcde]?, the digits indicate the year and month used for initialising the simulation, with any suffix letter used to distinguish between simulations that differ in their initialization but nonetheless use the same year and month.

Show JSON schema
{
   "title": "InitializationIndex",
   "description": "Label that identifies the initialization variant used to produce a dataset\n\nExamples: \"i1\", \"i2\", \"i196001\", \"i201001\", \"i201001a\", \"i201001b\"\n\nThis label can be used, for example, to distinguish between two simulations\nthat were initialised in different ways or on different dates\n(this is most commonly used for decadal prediction simulations).\n\nWhen this is of the form `i\\d*`, the value has no intrinsic meaning within the CVs.\nHowever, in other external sources (to be confirmed which)\nthe meaning of this initialization label for a given simulation can be looked up.\n\nWhen this is of the form `i\\d{6}[abcde]?`,\nthe digits indicate the year and month used for initialising the simulation,\nwith any suffix letter used to distinguish\nbetween simulations that differ in their initialization\nbut nonetheless use the same year and month.",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "regex": {
         "title": "Regex",
         "type": "string"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "regex"
   ]
}

field description: str = ''[source]#

The description of the term.

field id: str [Required][source]#

The identifier of the terms.

field regex: str [Required][source]#

The regular expression.

field type: str [Required][source]#

The data descriptor to which the term belongs.

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.Institution[source]#

Bases: PlainTermDataDescriptor

A registered institution

Examples: “IPSL”, “CR”, “NCAR”, “CNRM”

Unlike Organisation, this can only refer to a single entity (institute, group, person).

Show JSON schema
{
   "title": "Institution",
   "description": "A registered institution\n\nExamples: \"IPSL\", \"CR\", \"NCAR\", \"CNRM\"\n\nUnlike :py:class:`Organisation`, this can only refer to a single entity\n(institute, group, person).",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "drs_name": {
         "title": "Drs Name",
         "type": "string"
      },
      "acronyms": {
         "items": {
            "type": "string"
         },
         "title": "Acronyms",
         "type": "array"
      },
      "labels": {
         "items": {
            "type": "string"
         },
         "title": "Labels",
         "type": "array"
      },
      "location": {
         "items": {
            "$ref": "#/$defs/Location"
         },
         "title": "Location",
         "type": "array"
      },
      "ror": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "title": "Ror"
      },
      "urls": {
         "items": {
            "format": "uri",
            "maxLength": 2083,
            "minLength": 1,
            "type": "string"
         },
         "title": "Urls",
         "type": "array"
      }
   },
   "$defs": {
      "Location": {
         "description": "Location",
         "properties": {
            "city": {
               "title": "City",
               "type": "string"
            },
            "country": {
               "title": "Country",
               "type": "string"
            },
            "lat": {
               "maximum": 90.0,
               "minimum": -90.0,
               "title": "Lat",
               "type": "number"
            },
            "lon": {
               "maximum": 180.0,
               "minimum": -180.0,
               "title": "Lon",
               "type": "number"
            }
         },
         "required": [
            "city",
            "country",
            "lat",
            "lon"
         ],
         "title": "Location",
         "type": "object"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "drs_name",
      "acronyms",
      "labels",
      "location",
      "ror",
      "urls"
   ]
}

field acronyms: list[str] [Required][source]#

Known acronyms for this member/entity apart from the registered one

The registered/official acronym is given in self.drs_name.

field description: str = ''[source]#

The description of the term.

field drs_name: str [Required][source]#
field id: str [Required][source]#

The identifier of the terms.

field labels: list[str] [Required][source]#

Labels that can be used for this institute

These are free-text and can be used when the member/entity needs to be referred to in full, rather than by its acronym. This can also be thought of as ‘long names’.

field location: list[Location] [Required][source]#

Location(s) of the institute

field ror: str | None [Required][source]#

Research organisation registry (https://ror.org/) ID

If None, this organisation is not registered with ROR or the ROR was not supplied at the time of registration.

field type: str [Required][source]#

The data descriptor to which the term belongs.

field urls: list[HttpUrl] [Required][source]#

URL(s) relevant for finding out more information about this member/entity

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.KnownBrandedVariable[source]#

Bases: PlainTermDataDescriptor

A climate-related quantity or measurement, including information about sampling.

The concept of a branded variable was introduced in CMIP7. A branded variable is composed of two parts. The first part is the root variable (see Variable). The second is the suffix (see BrandedSuffix).

For further details on the development of branded variables, see [this paper draft](https://docs.google.com/document/d/19jzecgymgiiEsTDzaaqeLP6pTvLT-NzCMaq-wu-QoOc/edit?pli=1&tab=t.0).

Show JSON schema
{
   "title": "KnownBrandedVariable",
   "description": "A climate-related quantity or measurement, including information about sampling.\n\nThe concept of a branded variable was introduced in CMIP7.\nA branded variable is composed of two parts.\nThe first part is the root variable (see :py:class:`Variable`).\nThe second is the suffix (see :py:class:`BrandedSuffix`).\n\nFor further details on the development of branded variables,\nsee [this paper draft](https://docs.google.com/document/d/19jzecgymgiiEsTDzaaqeLP6pTvLT-NzCMaq-wu-QoOc/edit?pli=1&tab=t.0).",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "drs_name": {
         "title": "Drs Name",
         "type": "string"
      },
      "cf_standard_name": {
         "description": "CF standard name, e.g., 'air_temperature'",
         "title": "Cf Standard Name",
         "type": "string"
      },
      "cf_units": {
         "description": "CF standard units, e.g., 'K'",
         "title": "Cf Units",
         "type": "string"
      },
      "cf_sn_status": {
         "description": "CF standard name status, e.g., 'approved'",
         "title": "Cf Sn Status",
         "type": "string"
      },
      "variable_root_name": {
         "description": "Variable root name, e.g., 'ta'",
         "title": "Variable Root Name",
         "type": "string"
      },
      "var_def_qualifier": {
         "default": "",
         "description": "Variable definition qualifier",
         "title": "Var Def Qualifier",
         "type": "string"
      },
      "branding_suffix_name": {
         "description": "Branding suffix, e.g., 'tavg-p19-hxy-air'",
         "title": "Branding Suffix Name",
         "type": "string"
      },
      "dimensions": {
         "description": "NetCDF dimensions",
         "items": {
            "type": "string"
         },
         "title": "Dimensions",
         "type": "array"
      },
      "cell_methods": {
         "default": "",
         "description": "CF cell_methods attribute",
         "title": "Cell Methods",
         "type": "string"
      },
      "cell_measures": {
         "default": "",
         "description": "CF cell_measures attribute",
         "title": "Cell Measures",
         "type": "string"
      },
      "history": {
         "default": "",
         "description": "Processing history",
         "title": "History",
         "type": "string"
      },
      "realm": {
         "description": "Earth system realm, e.g., 'atmos'",
         "title": "Realm",
         "type": "string"
      },
      "temporal_label": {
         "description": "Temporal label, e.g., 'tavg'",
         "title": "Temporal Label",
         "type": "string"
      },
      "vertical_label": {
         "description": "Vertical label, e.g., 'p19'",
         "title": "Vertical Label",
         "type": "string"
      },
      "horizontal_label": {
         "description": "Horizontal label, e.g., 'hxy'",
         "title": "Horizontal Label",
         "type": "string"
      },
      "area_label": {
         "description": "Area label, e.g., 'air'",
         "title": "Area Label",
         "type": "string"
      },
      "bn_status": {
         "description": "Branded variable status, e.g., 'accepted'",
         "title": "Bn Status",
         "type": "string"
      },
      "positive_direction": {
         "default": "",
         "description": "Positive direction for the variable",
         "title": "Positive Direction",
         "type": "string"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "drs_name",
      "cf_standard_name",
      "cf_units",
      "cf_sn_status",
      "variable_root_name",
      "branding_suffix_name",
      "dimensions",
      "realm",
      "temporal_label",
      "vertical_label",
      "horizontal_label",
      "area_label",
      "bn_status"
   ]
}

field area_label: str [Required][source]#

Area label, e.g., ‘air’

field bn_status: str [Required][source]#

Branded variable status, e.g., ‘accepted’

field branding_suffix_name: str [Required][source]#

Branding suffix, e.g., ‘tavg-p19-hxy-air’

field cell_measures: str = ''[source]#

CF cell_measures attribute

field cell_methods: str = ''[source]#

CF cell_methods attribute

field cf_sn_status: str [Required][source]#

CF standard name status, e.g., ‘approved’

field cf_standard_name: str [Required][source]#

CF standard name, e.g., ‘air_temperature’

field cf_units: str [Required][source]#

CF standard units, e.g., ‘K’

field description: str = ''[source]#

The description of the term.

field dimensions: List[str] [Required][source]#

NetCDF dimensions

field drs_name: str [Required][source]#
field history: str = ''[source]#

Processing history

field horizontal_label: str [Required][source]#

Horizontal label, e.g., ‘hxy’

field id: str [Required][source]#

The identifier of the terms.

field positive_direction: str = ''[source]#

Positive direction for the variable

field realm: str [Required][source]#

Earth system realm, e.g., ‘atmos’

field temporal_label: str [Required][source]#

Temporal label, e.g., ‘tavg’

field type: str [Required][source]#

The data descriptor to which the term belongs.

field var_def_qualifier: str = ''[source]#

Variable definition qualifier

field variable_root_name: str [Required][source]#

Variable root name, e.g., ‘ta’

field vertical_label: str [Required][source]#

Vertical label, e.g., ‘p19’

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.License[source]#

Bases: PlainTermDataDescriptor

License that applies to the dataset

Examples: “CC-BY-4.0”, “CC0-1.0”

Licenses must be approved by the WIP & CMIP panel before they can be used in CMIP exercises.

Show JSON schema
{
   "title": "License",
   "description": "License that applies to the dataset\n\nExamples: \"CC-BY-4.0\", \"CC0-1.0\"\n\nLicenses must be approved by the WIP & CMIP panel\nbefore they can be used in CMIP exercises.",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "drs_name": {
         "title": "Drs Name",
         "type": "string"
      },
      "spdx_id": {
         "title": "Spdx Id",
         "type": "string"
      },
      "url": {
         "format": "uri",
         "maxLength": 2083,
         "minLength": 1,
         "title": "Url",
         "type": "string"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "drs_name",
      "spdx_id",
      "url"
   ]
}

field description: str = ''[source]#

The description of the term.

field drs_name: str [Required][source]#
field id: str [Required][source]#

The identifier of the terms.

field spdx_id: str [Required][source]#

SPDX license identifier (https://spdx.org/licenses/)

field type: str [Required][source]#

The data descriptor to which the term belongs.

field url: HttpUrl [Required][source]#

URL with details of the full license and other information

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.MemberId[source]#

Bases: CompositeTermDataDescriptor

The member_id uniquely identifies a specific model simulation within an experiment. It is created by combining the sub_experiment, which describes the setup or timing of the simulation (like a specific start year), and the variant_label, which details the configuration of the model (including initial conditions, physics, and forcings). Together, they form a code like s1960-r1i1p1f1. This allows users to distinguish between different ensemble members and understand how each run differs from others within the same experiment.

Show JSON schema
{
   "title": "MemberId",
   "description": "The member_id uniquely identifies a specific model simulation within an experiment. It is created by combining the sub_experiment, which describes the setup or timing of the simulation (like a specific start year), and the variant_label, which details the configuration of the model (including initial conditions, physics, and forcings). Together, they form a code like s1960-r1i1p1f1. This allows users to distinguish between different ensemble members and understand how each run differs from others within the same experiment.",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "separator": {
         "title": "Separator",
         "type": "string"
      },
      "parts": {
         "items": {
            "$ref": "#/$defs/CompositeTermPart"
         },
         "title": "Parts",
         "type": "array"
      }
   },
   "$defs": {
      "CompositeTermPart": {
         "additionalProperties": true,
         "description": "A reference to a term, part of a composite term.",
         "properties": {
            "id": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "items": {
                        "type": "string"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Id"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "is_required": {
               "title": "Is Required",
               "type": "boolean"
            }
         },
         "required": [
            "type",
            "is_required"
         ],
         "title": "CompositeTermPart",
         "type": "object"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "separator",
      "parts"
   ]
}

field description: str = ''[source]#

The description of the term.

field id: str [Required][source]#

The identifier of the terms.

field parts: list[CompositeTermPart] [Required][source]#

The components.

field separator: str [Required][source]#

The components separator character.

field type: str [Required][source]#

The data descriptor to which the term belongs.

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.MipEra[source]#

Bases: PlainTermDataDescriptor

Label that identifies the MIP era to which a dataset belongs

Examples: “CMIP6”, “CMIP7”

The MIP era is useful to distinguish among experiments performed during different CMIP phases but with differences in experimental protocol in each phase. For example, the “historical” experiments appear in multiple phases of CMIP but have different input forcings in each. This difference can be identified using the MIP era data descriptor.

Show JSON schema
{
   "title": "MipEra",
   "description": "Label that identifies the MIP era to which a dataset belongs\n\nExamples: \"CMIP6\", \"CMIP7\"\n\nThe MIP era is useful to distinguish among experiments performed during different CMIP phases\nbut with differences in experimental protocol in each phase.\nFor example, the \"historical\" experiments appear in multiple phases of CMIP\nbut have different input forcings in each.\nThis difference can be identified using the MIP era data descriptor.",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "drs_name": {
         "title": "Drs Name",
         "type": "string"
      },
      "url": {
         "format": "uri",
         "maxLength": 2083,
         "minLength": 1,
         "title": "Url",
         "type": "string"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "drs_name",
      "url"
   ]
}

field description: str = ''[source]#

The description of the term.

field drs_name: str [Required][source]#
field id: str [Required][source]#

The identifier of the terms.

field type: str [Required][source]#

The data descriptor to which the term belongs.

field url: HttpUrl [Required][source]#

URL that links to further information about the MIP era

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.Model[source]#

Bases: PlainTermDataDescriptor

Top-level model description (EMD v1.0 Section 2).

The following properties provide a top-level description of the model as a whole.

Show JSON schema
{
   "title": "Model",
   "description": "Top-level model description (EMD v1.0 Section 2).\n\nThe following properties provide a top-level description of the model as a whole.",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "description": "A scientific overview of the top-level model. The description should include a brief mention of all the components listed in the 7.1 component CV, whether dynamically simulated, prescribed, or omitted.",
         "minLength": 1,
         "title": "Description",
         "type": "string"
      },
      "drs_name": {
         "title": "Drs Name",
         "type": "string"
      },
      "name": {
         "description": "The name of the top-level model. For CMIP7, this name will be registered as the model's source_id.",
         "minLength": 1,
         "title": "Name",
         "type": "string"
      },
      "family": {
         "description": "The top-level model's 'family' name. Use 'none' to indicate that there is no such family.",
         "minLength": 1,
         "title": "Family",
         "type": "string"
      },
      "dynamic_components": {
         "description": "The model components that are dynamically simulated within the top-level model. Taken from 7.1 component CV.",
         "items": {
            "anyOf": [
               {
                  "type": "string"
               },
               {
                  "$ref": "#/$defs/ComponentType"
               }
            ]
         },
         "minItems": 1,
         "title": "Dynamic Components",
         "type": "array"
      },
      "prescribed_components": {
         "description": "The components that are represented in the top-level model with prescribed values. Taken from 7.1 component CV.",
         "items": {
            "anyOf": [
               {
                  "type": "string"
               },
               {
                  "$ref": "#/$defs/ComponentType"
               }
            ]
         },
         "title": "Prescribed Components",
         "type": "array"
      },
      "omitted_components": {
         "description": "The components that are wholly omitted from the top-level model. Taken from 7.1 component CV.",
         "items": {
            "anyOf": [
               {
                  "type": "string"
               },
               {
                  "$ref": "#/$defs/ComponentType"
               }
            ]
         },
         "title": "Omitted Components",
         "type": "array"
      },
      "calendar": {
         "description": "The calendar, or calendars, that define which dates are permitted in the top-level model. Taken from 7.2 calendar CV.",
         "items": {
            "anyOf": [
               {
                  "type": "string"
               },
               {
                  "$ref": "#/$defs/Calendar"
               }
            ]
         },
         "minItems": 1,
         "title": "Calendar",
         "type": "array"
      },
      "release_year": {
         "description": "The year in which the top-level model being documented was released, or first used for published simulations.",
         "maximum": 2100,
         "minimum": 1900,
         "title": "Release Year",
         "type": "integer"
      },
      "references": {
         "description": "One or more references to published work for the top-level model as a whole.",
         "items": {
            "anyOf": [
               {
                  "type": "string"
               },
               {
                  "$ref": "#/$defs/Reference"
               }
            ]
         },
         "minItems": 1,
         "title": "References",
         "type": "array"
      },
      "model_components": {
         "description": "The model components that dynamically simulate processes within the model.",
         "items": {
            "anyOf": [
               {
                  "type": "string"
               },
               {
                  "$ref": "#/$defs/EMDModelComponent"
               }
            ]
         },
         "title": "Model Components",
         "type": "array"
      }
   },
   "$defs": {
      "Arrangement": {
         "additionalProperties": true,
         "description": "Horizontal grid arrangement (EMD v1.0 Section 7.3).\n\nOptions: arakawa_a, arakawa_b, arakawa_c, arakawa_d, arakawa_e\n\nA grid arrangement describes the relative locations of mass- and velocity-related quantities\non the computed grid (for instance Collins et al. (2013), and for unstructured grids\nThuburn et al. (2009)).",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "description": {
               "default": "",
               "title": "Description",
               "type": "string"
            },
            "drs_name": {
               "title": "Drs Name",
               "type": "string"
            }
         },
         "required": [
            "id",
            "type",
            "drs_name"
         ],
         "title": "Arrangement",
         "type": "object"
      },
      "Calendar": {
         "additionalProperties": true,
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "description": {
               "default": "",
               "title": "Description",
               "type": "string"
            },
            "drs_name": {
               "title": "Drs Name",
               "type": "string"
            }
         },
         "required": [
            "id",
            "type",
            "drs_name"
         ],
         "title": "Calendar",
         "type": "object"
      },
      "CellVariableType": {
         "additionalProperties": true,
         "description": "Cell variable type (EMD v1.0 Section 7.4).\n\nOptions: mass, x_velocity, y_velocity, velocity\n\nTypes of physical variables that are carried at, or representative of conditions at,\ncells of a horizontal subgrid.",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "description": {
               "default": "",
               "title": "Description",
               "type": "string"
            },
            "drs_name": {
               "title": "Drs Name",
               "type": "string"
            }
         },
         "required": [
            "id",
            "type",
            "drs_name"
         ],
         "title": "CellVariableType",
         "type": "object"
      },
      "ComponentType": {
         "additionalProperties": true,
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "description": {
               "default": "",
               "title": "Description",
               "type": "string"
            },
            "drs_name": {
               "title": "Drs Name",
               "type": "string"
            }
         },
         "required": [
            "id",
            "type",
            "drs_name"
         ],
         "title": "ComponentType",
         "type": "object"
      },
      "Coordinate": {
         "additionalProperties": true,
         "description": "Native vertical grid coordinate type.\n\nThe coordinate types are all CF standard names (except where indicated)\nwith the same definitions. See section 5.2 Native vertical grid properties.\n\nOptions for the native vertical grid Coordinate property:\n\n* **none** - (Not a standard name) There is no vertical dimension.\n* **height** - Height is the vertical distance above the earth's surface.\n* **geopotential_height** - Geopotential height is the geopotential divided by the standard acceleration due to gravity.\n* **air_pressure** - Air pressure is the pressure that exists in the medium of air.\n* **air_potential_temperature** - Air potential temperature is the temperature a parcel of air would have if moved dry adiabatically to a standard pressure.\n* **atmosphere_ln_pressure_coordinate** - Parametric atmosphere natural log pressure coordinate.\n* **atmosphere_sigma_coordinate** - Parametric atmosphere sigma coordinate.\n* **atmosphere_hybrid_sigma_pressure_coordinate** - Parametric atmosphere hybrid sigma pressure coordinate.\n* **atmosphere_hybrid_height_coordinate** - Parametric atmosphere hybrid height coordinate.\n* **atmosphere_sleve_coordinate** - Parametric atmosphere smooth vertical level coordinate.\n* **depth** - Depth is the vertical distance below the earth's surface.\n* **sea_water_pressure** - Sea water pressure is the pressure that exists in the medium of sea water.\n* **sea_water_potential_temperature** - Sea water potential temperature is the temperature a parcel of sea water would have if moved adiabatically to sea level pressure.\n* **ocean_sigma_coordinate** - Parametric ocean sigma coordinate.\n* **ocean_s_coordinate** - Parametric ocean s-coordinate.\n* **ocean_s_coordinate_g1** - Parametric ocean s-coordinate, generic form 1.\n* **ocean_s_coordinate_g2** - Parametric ocean s-coordinate, generic form 2.\n* **ocean_sigma_z_coordinate** - Parametric ocean sigma over z coordinate.\n* **ocean_double_sigma_coordinate** - Parametric ocean double sigma coordinate.\n* **land_ice_sigma_coordinate** - Land ice (glaciers, ice-caps and ice-sheets resting on bedrock and also includes ice-shelves) sigma coordinate.\n* **z*** - (Not a standard name) The z* coordinate of Adcroft and Campin (2004).",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "description": {
               "default": "",
               "title": "Description",
               "type": "string"
            },
            "drs_name": {
               "title": "Drs Name",
               "type": "string"
            }
         },
         "required": [
            "id",
            "type",
            "drs_name"
         ],
         "title": "Coordinate",
         "type": "object"
      },
      "EMDModelComponent": {
         "additionalProperties": true,
         "description": "Model component description (EMD v1.0 Section 3).\n\nProperties that provide a description of individual model components.\n\nEight model components are defined that somewhat independently account for different\nsets of interactive processes: aerosol, atmosphere, atmospheric chemistry, land surface,\nland ice, ocean, ocean biogeochemistry, and sea ice.",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "description": {
               "description": "A scientific overview of the model component. The description should summarise the key processes simulated by the model component.",
               "minLength": 1,
               "title": "Description",
               "type": "string"
            },
            "drs_name": {
               "title": "Drs Name",
               "type": "string"
            },
            "component": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "$ref": "#/$defs/ComponentType"
                  }
               ],
               "description": "The type of the model component. Taken from 7.1 component CV.",
               "title": "Component"
            },
            "name": {
               "description": "The name of the model component.",
               "minLength": 1,
               "title": "Name",
               "type": "string"
            },
            "family": {
               "description": "The model component's 'family' name. Use 'none' to indicate that there is no such family.",
               "minLength": 1,
               "title": "Family",
               "type": "string"
            },
            "references": {
               "description": "One or more references to published work for the model component.",
               "items": {
                  "anyOf": [
                     {
                        "type": "string"
                     },
                     {
                        "$ref": "#/$defs/Reference"
                     }
                  ]
               },
               "minItems": 1,
               "title": "References",
               "type": "array"
            },
            "code_base": {
               "description": "A URL (preferably for a DOI) for the source code for the model component. Set to 'private' if not publicly available.",
               "minLength": 1,
               "title": "Code Base",
               "type": "string"
            },
            "embedded_in": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "$ref": "#/$defs/ComponentType"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The host model component (identified by its component property) in which this component is 'embedded'. Taken from 7.1 component CV. Omit when this component is coupled with other components.",
               "title": "Embedded In"
            },
            "coupled_with": {
               "anyOf": [
                  {
                     "items": {
                        "anyOf": [
                           {
                              "type": "string"
                           },
                           {
                              "$ref": "#/$defs/ComponentType"
                           }
                        ]
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The model components (identified by their component properties) with which this component is 'coupled'. Taken from 7.1 component CV. Omit when this component is embedded in another component.",
               "title": "Coupled With"
            },
            "horizontal_computational_grid": {
               "$ref": "#/$defs/HorizontalComputationalGrid",
               "description": "A standardised description of the model component's horizontal computational grid."
            },
            "vertical_computational_grid": {
               "$ref": "#/$defs/VerticalComputationalGrid",
               "description": "A standardised description of the model component's vertical computational grid."
            }
         },
         "required": [
            "id",
            "type",
            "description",
            "drs_name",
            "component",
            "name",
            "family",
            "references",
            "code_base",
            "horizontal_computational_grid",
            "vertical_computational_grid"
         ],
         "title": "EMDModelComponent",
         "type": "object"
      },
      "GridMapping": {
         "additionalProperties": true,
         "description": "Grid mapping (EMD v1.0 Section 7.7).\n\nOptions: latitude_longitude, lambert_conformal_conic, etc.\n\nThe name of the coordinate reference system of the horizontal coordinates.",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "description": {
               "default": "",
               "title": "Description",
               "type": "string"
            },
            "drs_name": {
               "title": "Drs Name",
               "type": "string"
            }
         },
         "required": [
            "id",
            "type",
            "drs_name"
         ],
         "title": "GridMapping",
         "type": "object"
      },
      "GridType": {
         "additionalProperties": true,
         "description": "Horizontal grid type (EMD v1.0 Section 7.6).\n\nOptions: regular_latitude_longitude, regular_gaussian, reduced_gaussian, tripolar, etc.\n\nA grid type describes the method for distributing grid points over the sphere.",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "description": {
               "default": "",
               "title": "Description",
               "type": "string"
            },
            "drs_name": {
               "title": "Drs Name",
               "type": "string"
            }
         },
         "required": [
            "id",
            "type",
            "drs_name"
         ],
         "title": "GridType",
         "type": "object"
      },
      "HorizontalComputationalGrid": {
         "additionalProperties": true,
         "description": "Horizontal computational grid description (EMD v1.0 Section 4.1.1).\n\nA model component's horizontal computational grid is composed of one or more\nhorizontal subgrids, on which different sets of variables are calculated.\nWhen the computational grid relies on more than one subgrid, it is referred to\nas a \"staggered\" grid. For most staggered grids, the velocity-related variables\nare calculated on a subgrid offset from the mass-related variables (e.g. pressure,\ntemperature, water vapour and other mass constituents).",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "description": {
               "default": "",
               "title": "Description",
               "type": "string"
            },
            "arrangement": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "$ref": "#/$defs/Arrangement"
                  }
               ],
               "description": "A characterisation of the grid staggering defining the relative positions of computed mass-related and velocity-related variables. Taken from 7.3 arrangement CV. Options: 'arakawa_a', 'arakawa_b', 'arakawa_c', 'arakawa_d', 'arakawa_e'. E.g. 'arakawa_c'",
               "title": "Arrangement"
            },
            "horizontal_subgrids": {
               "description": "All of the subgrids, of which there must be at least one, used to construct the horizontal computational grid. Each subgrid is associated with one or more variable types (mass-related, velocity-related, etc.), consistent with the arrangement property.",
               "items": {
                  "$ref": "#/$defs/HorizontalSubgrid"
               },
               "minItems": 1,
               "title": "Horizontal Subgrids",
               "type": "array"
            }
         },
         "required": [
            "id",
            "type",
            "arrangement",
            "horizontal_subgrids"
         ],
         "title": "HorizontalComputationalGrid",
         "type": "object"
      },
      "HorizontalGridCells": {
         "additionalProperties": true,
         "description": "Horizontal grid cells description (EMD v1.0 Section 4.1.3).\n\nHorizontal grid cells are described by a coordinate system, cell resolutions,\nas well as a number of other grid features. The description does not include\nany information on whether or not the grid cells form part of a model component's\ncomputational grid, and so may be used to describe an arbitrary output grid.",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "description": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "A description of the grid. A description is only required if there is information that is not covered by any of the other properties. Omit when not required.",
               "title": "Description"
            },
            "drs_name": {
               "title": "Drs Name",
               "type": "string"
            },
            "region": {
               "anyOf": [
                  {
                     "$ref": "#/$defs/Region"
                  },
                  {
                     "type": "string"
                  }
               ],
               "description": "The geographical region, or regions, over which the component is simulated. A region is a contiguous part of the Earth's surface, and may include areas for which no calculations are made (such as ocean areas for a land surface component). Taken from 7.5 region CV. E.g. 'global', 'antarctica', 'greenland', 'limited_area'",
               "title": "Region"
            },
            "grid_type": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "$ref": "#/$defs/GridType"
                  }
               ],
               "description": "The horizontal grid type, i.e. the method of distributing grid cells over the region. Taken from 7.6 grid_type CV. E.g. 'regular_latitude_longitude', 'tripolar'",
               "title": "Grid Type"
            },
            "grid_mapping": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "$ref": "#/$defs/GridMapping"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The name of the coordinate reference system of the horizontal coordinates. Taken from 7.7 grid_mapping CV. E.g. 'latitude_longitude', 'lambert_conformal_conic'. Can be None or empty for certain grid types (e.g., tripolar grids).",
               "title": "Grid Mapping"
            },
            "temporal_refinement": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "$ref": "#/$defs/TemporalRefinement"
                  }
               ],
               "description": "The grid temporal refinement, indicating how the distribution of grid cells varies with time. Taken from 7.8 temporal_refinement CV. E.g. 'static'",
               "title": "Temporal Refinement"
            },
            "spatial_refinement": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The grid spatial refinement, indicating how the distribution of grid cells varies with space. NEW in EMD v1.0. Omit when not applicable.",
               "title": "Spatial Refinement"
            },
            "x_resolution": {
               "anyOf": [
                  {
                     "exclusiveMinimum": 0,
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "\nThe size of grid cells in the X direction.\n\nCells for which no calculations are made are included (such as ocean areas\nfor a land surface component).\n\nThe X direction for a grid defined by spherical polar coordinates is longitude.\n\nThe value's physical units are given by the horizontal_units property.\n\nReport only when cell sizes are identical or else reasonably uniform (in their given units).\nWhen cells sizes in the X direction are not identical, a representative value should be\nprovided and this fact noted in the description property.\nIf the cell sizes vary by more than 25%, set this to None.\n",
               "title": "X Resolution"
            },
            "y_resolution": {
               "anyOf": [
                  {
                     "exclusiveMinimum": 0,
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "\nThe size of grid cells in the Y direction.\n\nCells for which no calculations are made are included (such as ocean areas\nfor a land surface component).\n\nThe Y direction for a grid defined by spherical polar coordinates is latitude.\n\nThe value's physical units are given by the horizontal_units property.\n\nReport only when cell sizes are identical or else reasonably uniform (in their given units).\nWhen cells sizes in the Y direction are not identical, a representative value should be\nprovided and this fact noted in the description property.\nIf the cell sizes vary by more than 25%, set this to None.\n",
               "title": "Y Resolution"
            },
            "horizontal_units": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "\nThe physical units of the x_resolution and y_resolution property values.\n\nIf x_resolution and y_resolution are None, set this to None.\n",
               "title": "Horizontal Units"
            },
            "southernmost_latitude": {
               "anyOf": [
                  {
                     "maximum": 90.0,
                     "minimum": -90.0,
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "\nThe southernmost grid cell latitude, in degrees north.\n\nCells for which no calculations are made are included.\nThe southernmost latitude may be shared by multiple cells.\n\nIf the southernmost latitude is not known (e.g. the grid is adaptive), use None.\n",
               "title": "Southernmost Latitude"
            },
            "westernmost_longitude": {
               "anyOf": [
                  {
                     "maximum": 360.0,
                     "minimum": 0.0,
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "\nThe westernmost grid cell longitude, in degrees east, of the southernmost grid cell(s).\n\nCells for which no calculations are made are included.\nThe westernmost longitude is the smallest longitude value of the cells\nthat share the latitude given by the southernmost_latitude.\n\nIf the westernmost longitude is not known (e.g. the grid is adaptive), use None.\n",
               "title": "Westernmost Longitude"
            },
            "n_cells": {
               "anyOf": [
                  {
                     "minimum": 1,
                     "type": "integer"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "\nThe total number of cells in the horizontal grid.\n\nIf the total number of grid cells is not constant, set to None.\n",
               "title": "N Cells"
            },
            "truncation_method": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "$ref": "#/$defs/TruncationMethod"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The method for truncating the spherical harmonic representation of a spectral model when reporting on this grid. If the grid is not used for reporting spherical harmonic representations, set to None.",
               "title": "Truncation Method"
            },
            "truncation_number": {
               "anyOf": [
                  {
                     "type": "integer"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The zonal (east-west) wave number at which a spectral model is truncated when reporting on this grid. If the grid is not used for reporting spectral models, set to None.",
               "title": "Truncation Number"
            },
            "resolution_range_km": {
               "anyOf": [
                  {
                     "items": {
                        "type": "number"
                     },
                     "maxItems": 2,
                     "minItems": 2,
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "\nThe minimum and maximum resolution (in km) of cells of the horizontal grid.\n\nShould be calculated according to the algorithm implemented by\nhttps://github.com/PCMDI/nominal_resolution/blob/master/lib/api.py\nYou need to take the min and max of the array that is returned\nwhen using the returnMaxDistance of the mean_resolution function.\n",
               "title": "Resolution Range Km"
            }
         },
         "required": [
            "id",
            "type",
            "drs_name",
            "region",
            "grid_type",
            "temporal_refinement"
         ],
         "title": "HorizontalGridCells",
         "type": "object"
      },
      "HorizontalSubgrid": {
         "additionalProperties": true,
         "description": "Horizontal subgrid description (EMD v1.0 Section 4.1.2).\n\nA horizontal subgrid describes the grid cells at one of the stagger positions\nof a horizontal computational grid. Often the locations of mass-related and\nvelocity-related variables differ, so more than one horizontal subgrid will\nbe defined as part of a horizontal computational grid.",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "description": {
               "default": "",
               "title": "Description",
               "type": "string"
            },
            "drs_name": {
               "title": "Drs Name",
               "type": "string"
            },
            "cell_variable_type": {
               "description": "The types of physical variables that are carried at, or representative of conditions at, the cells described by this horizontal subgrid. Taken from 7.4 cell_variable_type CV. Options: 'mass', 'x_velocity', 'y_velocity', 'velocity'. E.g. ['mass'], ['x_velocity'], ['mass', 'x_velocity', 'y_velocity'], ['mass', 'velocity']. Can be an empty list in certain cases.",
               "items": {
                  "anyOf": [
                     {
                        "type": "string"
                     },
                     {
                        "$ref": "#/$defs/CellVariableType"
                     }
                  ]
               },
               "title": "Cell Variable Type",
               "type": "array"
            },
            "horizontal_grid_cells": {
               "$ref": "#/$defs/HorizontalGridCells",
               "description": "A description of the characteristics and location of the grid cells of this subgrid."
            }
         },
         "required": [
            "id",
            "type",
            "drs_name",
            "horizontal_grid_cells"
         ],
         "title": "HorizontalSubgrid",
         "type": "object"
      },
      "Reference": {
         "additionalProperties": true,
         "description": "Academic reference to published work for the top-level model or model components.\n\nAn academic reference to published work for the top-level model or one of its model\ncomponents is defined by the following properties:\n\n* **Citation** - A human-readable citation for the work.\n  E.g. Smith, R. S., Mathiot, P., Siahaan, A., Lee, V., Cornford, S. L., Gregory, J. M.,\n  et al. (2021). Coupling the U.K. Earth System model to dynamic models of the Greenland\n  and Antarctic ice sheets. Journal of Advances in Modeling Earth Systems, 13,\n  e2021MS002520. https://doi.org/10.1029/2021MS002520, 2023\n\n* **DOI** - The persistent identifier (DOI) used to identify the work.\n  A DOI is required for all references. A reference that does not already have a DOI\n  (as could be the case for some technical reports, for instance) must be given one\n  (e.g. with a service like Zenodo).\n  E.g. https://doi.org/10.1029/2021MS002520",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "description": {
               "default": "",
               "title": "Description",
               "type": "string"
            },
            "drs_name": {
               "title": "Drs Name",
               "type": "string"
            },
            "citation": {
               "description": "A human-readable citation for the work.",
               "minLength": 1,
               "title": "Citation",
               "type": "string"
            },
            "doi": {
               "description": "The persistent identifier (DOI) used to identify the work. Must be a valid DOI URL.",
               "minLength": 1,
               "title": "Doi",
               "type": "string"
            }
         },
         "required": [
            "id",
            "type",
            "drs_name",
            "citation",
            "doi"
         ],
         "title": "Reference",
         "type": "object"
      },
      "Region": {
         "additionalProperties": true,
         "description": "Region associated with the dataset\n\nExamples: \"glb\", \"30s-90s\", \"grl\"\n\nIn other words, the domain over which the dataset is provided.\nThis is intended as a rough categorisation only\nand is not precisely defined.",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "description": {
               "default": "",
               "title": "Description",
               "type": "string"
            },
            "drs_name": {
               "title": "Drs Name",
               "type": "string"
            },
            "cf_standard_region": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "title": "Cf Standard Region"
            },
            "iso_region": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "title": "Iso Region"
            }
         },
         "required": [
            "id",
            "type",
            "drs_name",
            "cf_standard_region",
            "iso_region"
         ],
         "title": "Region",
         "type": "object"
      },
      "TemporalRefinement": {
         "additionalProperties": true,
         "description": "Temporal refinement (EMD v1.0 Section 7.8).\n\nOptions: static, etc.\n\nThe grid temporal refinement, indicating how the distribution of grid cells varies with time.",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "description": {
               "default": "",
               "title": "Description",
               "type": "string"
            },
            "drs_name": {
               "title": "Drs Name",
               "type": "string"
            }
         },
         "required": [
            "id",
            "type",
            "drs_name"
         ],
         "title": "TemporalRefinement",
         "type": "object"
      },
      "TruncationMethod": {
         "additionalProperties": true,
         "description": "Truncation method (EMD v1.0 Section 7.12).\n\nThe method for truncating the spherical harmonic representation of a spectral model.",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "description": {
               "default": "",
               "title": "Description",
               "type": "string"
            },
            "drs_name": {
               "title": "Drs Name",
               "type": "string"
            }
         },
         "required": [
            "id",
            "type",
            "drs_name"
         ],
         "title": "TruncationMethod",
         "type": "object"
      },
      "VerticalComputationalGrid": {
         "additionalProperties": true,
         "description": "Vertical computational grid description (EMD v1.0 Section 4.2).\n\nThe model component's vertical computational grid is described by a subset of the following properties.",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "description": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "A description of the vertical grid. A description is only required if there is information that is not covered by any of the other properties. Omit when not required.",
               "title": "Description"
            },
            "vertical_coordinate": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "$ref": "#/$defs/Coordinate"
                  }
               ],
               "description": "The coordinate type of the vertical grid. Taken from 7.11 vertical_coordinate CV. If there is no vertical grid, then the value 'none' must be selected.",
               "title": "Vertical Coordinate"
            },
            "n_z": {
               "anyOf": [
                  {
                     "minimum": 1,
                     "type": "integer"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The number of layers (i.e. grid cells) in the Z direction. Omit when not applicable or not constant. If the number of layers varies in time or across the horizontal grid, then the n_z_range property may be used instead.",
               "title": "N Z"
            },
            "n_z_range": {
               "anyOf": [
                  {
                     "items": {
                        "type": "integer"
                     },
                     "maxItems": 2,
                     "minItems": 2,
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The minimum and maximum number of layers for vertical grids with a time- or space-varying number of layers. Omit if the n_z property has been set.",
               "title": "N Z Range"
            },
            "bottom_layer_thickness": {
               "anyOf": [
                  {
                     "exclusiveMinimum": 0,
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The thickness of the bottom model layer (i.e. the layer closest to the centre of the Earth). The value should be reported as a dimensional (as opposed to parametric) quantity. All measurements are in metres (EMD v1.0).",
               "title": "Bottom Layer Thickness"
            },
            "top_layer_thickness": {
               "anyOf": [
                  {
                     "exclusiveMinimum": 0,
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The thickness of the top model layer (i.e. the layer furthest away from the centre of the Earth). The value should be reported as a dimensional (as opposed to parametric) quantity. All measurements are in metres (EMD v1.0).",
               "title": "Top Layer Thickness"
            },
            "top_of_model": {
               "anyOf": [
                  {
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The upper boundary of the top model layer (i.e. the upper boundary of the layer that is furthest away from the centre of the Earth). The value should be relative to the lower boundary of the bottom layer of the model, or an appropriate datum (such as mean sea level). All measurements are in metres (EMD v1.0).",
               "title": "Top Of Model"
            }
         },
         "required": [
            "id",
            "type",
            "vertical_coordinate"
         ],
         "title": "VerticalComputationalGrid",
         "type": "object"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "drs_name",
      "name",
      "family",
      "dynamic_components",
      "calendar",
      "release_year",
      "references",
      "model_components"
   ]
}

Validators:
  • validate_calendar_list » calendar

  • validate_component_lists » dynamic_components

  • validate_component_lists » omitted_components

  • validate_component_lists » prescribed_components

  • validate_non_empty_strings » description

  • validate_non_empty_strings » family

  • validate_non_empty_strings » name

  • validate_same_dynamic_components » model_components

field calendar: List[str | Calendar] [Required][source]#

The calendar, or calendars, that define which dates are permitted in the top-level model. Taken from 7.2 calendar CV.

Constraints:
  • min_length = 1

Validated by:
  • validate_calendar_list

field description: str = ''[source]#

The description of the term.

A scientific overview of the top-level model. The description should include a brief mention of all the components listed in the 7.1 component CV, whether dynamically simulated, prescribed, or omitted.

Constraints:
  • min_length = 1

Validated by:
  • validate_non_empty_strings

field drs_name: str [Required][source]#
field dynamic_components: List[str | ComponentType] [Required][source]#

The model components that are dynamically simulated within the top-level model. Taken from 7.1 component CV.

Constraints:
  • min_length = 1

Validated by:
  • validate_component_lists

field family: str [Required][source]#

The top-level model’s ‘family’ name. Use ‘none’ to indicate that there is no such family.

Constraints:
  • min_length = 1

Validated by:
  • validate_non_empty_strings

field id: str [Required][source]#

The identifier of the terms.

field model_components: List[str | EMDModelComponent] [Required][source]#

The model components that dynamically simulate processes within the model.

Validated by:
  • validate_same_dynamic_components

field name: str [Required][source]#

The name of the top-level model. For CMIP7, this name will be registered as the model’s source_id.

Constraints:
  • min_length = 1

Validated by:
  • validate_non_empty_strings

field omitted_components: List[str | ComponentType] [Optional][source]#

The components that are wholly omitted from the top-level model. Taken from 7.1 component CV.

Validated by:
  • validate_component_lists

field prescribed_components: List[str | ComponentType] [Optional][source]#

The components that are represented in the top-level model with prescribed values. Taken from 7.1 component CV.

Validated by:
  • validate_component_lists

field references: List[str | Reference] [Required][source]#

One or more references to published work for the top-level model as a whole.

Constraints:
  • min_length = 1

field release_year: int [Required][source]#

The year in which the top-level model being documented was released, or first used for published simulations.

Constraints:
  • ge = 1900

  • le = 2100

field type: str [Required][source]#

The data descriptor to which the term belongs.

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

validator validate_calendar_list  »  calendar[source]#

Validate calendar list contains valid strings or Calendar objects.

validator validate_component_lists  »  omitted_components, prescribed_components, dynamic_components[source]#

Validate component lists contain valid strings or ComponentType objects.

validator validate_non_empty_strings  »  family, description, name[source]#

Validate that string fields are not empty.

validator validate_same_dynamic_components  »  model_components[source]#

Validate that model_components has the same length as dynamic_components.

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.ModelComponent[source]#

Bases: PlainTermDataDescriptor

Model component

Examples: “AOGCM”, “AER”, “BGC”

These terms are intended to help with identifying required components for experiments or filtering models based on having common components. For example, an aerosol scheme or a circulation model or a biogeochemistry component. However, model component is only an approximate term, there is no precise definition of whether any given model has or does not have a given component.

Show JSON schema
{
   "title": "ModelComponent",
   "description": "Model component\n\nExamples: \"AOGCM\", \"AER\", \"BGC\"\n\nThese terms are intended to help with identifying required components for experiments\nor filtering models based on having common components.\nFor example, an aerosol scheme or a circulation model or a biogeochemistry component.\nHowever, model component is only an approximate term, there is no precise definition\nof whether any given model has or does not have a given component.",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "drs_name": {
         "title": "Drs Name",
         "type": "string"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "drs_name"
   ]
}

field description: str = ''[source]#

The description of the term.

field drs_name: str [Required][source]#
field id: str [Required][source]#

The identifier of the terms.

field type: str [Required][source]#

The data descriptor to which the term belongs.

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.NominalResolution[source]#

Bases: PlainTermDataDescriptor

Approximate horizontal resolution of a dataset

Examples: “1 km”, “250 km”, “500 km”

This should be calculated following the algorithm implemented by [PCMDI/nominal_resolution]() (although, of course, other implementations of the same algorithm could be used).

Show JSON schema
{
   "title": "NominalResolution",
   "description": "Approximate horizontal resolution of a dataset\n\nExamples: \"1 km\", \"250 km\", \"500 km\"\n\nThis should be calculated following the algorithm implemented by\n[https://github.com/PCMDI/nominal_resolution/blob/master/lib/api.py]()\n(although, of course, other implementations of the same algorithm could be used).",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "drs_name": {
         "title": "Drs Name",
         "type": "string"
      },
      "magnitude": {
         "title": "Magnitude",
         "type": "number"
      },
      "range": {
         "maxItems": 2,
         "minItems": 2,
         "prefixItems": [
            {
               "type": "number"
            },
            {
               "type": "number"
            }
         ],
         "title": "Range",
         "type": "array"
      },
      "units": {
         "title": "Units",
         "type": "string"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "drs_name",
      "magnitude",
      "range",
      "units"
   ]
}

Validators:
  • validate_range » range

field description: str = ''[source]#

The description of the term.

field drs_name: str [Required][source]#
field id: str [Required][source]#

The identifier of the terms.

field magnitude: float [Required][source]#

Magnitude of the nominal resolution

field range: tuple[float, float] [Required][source]#

Range of mean resolutions to which this nominal resolution applies

Validated by:
  • validate_range

field type: str [Required][source]#

The data descriptor to which the term belongs.

field units: str [Required][source]#

Units of the nominal resolution and range

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

validator validate_range  »  range[source]#

Validate that range has exactly 2 values and min <= max.

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.ObsType[source]#

Bases: PlainTermDataDescriptor

Show JSON schema
{
   "title": "ObsType",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "drs_name": {
         "title": "Drs Name",
         "type": "string"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "drs_name"
   ]
}

field description: str = ''[source]#

The description of the term.

field drs_name: str [Required][source]#
field id: str [Required][source]#

The identifier of the terms.

field type: str [Required][source]#

The data descriptor to which the term belongs.

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.Organisation[source]#

Bases: PlainTermDataDescriptor

A registered organisation

Examples: “IPSL”, “NCAR”, “CNRM-CERFACS”, “SOLARIS-HEPPA”

Show JSON schema
{
   "title": "Organisation",
   "description": "A registered organisation\n\nExamples: \"IPSL\", \"NCAR\", \"CNRM-CERFACS\", \"SOLARIS-HEPPA\"",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "drs_name": {
         "title": "Drs Name",
         "type": "string"
      },
      "members": {
         "items": {
            "anyOf": [
               {
                  "$ref": "#/$defs/Institution"
               },
               {
                  "type": "string"
               }
            ]
         },
         "title": "Members",
         "type": "array"
      }
   },
   "$defs": {
      "Institution": {
         "additionalProperties": true,
         "description": "A registered institution\n\nExamples: \"IPSL\", \"CR\", \"NCAR\", \"CNRM\"\n\nUnlike :py:class:`Organisation`, this can only refer to a single entity\n(institute, group, person).",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "description": {
               "default": "",
               "title": "Description",
               "type": "string"
            },
            "drs_name": {
               "title": "Drs Name",
               "type": "string"
            },
            "acronyms": {
               "items": {
                  "type": "string"
               },
               "title": "Acronyms",
               "type": "array"
            },
            "labels": {
               "items": {
                  "type": "string"
               },
               "title": "Labels",
               "type": "array"
            },
            "location": {
               "items": {
                  "$ref": "#/$defs/Location"
               },
               "title": "Location",
               "type": "array"
            },
            "ror": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "title": "Ror"
            },
            "urls": {
               "items": {
                  "format": "uri",
                  "maxLength": 2083,
                  "minLength": 1,
                  "type": "string"
               },
               "title": "Urls",
               "type": "array"
            }
         },
         "required": [
            "id",
            "type",
            "drs_name",
            "acronyms",
            "labels",
            "location",
            "ror",
            "urls"
         ],
         "title": "Institution",
         "type": "object"
      },
      "Location": {
         "description": "Location",
         "properties": {
            "city": {
               "title": "City",
               "type": "string"
            },
            "country": {
               "title": "Country",
               "type": "string"
            },
            "lat": {
               "maximum": 90.0,
               "minimum": -90.0,
               "title": "Lat",
               "type": "number"
            },
            "lon": {
               "maximum": 180.0,
               "minimum": -180.0,
               "title": "Lon",
               "type": "number"
            }
         },
         "required": [
            "city",
            "country",
            "lat",
            "lon"
         ],
         "title": "Location",
         "type": "object"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "drs_name",
      "members"
   ]
}

field description: str = ''[source]#

The description of the term.

field drs_name: str [Required][source]#
field id: str [Required][source]#

The identifier of the terms.

field members: list[Institution | str] [Required][source]#

Members associated with this organisation

field type: str [Required][source]#

The data descriptor to which the term belongs.

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.PatternTermDDex[source]#

Bases: PatternTermDataDescriptor

Show JSON schema
{
   "title": "PatternTermDDex",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "regex": {
         "title": "Regex",
         "type": "string"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "regex"
   ]
}

field description: str = ''[source]#

The description of the term.

field id: str [Required][source]#

The identifier of the terms.

field regex: str [Required][source]#

The regular expression.

field type: str [Required][source]#

The data descriptor to which the term belongs.

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.PhysicsIndex[source]#

Bases: PatternTermDataDescriptor

Label that identifies the physics variant used to produce a dataset

Examples: “p1”, “p2”, “p20”

This label can be used, for example, to distinguish between two simulations, one using a model’s ‘default physics’ and another using a model’s ‘other physics scheme’, which might yield information about how differences in physics within the model affects the simulation. The value has no intrinsic meaning within the CVs. However, in other external sources (to be confirmed which) the meaning of this physics label for a given simulation can be looked up.

Show JSON schema
{
   "title": "PhysicsIndex",
   "description": "Label that identifies the physics variant used to produce a dataset\n\nExamples: \"p1\", \"p2\", \"p20\"\n\nThis label can be used, for example, to distinguish between two simulations,\none using a model's 'default physics'\nand another using a model's 'other physics scheme',\nwhich might yield information about how differences in physics within the model affects the simulation.\nThe value has no intrinsic meaning within the CVs.\nHowever, in other external sources (to be confirmed which)\nthe meaning of this physics label for a given simulation can be looked up.",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "regex": {
         "title": "Regex",
         "type": "string"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "regex"
   ]
}

field description: str = ''[source]#

The description of the term.

field id: str [Required][source]#

The identifier of the terms.

field regex: str [Required][source]#

The regular expression.

field type: str [Required][source]#

The data descriptor to which the term belongs.

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.PlainTermDDex[source]#

Bases: PlainTermDataDescriptor

Show JSON schema
{
   "title": "PlainTermDDex",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "drs_name": {
         "title": "Drs Name",
         "type": "string"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "drs_name"
   ]
}

field description: str = ''[source]#

The description of the term.

field drs_name: str [Required][source]#
field id: str [Required][source]#

The identifier of the terms.

field type: str [Required][source]#

The data descriptor to which the term belongs.

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.Product[source]#

Bases: PlainTermDataDescriptor

Identifier of the data category

Examples: “model-output”, “observations”, derived”

This is not a precisely defined data descriptor, rather an approximate labelling.

Show JSON schema
{
   "title": "Product",
   "description": "Identifier of the data category\n\nExamples: \"model-output\", \"observations\", derived\"\n\nThis is not a precisely defined data descriptor,\nrather an approximate labelling.",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "drs_name": {
         "title": "Drs Name",
         "type": "string"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "drs_name"
   ]
}

field description: str = ''[source]#

The description of the term.

field drs_name: str [Required][source]#
field id: str [Required][source]#

The identifier of the terms.

field type: str [Required][source]#

The data descriptor to which the term belongs.

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.PublicationStatus[source]#

Bases: PlainTermDataDescriptor

Show JSON schema
{
   "title": "PublicationStatus",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "drs_name": {
         "title": "Drs Name",
         "type": "string"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "drs_name"
   ]
}

field description: str = ''[source]#

The description of the term.

field drs_name: str [Required][source]#
field id: str [Required][source]#

The identifier of the terms.

field type: str [Required][source]#

The data descriptor to which the term belongs.

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.RealizationIndex[source]#

Bases: PatternTermDataDescriptor

Label that identifies the realisation variant used to produce a dataset

Examples: “r1”, “r2”, “r23”

This label can be used to distinguish between two simulations that are equally likely but differ only due to stochastic variations. These differences can be purely stochastic (i.e. arising simply from stochastic variations when re-running the same simulation, even keeping all other conditions the same) or arise from differences in initial conditions e.g. starting/branching from different points in a control run/parent experiment. The value has no intrinsic meaning within the CVs. However, in other external sources (to be confirmed which) the meaning of this realisation label for a given simulation can be looked up.

Show JSON schema
{
   "title": "RealizationIndex",
   "description": "Label that identifies the realisation variant used to produce a dataset\n\nExamples: \"r1\", \"r2\", \"r23\"\n\nThis label can be used to distinguish between two simulations\nthat are equally likely but differ only due to stochastic variations.\nThese differences can be purely stochastic\n(i.e. arising simply from stochastic variations when re-running the same simulation,\neven keeping all other conditions the same)\nor arise from differences in initial conditions\ne.g. starting/branching from different points in a control run/parent experiment.\nThe value has no intrinsic meaning within the CVs.\nHowever, in other external sources (to be confirmed which)\nthe meaning of this realisation label for a given simulation can be looked up.",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "regex": {
         "title": "Regex",
         "type": "string"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "regex"
   ]
}

field description: str = ''[source]#

The description of the term.

field id: str [Required][source]#

The identifier of the terms.

field regex: str [Required][source]#

The regular expression.

field type: str [Required][source]#

The data descriptor to which the term belongs.

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.Realm[source]#

Bases: PlainTermDataDescriptor

Realm associated with the dataset

Examples: “atmos”, “land”, “ocean”, “atmosChem”

This is intended as a rough categorisation only and is not precisely defined.

Show JSON schema
{
   "title": "Realm",
   "description": "Realm associated with the dataset\n\nExamples: \"atmos\", \"land\", \"ocean\", \"atmosChem\"\n\nThis is intended as a rough categorisation only\nand is not precisely defined.",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "drs_name": {
         "title": "Drs Name",
         "type": "string"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "drs_name"
   ]
}

field description: str = ''[source]#

The description of the term.

field drs_name: str [Required][source]#
field id: str [Required][source]#

The identifier of the terms.

field type: str [Required][source]#

The data descriptor to which the term belongs.

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.Reference[source]#

Bases: PlainTermDataDescriptor

Academic reference to published work for the top-level model or model components.

An academic reference to published work for the top-level model or one of its model components is defined by the following properties:

  • Citation - A human-readable citation for the work. E.g. Smith, R. S., Mathiot, P., Siahaan, A., Lee, V., Cornford, S. L., Gregory, J. M., et al. (2021). Coupling the U.K. Earth System model to dynamic models of the Greenland and Antarctic ice sheets. Journal of Advances in Modeling Earth Systems, 13, e2021MS002520. https://doi.org/10.1029/2021MS002520, 2023

  • DOI - The persistent identifier (DOI) used to identify the work. A DOI is required for all references. A reference that does not already have a DOI (as could be the case for some technical reports, for instance) must be given one (e.g. with a service like Zenodo). E.g. https://doi.org/10.1029/2021MS002520

Show JSON schema
{
   "title": "Reference",
   "description": "Academic reference to published work for the top-level model or model components.\n\nAn academic reference to published work for the top-level model or one of its model\ncomponents is defined by the following properties:\n\n* **Citation** - A human-readable citation for the work.\n  E.g. Smith, R. S., Mathiot, P., Siahaan, A., Lee, V., Cornford, S. L., Gregory, J. M.,\n  et al. (2021). Coupling the U.K. Earth System model to dynamic models of the Greenland\n  and Antarctic ice sheets. Journal of Advances in Modeling Earth Systems, 13,\n  e2021MS002520. https://doi.org/10.1029/2021MS002520, 2023\n\n* **DOI** - The persistent identifier (DOI) used to identify the work.\n  A DOI is required for all references. A reference that does not already have a DOI\n  (as could be the case for some technical reports, for instance) must be given one\n  (e.g. with a service like Zenodo).\n  E.g. https://doi.org/10.1029/2021MS002520",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "drs_name": {
         "title": "Drs Name",
         "type": "string"
      },
      "citation": {
         "description": "A human-readable citation for the work.",
         "minLength": 1,
         "title": "Citation",
         "type": "string"
      },
      "doi": {
         "description": "The persistent identifier (DOI) used to identify the work. Must be a valid DOI URL.",
         "minLength": 1,
         "title": "Doi",
         "type": "string"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "drs_name",
      "citation",
      "doi"
   ]
}

Validators:
  • validate_citation » citation

  • validate_doi » doi

field citation: str [Required][source]#

A human-readable citation for the work.

Constraints:
  • min_length = 1

Validated by:
  • validate_citation

field description: str = ''[source]#

The description of the term.

field doi: str [Required][source]#

The persistent identifier (DOI) used to identify the work. Must be a valid DOI URL.

Constraints:
  • min_length = 1

Validated by:
  • validate_doi

field drs_name: str [Required][source]#
field id: str [Required][source]#

The identifier of the terms.

field type: str [Required][source]#

The data descriptor to which the term belongs.

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

validator validate_citation  »  citation[source]#

Validate that citation is not empty.

validator validate_doi  »  doi[source]#

Validate that DOI follows proper format (accepts proxies like doi-org.insu.bib…).

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.Regex[source]#

Bases: PatternTermDataDescriptor

Show JSON schema
{
   "title": "Regex",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "regex": {
         "title": "Regex",
         "type": "string"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "regex"
   ]
}

field description: str = ''[source]#

The description of the term.

field id: str [Required][source]#

The identifier of the terms.

field regex: str [Required][source]#

The regular expression.

field type: str [Required][source]#

The data descriptor to which the term belongs.

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.Region[source]#

Bases: PlainTermDataDescriptor

Region associated with the dataset

Examples: “glb”, “30s-90s”, “grl”

In other words, the domain over which the dataset is provided. This is intended as a rough categorisation only and is not precisely defined.

Show JSON schema
{
   "title": "Region",
   "description": "Region associated with the dataset\n\nExamples: \"glb\", \"30s-90s\", \"grl\"\n\nIn other words, the domain over which the dataset is provided.\nThis is intended as a rough categorisation only\nand is not precisely defined.",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "drs_name": {
         "title": "Drs Name",
         "type": "string"
      },
      "cf_standard_region": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "title": "Cf Standard Region"
      },
      "iso_region": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "title": "Iso Region"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "drs_name",
      "cf_standard_region",
      "iso_region"
   ]
}

field cf_standard_region: str | None [Required][source]#

CF standard region

See https://cfconventions.org/Data/standardized-region-list/standardized-region-list.current.html

If None, there is no CF standard region for this region

field description: str = ''[source]#

The description of the term.

field drs_name: str [Required][source]#
field id: str [Required][source]#

The identifier of the terms.

field iso_region: str | None [Required][source]#

ISO 3166-1 alpha-3 region code

See https://www.iso.org/iso-3166-country-codes.html

If None, there is no ISO region code for this region

field type: str [Required][source]#

The data descriptor to which the term belongs.

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.Resolution[source]#

Bases: PlainTermDataDescriptor

Show JSON schema
{
   "title": "Resolution",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "drs_name": {
         "title": "Drs Name",
         "type": "string"
      },
      "value": {
         "title": "Value",
         "type": "string"
      },
      "name": {
         "title": "Name",
         "type": "string"
      },
      "unit": {
         "title": "Unit",
         "type": "string"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "drs_name",
      "value",
      "name",
      "unit"
   ]
}

field description: str = ''[source]#

The description of the term.

field drs_name: str [Required][source]#
field id: str [Required][source]#

The identifier of the terms.

field name: str [Required][source]#
field type: str [Required][source]#

The data descriptor to which the term belongs.

field unit: str [Required][source]#
field value: str [Required][source]#
accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.SourceType[source]#

Bases: PlainTermDataDescriptor

Show JSON schema
{
   "title": "SourceType",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "drs_name": {
         "title": "Drs Name",
         "type": "string"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "drs_name"
   ]
}

field description: str = ''[source]#

The description of the term.

field drs_name: str [Required][source]#
field id: str [Required][source]#

The identifier of the terms.

field type: str [Required][source]#

The data descriptor to which the term belongs.

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.SubExperiment[source]#

Bases: PlainTermDataDescriptor

Show JSON schema
{
   "title": "SubExperiment",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "drs_name": {
         "title": "Drs Name",
         "type": "string"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "drs_name"
   ]
}

field description: str = ''[source]#

The description of the term.

field drs_name: str [Required][source]#
field id: str [Required][source]#

The identifier of the terms.

field type: str [Required][source]#

The data descriptor to which the term belongs.

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.Table[source]#

Bases: PlainTermDataDescriptor

Show JSON schema
{
   "title": "Table",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "drs_name": {
         "title": "Drs Name",
         "type": "string"
      },
      "product": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "title": "Product"
      },
      "table_date": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "title": "Table Date"
      },
      "variable_entry": {
         "items": {
            "type": "string"
         },
         "title": "Variable Entry",
         "type": "array"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "drs_name",
      "product",
      "table_date"
   ]
}

Validators:
  • normalize_variable_entry » variable_entry

field description: str = ''[source]#

The description of the term.

field drs_name: str [Required][source]#
field id: str [Required][source]#

The identifier of the terms.

field product: str | None [Required][source]#
field table_date: str | None [Required][source]#
field type: str [Required][source]#

The data descriptor to which the term belongs.

field variable_entry: list[str] [Optional][source]#
Validated by:
  • normalize_variable_entry

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

validator normalize_variable_entry  »  variable_entry[source]#

Normalize variable_entry to ensure all items are strings. If items are dicts (resolved references), extract the ‘id’ field.

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.TemporalLabel[source]#

Bases: PlainTermDataDescriptor

Label that describes a specific temporal sampling approach

Examples: “tavg”, “tpt”, “tclm”

This is set to “ti” (“time-independent”) when the data has no time axis. For underlying details and logic, please see [Taylor et al., 2025](https://docs.google.com/document/d/19jzecgymgiiEsTDzaaqeLP6pTvLT-NzCMaq-wu-QoOc/edit?pli=1&tab=t.0).

This label is used as the area component of a branded variable’s suffix (see BrandedSuffix).

Show JSON schema
{
   "title": "TemporalLabel",
   "description": "Label that describes a specific temporal sampling approach\n\nExamples: \"tavg\", \"tpt\", \"tclm\"\n\nThis is set to \"ti\" (\"time-independent\") when the data has no time axis.\nFor underlying details and logic, please see\n[Taylor et al., 2025](https://docs.google.com/document/d/19jzecgymgiiEsTDzaaqeLP6pTvLT-NzCMaq-wu-QoOc/edit?pli=1&tab=t.0).\n\nThis label is used as the area component of a branded variable's suffix\n(see :py:class:`BrandedSuffix`).",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "drs_name": {
         "title": "Drs Name",
         "type": "string"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "drs_name"
   ]
}

field description: str = ''[source]#

The description of the term.

field drs_name: str [Required][source]#
field id: str [Required][source]#

The identifier of the terms.

field type: str [Required][source]#

The data descriptor to which the term belongs.

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.TemporalRefinement[source]#

Bases: PlainTermDataDescriptor

Temporal refinement (EMD v1.0 Section 7.8).

Options: static, etc.

The grid temporal refinement, indicating how the distribution of grid cells varies with time.

Show JSON schema
{
   "title": "TemporalRefinement",
   "description": "Temporal refinement (EMD v1.0 Section 7.8).\n\nOptions: static, etc.\n\nThe grid temporal refinement, indicating how the distribution of grid cells varies with time.",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "drs_name": {
         "title": "Drs Name",
         "type": "string"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "drs_name"
   ]
}

field description: str = ''[source]#

The description of the term.

field drs_name: str [Required][source]#
field id: str [Required][source]#

The identifier of the terms.

field type: str [Required][source]#

The data descriptor to which the term belongs.

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.TimeRange[source]#

Bases: PatternTermDataDescriptor

Time range spanned by the data

Examples: “185001-202112”, “18500101-20211231”, “203101010130-203112312230”, “185001-186412-clim”

The right choice of time range is tightly coupled to the frequency of the data. This coupling is not captured within the CVs. (It is hopefully enforced elsewhere e.g. in QAQC workflows.)

Show JSON schema
{
   "title": "TimeRange",
   "description": "Time range spanned by the data\n\nExamples: \"185001-202112\", \"18500101-20211231\", \"203101010130-203112312230\", \"185001-186412-clim\"\n\nThe right choice of time range is tightly coupled to the frequency of the data.\nThis coupling is not captured within the CVs.\n(It is hopefully enforced elsewhere e.g. in QAQC workflows.)",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "regex": {
         "title": "Regex",
         "type": "string"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "regex"
   ]
}

field description: str = ''[source]#

The description of the term.

field id: str [Required][source]#

The identifier of the terms.

field regex: str [Required][source]#

The regular expression.

field type: str [Required][source]#

The data descriptor to which the term belongs.

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.Title[source]#

Bases: PatternTermDataDescriptor

Show JSON schema
{
   "title": "Title",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "regex": {
         "title": "Regex",
         "type": "string"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "regex"
   ]
}

field description: str = ''[source]#

The description of the term.

field id: str [Required][source]#

The identifier of the terms.

field regex: str [Required][source]#

The regular expression.

field type: str [Required][source]#

The data descriptor to which the term belongs.

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.TrackingId[source]#

Bases: PatternTermDataDescriptor

Tracking ID, i.e. unique ID, of a file

Examples: “hdl:21.14107/f6635404-8a1a-4aa9-918d-3792e8321f04”,

hdl:21.14100/718ee427-4efb-46a8-9f89-8192593b15fe

This data descriptor applies only at the file level, not to datasets as a whole (each file in a dataset gets a unique ID).

The regex is of the form hdl:<prefix>/<uuid>, where <prefix> is a prefix which is the same for all files in the same ‘group’ and <uuid> is a universally unique ID (UUID).

The ‘group’ is a bit loosely defined and can be defined in different ways for different purposes. For CMIP phases, the ‘group’ is usually the CMIP phase i.e. all files that are part of the same CMIP phase use the same tracking ID prefix (e.g. all CMIP6 files have the same prefix, all CMIP7 files have the same prefix). (Also note that some projects haven’t really got this right, e.g. the input4MIPs project has re-used the CMIP6 prefix, rather than using its own.)

The prefixes come from [handle.net](https://www.handle.net/index.html). [handle.net](https://www.handle.net/index.html) prefixes are allotted to different CMIP (or other project) exercises. These prefixes are used by the [handle.net](https://www.handle.net/index.html) service to group all the entries for the given exercise together. These prefixes allow a) each file to have a unique ID and b) users to look up entries for all files using their unique ID via the [handle.net](https://www.handle.net/index.html) service. The prefixes are currently managed and registered by DKRZ on behalf of the ESGF team (we think, it’s not 100% clear).

The last part of the tracking ID is a UUID. The specification of a UUID is defined elsewhere (apparently in ISO/IEC 9834-8:2014). A new UUID must be generated for every single file such that every file has a unique tracking id (this uniqueness is both within a project thanks to the differing UUIDs and across projects thanks to the differing prefixes). Most programming languages have native support for UUID generation (e.g. the uuid library is part of Python’s standard library). For a standalone solution, the OSSP utility is available. It can be accessed from http://www.ossp.org/pkg/lib/uuid/. Since CMIP6, version 4 UUIDs (random number based) have been required.

The tracking IDs are used by a PID service so that users can find further information about the file by going to hdl.handle.net/<tracking_id_after_the_hdl_colon_prefix_is_removed> e.g. hdl.handle.net/21.14107/f6635404-8a1a-4aa9-918d-3792e8321f04 (a working link from CMIP6 for those who would like to see a live demonstration is [hdl.handle.net/21.14100/f2f502c9-9626-31c6-b016-3f7c0534803b](), which was inferred from a file in which the tracking ID is hdl:21.14100/f2f502c9-9626-31c6-b016-3f7c0534803b). (Or at least this link with handle.net is the intention. It hasn’t always happened e.g this is not the case for all CMIP7 input4MIPs files.)

Show JSON schema
{
   "title": "TrackingId",
   "description": "Tracking ID, i.e. unique ID, of a file\n\nExamples: \"hdl:21.14107/f6635404-8a1a-4aa9-918d-3792e8321f04\",\n          \"hdl:21.14100/718ee427-4efb-46a8-9f89-8192593b15fe\"\n\nThis data descriptor applies only at the file level,\nnot to datasets as a whole (each file in a dataset gets a unique ID).\n\nThe regex is of the form `hdl:<prefix>/<uuid>`,\nwhere `<prefix>` is a prefix which is the same for all files in the same 'group'\nand `<uuid>` is a universally unique ID (UUID).\n\nThe 'group' is a bit loosely defined and can be defined in different ways\nfor different purposes.\nFor CMIP phases, the 'group' is usually the CMIP phase\ni.e. all files that are part of the same CMIP phase use the same tracking ID prefix\n(e.g. all CMIP6 files have the same prefix, all CMIP7 files have the same prefix).\n(Also note that some projects haven't really got this right,\ne.g. the input4MIPs project has re-used the CMIP6 prefix, rather than using its own.)\n\nThe prefixes come from [handle.net](https://www.handle.net/index.html).\n[handle.net](https://www.handle.net/index.html) prefixes\nare allotted to different CMIP (or other project) exercises.\nThese prefixes are used by the\n[handle.net](https://www.handle.net/index.html)\nservice to group all the entries for the given exercise together.\nThese prefixes allow a) each file to have a unique ID\nand b) users to look up entries for all files using their unique ID\nvia the [handle.net](https://www.handle.net/index.html) service.\nThe prefixes are currently managed and registered by DKRZ\non behalf of the ESGF team (we think, it's not 100% clear).\n\nThe last part of the tracking ID is a UUID.\nThe specification of a UUID is defined elsewhere\n(apparently in ISO/IEC 9834-8:2014).\nA new UUID must be generated for every single file\nsuch that every file has a unique tracking id\n(this uniqueness is both within a project thanks to the differing UUIDs\nand across projects thanks to the differing prefixes).\nMost programming languages have native support for UUID generation\n(e.g. the `uuid` library is part of Python's standard library).\nFor a standalone solution, the OSSP utility is available.\nIt can be accessed from http://www.ossp.org/pkg/lib/uuid/.\nSince CMIP6, version 4 UUIDs (random number based) have been required.\n\nThe tracking IDs are\nused by a PID service\nso that users can find further information about the file\nby going to `hdl.handle.net/<tracking_id_after_the_hdl_colon_prefix_is_removed>`\ne.g. `hdl.handle.net/21.14107/f6635404-8a1a-4aa9-918d-3792e8321f04`\n(a working link from CMIP6 for those who would like to see a live demonstration is\n[hdl.handle.net/21.14100/f2f502c9-9626-31c6-b016-3f7c0534803b](),\nwhich was inferred from a file in which the tracking ID is\n`hdl:21.14100/f2f502c9-9626-31c6-b016-3f7c0534803b`).\n(Or at least this link with handle.net is the intention.\nIt hasn't always happened\ne.g this is not the case for all CMIP7 input4MIPs files.)",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "regex": {
         "title": "Regex",
         "type": "string"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "regex"
   ]
}

field description: str = ''[source]#

The description of the term.

field id: str [Required][source]#

The identifier of the terms.

field regex: str [Required][source]#

The regular expression.

field type: str [Required][source]#

The data descriptor to which the term belongs.

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.TruncationMethod[source]#

Bases: PlainTermDataDescriptor

Truncation method (EMD v1.0 Section 7.12).

The method for truncating the spherical harmonic representation of a spectral model.

Show JSON schema
{
   "title": "TruncationMethod",
   "description": "Truncation method (EMD v1.0 Section 7.12).\n\nThe method for truncating the spherical harmonic representation of a spectral model.",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "drs_name": {
         "title": "Drs Name",
         "type": "string"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "drs_name"
   ]
}

field description: str = ''[source]#

The description of the term.

field drs_name: str [Required][source]#
field id: str [Required][source]#

The identifier of the terms.

field type: str [Required][source]#

The data descriptor to which the term belongs.

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.Variable[source]#

Bases: PlainTermDataDescriptor

A climate-related quantity or measurement.

Examples: “tas”, “pr”, “psl”, “rlut”

These quantities represent key physical, chemical or biological properties of the Earth system and can be the result of direct observation of the climate system or simulations. Variables cover a range of aspects of the climate system, such as temperature, precipitation, sea level, radiation, or atmospheric composition. Some more information for variables that have been used in CMIP:

  • tas: Near-surface air temperature (measured at 2 meters above the surface)

  • pr: Precipitation

  • psl: Sea-level pressure

  • zg: Geopotential height

  • rlut: Top-of-atmosphere longwave radiation

  • siconc: Sea-ice concentration

  • co2: Atmospheric CO2 concentration

Since CMIP7, the concept of a variable has been augmented with the idea of ‘branding’, leading to the idea of a ‘branded variable’. For details, see BrandedVariable.

Sometimes ‘variable’ is also referred to as ‘root name’ or ‘out name’. There is mostly a one to one mapping between CF standard names and variables. However, this is not always possible so please don’t assume this is always the case.

Show JSON schema
{
   "title": "Variable",
   "description": "A climate-related quantity or measurement.\n\nExamples: \"tas\", \"pr\", \"psl\", \"rlut\"\n\nThese quantities represent key physical, chemical or biological properties of the Earth system\nand can be the result of direct observation of the climate system or simulations.\nVariables cover a range of aspects of the climate system,\nsuch as temperature, precipitation, sea level, radiation, or atmospheric composition.\nSome more information for variables that have been used in CMIP:\n\n- *tas*: Near-surface air temperature (measured at 2 meters above the surface)\n- *pr*: Precipitation\n- *psl*: Sea-level pressure\n- *zg*: Geopotential height\n- *rlut*: Top-of-atmosphere longwave radiation\n- *siconc*: Sea-ice concentration\n- *co2*: Atmospheric CO2 concentration\n\nSince CMIP7, the concept of a variable has been augmented with the idea of 'branding',\nleading to the idea of a 'branded variable'.\nFor details, see :py:class:`BrandedVariable`.\n\nSometimes 'variable' is also referred to as 'root name' or 'out name'.\nThere is mostly a one to one mapping between CF standard names and variables.\nHowever, this is not always possible so please don't assume this is always the case.",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "drs_name": {
         "title": "Drs Name",
         "type": "string"
      },
      "long_name": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "title": "Long Name"
      },
      "standard_name": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "title": "Standard Name"
      },
      "units": {
         "title": "Units",
         "type": "string"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "drs_name",
      "long_name",
      "standard_name",
      "units"
   ]
}

field description: str = ''[source]#

The description of the term.

field drs_name: str [Required][source]#
field id: str [Required][source]#

The identifier of the terms.

field long_name: str | None [Required][source]#

Long name of the variable

This is free text and can take any value

field standard_name: str | None [Required][source]#

Standard name of the variable

The standard names are defined by the CF-conventions.

If None, this variable has no standard name according to the CF-conventions.

field type: str [Required][source]#

The data descriptor to which the term belongs.

field units: str [Required][source]#

Units of the variable

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.VariantLabel[source]#

Bases: PatternTermDataDescriptor

The variant which provides information about how a dataset was created

Examples: “r1i1p1f1”, “r2i2p2f1”, “r1i198001p1f1”, “r1i198001ap1f1”, “r1i199001bp1f1”

Really, this should be a composite term. However, as there is no separator between the parts, it has to be a pattern term (at least at the moment).

As of the latest round of CMIP, the variant label is usually composed of the following components:

  1. RealizationIndex

  2. InitializationIndex

  3. PhysicsIndex

  4. ForcingIndex

Show JSON schema
{
   "title": "VariantLabel",
   "description": "The variant which provides information about how a dataset was created\n\nExamples: \"r1i1p1f1\", \"r2i2p2f1\", \"r1i198001p1f1\", \"r1i198001ap1f1\", \"r1i199001bp1f1\"\n\nReally, this should be a composite term.\nHowever, as there is no separator between the parts, it has to be a pattern term\n(at least at the moment).\n\nAs of the latest round of CMIP,\nthe variant label is usually composed of the following components:\n\n#. :py:class:`RealizationIndex`\n#. :py:class:`InitializationIndex`\n#. :py:class:`PhysicsIndex`\n#. :py:class:`ForcingIndex`",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "regex": {
         "title": "Regex",
         "type": "string"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "regex"
   ]
}

field description: str = ''[source]#

The description of the term.

field id: str [Required][source]#

The identifier of the terms.

field regex: str [Required][source]#

The regular expression.

field type: str [Required][source]#

The data descriptor to which the term belongs.

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.VerticalComputationalGrid[source]#

Bases: DataDescriptor

Vertical computational grid description (EMD v1.0 Section 4.2).

The model component’s vertical computational grid is described by a subset of the following properties.

Show JSON schema
{
   "title": "VerticalComputationalGrid",
   "description": "Vertical computational grid description (EMD v1.0 Section 4.2).\n\nThe model component's vertical computational grid is described by a subset of the following properties.",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "description": "A description of the vertical grid. A description is only required if there is information that is not covered by any of the other properties. Omit when not required.",
         "title": "Description"
      },
      "vertical_coordinate": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "$ref": "#/$defs/Coordinate"
            }
         ],
         "description": "The coordinate type of the vertical grid. Taken from 7.11 vertical_coordinate CV. If there is no vertical grid, then the value 'none' must be selected.",
         "title": "Vertical Coordinate"
      },
      "n_z": {
         "anyOf": [
            {
               "minimum": 1,
               "type": "integer"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "description": "The number of layers (i.e. grid cells) in the Z direction. Omit when not applicable or not constant. If the number of layers varies in time or across the horizontal grid, then the n_z_range property may be used instead.",
         "title": "N Z"
      },
      "n_z_range": {
         "anyOf": [
            {
               "items": {
                  "type": "integer"
               },
               "maxItems": 2,
               "minItems": 2,
               "type": "array"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "description": "The minimum and maximum number of layers for vertical grids with a time- or space-varying number of layers. Omit if the n_z property has been set.",
         "title": "N Z Range"
      },
      "bottom_layer_thickness": {
         "anyOf": [
            {
               "exclusiveMinimum": 0,
               "type": "number"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "description": "The thickness of the bottom model layer (i.e. the layer closest to the centre of the Earth). The value should be reported as a dimensional (as opposed to parametric) quantity. All measurements are in metres (EMD v1.0).",
         "title": "Bottom Layer Thickness"
      },
      "top_layer_thickness": {
         "anyOf": [
            {
               "exclusiveMinimum": 0,
               "type": "number"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "description": "The thickness of the top model layer (i.e. the layer furthest away from the centre of the Earth). The value should be reported as a dimensional (as opposed to parametric) quantity. All measurements are in metres (EMD v1.0).",
         "title": "Top Layer Thickness"
      },
      "top_of_model": {
         "anyOf": [
            {
               "type": "number"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "description": "The upper boundary of the top model layer (i.e. the upper boundary of the layer that is furthest away from the centre of the Earth). The value should be relative to the lower boundary of the bottom layer of the model, or an appropriate datum (such as mean sea level). All measurements are in metres (EMD v1.0).",
         "title": "Top Of Model"
      }
   },
   "$defs": {
      "Coordinate": {
         "additionalProperties": true,
         "description": "Native vertical grid coordinate type.\n\nThe coordinate types are all CF standard names (except where indicated)\nwith the same definitions. See section 5.2 Native vertical grid properties.\n\nOptions for the native vertical grid Coordinate property:\n\n* **none** - (Not a standard name) There is no vertical dimension.\n* **height** - Height is the vertical distance above the earth's surface.\n* **geopotential_height** - Geopotential height is the geopotential divided by the standard acceleration due to gravity.\n* **air_pressure** - Air pressure is the pressure that exists in the medium of air.\n* **air_potential_temperature** - Air potential temperature is the temperature a parcel of air would have if moved dry adiabatically to a standard pressure.\n* **atmosphere_ln_pressure_coordinate** - Parametric atmosphere natural log pressure coordinate.\n* **atmosphere_sigma_coordinate** - Parametric atmosphere sigma coordinate.\n* **atmosphere_hybrid_sigma_pressure_coordinate** - Parametric atmosphere hybrid sigma pressure coordinate.\n* **atmosphere_hybrid_height_coordinate** - Parametric atmosphere hybrid height coordinate.\n* **atmosphere_sleve_coordinate** - Parametric atmosphere smooth vertical level coordinate.\n* **depth** - Depth is the vertical distance below the earth's surface.\n* **sea_water_pressure** - Sea water pressure is the pressure that exists in the medium of sea water.\n* **sea_water_potential_temperature** - Sea water potential temperature is the temperature a parcel of sea water would have if moved adiabatically to sea level pressure.\n* **ocean_sigma_coordinate** - Parametric ocean sigma coordinate.\n* **ocean_s_coordinate** - Parametric ocean s-coordinate.\n* **ocean_s_coordinate_g1** - Parametric ocean s-coordinate, generic form 1.\n* **ocean_s_coordinate_g2** - Parametric ocean s-coordinate, generic form 2.\n* **ocean_sigma_z_coordinate** - Parametric ocean sigma over z coordinate.\n* **ocean_double_sigma_coordinate** - Parametric ocean double sigma coordinate.\n* **land_ice_sigma_coordinate** - Land ice (glaciers, ice-caps and ice-sheets resting on bedrock and also includes ice-shelves) sigma coordinate.\n* **z*** - (Not a standard name) The z* coordinate of Adcroft and Campin (2004).",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "description": {
               "default": "",
               "title": "Description",
               "type": "string"
            },
            "drs_name": {
               "title": "Drs Name",
               "type": "string"
            }
         },
         "required": [
            "id",
            "type",
            "drs_name"
         ],
         "title": "Coordinate",
         "type": "object"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "vertical_coordinate"
   ]
}

Validators:
  • validate_n_z_exclusivity » n_z

  • validate_n_z_range » n_z_range

  • validate_vertical_coordinate » vertical_coordinate

field bottom_layer_thickness: float | None = None[source]#

The thickness of the bottom model layer (i.e. the layer closest to the centre of the Earth). The value should be reported as a dimensional (as opposed to parametric) quantity. All measurements are in metres (EMD v1.0).

Constraints:
  • gt = 0

field description: str | None = None[source]#

The description of the term.

A description of the vertical grid. A description is only required if there is information that is not covered by any of the other properties. Omit when not required.

field id: str [Required][source]#

The identifier of the terms.

field n_z: int | None = None[source]#

The number of layers (i.e. grid cells) in the Z direction. Omit when not applicable or not constant. If the number of layers varies in time or across the horizontal grid, then the n_z_range property may be used instead.

Constraints:
  • ge = 1

Validated by:
  • validate_n_z_exclusivity

field n_z_range: List[int] | None = None[source]#

The minimum and maximum number of layers for vertical grids with a time- or space-varying number of layers. Omit if the n_z property has been set.

Constraints:
  • min_length = 2

  • max_length = 2

Validated by:
  • validate_n_z_range

field top_layer_thickness: float | None = None[source]#

The thickness of the top model layer (i.e. the layer furthest away from the centre of the Earth). The value should be reported as a dimensional (as opposed to parametric) quantity. All measurements are in metres (EMD v1.0).

Constraints:
  • gt = 0

field top_of_model: float | None = None[source]#

The upper boundary of the top model layer (i.e. the upper boundary of the layer that is furthest away from the centre of the Earth). The value should be relative to the lower boundary of the bottom layer of the model, or an appropriate datum (such as mean sea level). All measurements are in metres (EMD v1.0).

field type: str [Required][source]#

The data descriptor to which the term belongs.

field vertical_coordinate: str | Coordinate [Required][source]#

The coordinate type of the vertical grid. Taken from 7.11 vertical_coordinate CV. If there is no vertical grid, then the value ‘none’ must be selected.

Validated by:
  • validate_vertical_coordinate

accept(visitor)[source]#

Accept a data descriptor visitor.

validator validate_n_z_exclusivity  »  n_z[source]#

Validate that n_z and n_z_range are mutually exclusive.

validator validate_n_z_range  »  n_z_range[source]#

Validate that n_z_range has exactly 2 values and min <= max.

validator validate_vertical_coordinate  »  vertical_coordinate[source]#

Validate that vertical_coordinate is not empty if it’s a string.

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.VerticalCoordinate[source]#

Bases: PlainTermDataDescriptor

Show JSON schema
{
   "title": "VerticalCoordinate",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "drs_name": {
         "title": "Drs Name",
         "type": "string"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "drs_name"
   ]
}

field description: str = ''[source]#

The description of the term.

field drs_name: str [Required][source]#
field id: str [Required][source]#

The identifier of the terms.

field type: str [Required][source]#

The data descriptor to which the term belongs.

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.VerticalLabel[source]#

Bases: PlainTermDataDescriptor

Label that describes a specific vertical sampling approach

Examples: “h2m”, “200hPa”, “p19”

This is set to “u” (“unspecified”) when the data has no vertical dimension. For underlying details and logic, please see [Taylor et al., 2025](https://docs.google.com/document/d/19jzecgymgiiEsTDzaaqeLP6pTvLT-NzCMaq-wu-QoOc/edit?pli=1&tab=t.0).

This label is used as the area component of a branded variable’s suffix (see BrandedSuffix).

Show JSON schema
{
   "title": "VerticalLabel",
   "description": "Label that describes a specific vertical sampling approach\n\nExamples: \"h2m\", \"200hPa\", \"p19\"\n\nThis is set to \"u\" (\"unspecified\") when the data has no vertical dimension.\nFor underlying details and logic, please see\n[Taylor et al., 2025](https://docs.google.com/document/d/19jzecgymgiiEsTDzaaqeLP6pTvLT-NzCMaq-wu-QoOc/edit?pli=1&tab=t.0).\n\nThis label is used as the area component of a branded variable's suffix\n(see :py:class:`BrandedSuffix`).",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "drs_name": {
         "title": "Drs Name",
         "type": "string"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "drs_name"
   ]
}

field description: str = ''[source]#

The description of the term.

field drs_name: str [Required][source]#
field id: str [Required][source]#

The identifier of the terms.

field type: str [Required][source]#

The data descriptor to which the term belongs.

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.VerticalUnits[source]#

Bases: PlainTermDataDescriptor

Vertical units CV (7.14 vertical_units CV).

Physical units of vertical grid thickness and position values. Options include: m, Pa, K

Show JSON schema
{
   "title": "VerticalUnits",
   "description": "Vertical units CV (7.14 vertical_units CV).\n\nPhysical units of vertical grid thickness and position values.\nOptions include: m, Pa, K",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "drs_name": {
         "title": "Drs Name",
         "type": "string"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "drs_name"
   ]
}

field description: str = ''[source]#

The description of the term.

field drs_name: str [Required][source]#
field id: str [Required][source]#

The identifier of the terms.

field type: str [Required][source]#

The data descriptor to which the term belongs.

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#

Generic classes#

Pydantic model esgvoc.api.data_descriptors.data_descriptor.CompositeTermDataDescriptor[source]#

Bases: DataDescriptor

A data descriptor that describes terms composed of other terms.

Show JSON schema
{
   "title": "CompositeTermDataDescriptor",
   "description": "A data descriptor that describes terms composed of other terms.",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "separator": {
         "title": "Separator",
         "type": "string"
      },
      "parts": {
         "items": {
            "$ref": "#/$defs/CompositeTermPart"
         },
         "title": "Parts",
         "type": "array"
      }
   },
   "$defs": {
      "CompositeTermPart": {
         "additionalProperties": true,
         "description": "A reference to a term, part of a composite term.",
         "properties": {
            "id": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "items": {
                        "type": "string"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Id"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "is_required": {
               "title": "Is Required",
               "type": "boolean"
            }
         },
         "required": [
            "type",
            "is_required"
         ],
         "title": "CompositeTermPart",
         "type": "object"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "separator",
      "parts"
   ]
}

field description: str = ''[source]#

The description of the term.

field id: str [Required][source]#

The identifier of the terms.

field parts: list[CompositeTermPart] [Required][source]#

The components.

field separator: str [Required][source]#

The components separator character.

field type: str [Required][source]#

The data descriptor to which the term belongs.

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.data_descriptor.CompositeTermPart[source]#

Bases: ConfiguredBaseModel

A reference to a term, part of a composite term.

Show JSON schema
{
   "title": "CompositeTermPart",
   "description": "A reference to a term, part of a composite term.",
   "type": "object",
   "properties": {
      "id": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "items": {
                  "type": "string"
               },
               "type": "array"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "title": "Id"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "is_required": {
         "title": "Is Required",
         "type": "boolean"
      }
   },
   "additionalProperties": true,
   "required": [
      "type",
      "is_required"
   ]
}

field id: str | list[str] | None = None[source]#

The id of the referenced term.

field is_required: bool [Required][source]#

Denote if the term is optional as part of a composite term.

field type: str [Required][source]#

The type of the referenced term.

Pydantic model esgvoc.api.data_descriptors.data_descriptor.ConfiguredBaseModel[source]#

Bases: BaseModel

Show JSON schema
{
   "title": "ConfiguredBaseModel",
   "type": "object",
   "properties": {},
   "additionalProperties": true
}

Pydantic model esgvoc.api.data_descriptors.data_descriptor.DataDescriptor[source]#

Bases: ConfiguredBaseModel, ABC

Generic class for the data descriptor classes.

Show JSON schema
{
   "title": "DataDescriptor",
   "description": "Generic class for the data descriptor classes.",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type"
   ]
}

field description: str = ''[source]#

The description of the term.

field id: str [Required][source]#

The identifier of the terms.

field type: str [Required][source]#

The data descriptor to which the term belongs.

abstract accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.data_descriptor.DataDescriptorSubSet[source]#

Bases: DataDescriptor

A sub set of the information contains in a term. When using selected_term_fields, only id is guaranteed to be present. Other fields (type, description) may be None if not selected.

Show JSON schema
{
   "title": "DataDescriptorSubSet",
   "description": "A sub set of the information contains in a term.\nWhen using selected_term_fields, only id is guaranteed to be present.\nOther fields (type, description) may be None if not selected.",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "title": "Type"
      },
      "description": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "title": "Description"
      }
   },
   "additionalProperties": true,
   "required": [
      "id"
   ]
}

field description: str | None = None[source]#

The description of the term (optional in subset).

field id: str [Required][source]#

The identifier of the terms.

field type: str | None = None[source]#

The data descriptor to which the term belongs (optional in subset).

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

serialize_model(serializer: Any) dict[str, Any][source]#

Custom serializer that only includes fields that actually exist on the instance. This prevents Pydantic warnings when fields are removed via delattr(). Uses ‘wrap’ mode to override default serialization behavior completely.

MANDATORY_TERM_FIELDS: ClassVar[tuple[str]] = ('id',)[source]#

The set of mandatory term fields (only id is guaranteed when using selected_term_fields).

property describe[source]#
class esgvoc.api.data_descriptors.data_descriptor.DataDescriptorVisitor(*args, **kwargs)[source]#

Bases: Protocol

The specifications for a term visitor.

visit_composite_term(term: CompositeTermDataDescriptor) Any[source]#

Visit a composite term.

visit_pattern_term(term: PatternTermDataDescriptor) Any[source]#

Visit a pattern term.

visit_plain_term(term: PlainTermDataDescriptor) Any[source]#

Visit a plain term.

visit_sub_set_term(term: DataDescriptorSubSet) Any[source]#

Visit a sub set of the information of a term.

Pydantic model esgvoc.api.data_descriptors.data_descriptor.PatternTermDataDescriptor[source]#

Bases: DataDescriptor

A data descriptor that describes terms defined by a regular expression.

Show JSON schema
{
   "title": "PatternTermDataDescriptor",
   "description": "A data descriptor that describes terms defined by a regular expression.",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "regex": {
         "title": "Regex",
         "type": "string"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "regex"
   ]
}

field description: str = ''[source]#

The description of the term.

field id: str [Required][source]#

The identifier of the terms.

field regex: str [Required][source]#

The regular expression.

field type: str [Required][source]#

The data descriptor to which the term belongs.

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#
Pydantic model esgvoc.api.data_descriptors.data_descriptor.PlainTermDataDescriptor[source]#

Bases: DataDescriptor

A data descriptor that describes hand written terms.

Show JSON schema
{
   "title": "PlainTermDataDescriptor",
   "description": "A data descriptor that describes hand written terms.",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "string"
      },
      "type": {
         "title": "Type",
         "type": "string"
      },
      "description": {
         "default": "",
         "title": "Description",
         "type": "string"
      },
      "drs_name": {
         "title": "Drs Name",
         "type": "string"
      }
   },
   "additionalProperties": true,
   "required": [
      "id",
      "type",
      "drs_name"
   ]
}

field description: str = ''[source]#

The description of the term.

field drs_name: str [Required][source]#
field id: str [Required][source]#

The identifier of the terms.

field type: str [Required][source]#

The data descriptor to which the term belongs.

accept(visitor: DataDescriptorVisitor) Any[source]#

Accept an term visitor.

Parameters:

visitor (DataDescriptorVisitor) – The term visitor.

Returns:

Depending on the visitor.

Return type:

Any

property describe[source]#