World Meteorological Organization

Date: 2026-09-26

Version: 1.99.dev1

Document status: DRAFT

Document location: https://wmo-im.github.io/wmdr2/standard/wmdr2-DRAFT.html

WMO publication location: TODO

Task Team on WIGOS Metadata (TT-WIGOSMD)[1]

Expert Team on Metadata Standards (ET-Metadata)[2]

Standing Committee on Information Management and Technology (SC-IMT)[3]

Commission for Observation, Infrastructure and Information Systems (INFCOM)[4]

Copyright © 2026 World Meteorological Organization (WMO)

Table of Contents

i. Abstract

TODO opening overview.

This document defines the content, structure, and encoding for the WIGOS Metadata Representation (WMDR). This standard is a profile and extension of the OGC API - Records standard [5].

TODO high level scope, 1 sentence.

WMDR documents shall be encoded in GeoJSON (RFC 7946 [6]) as defined in this specification and shall be made available as HTTP crawlable files or via API provisioning as defined by OGC API - Records.

Weather/climate/water data is by nature geospatial and temporal. The W3C Data on the Web Best Practices [7] and Spatial Data on the Web Best Practices [8] publications provide guidelines on how to best enable spatiotemporal data to lower the barrier for users, search engine optimization, and linked data. This also aligns with the FAIR data principles (Findable, Accessible, Interoperable, Reusable) [9].

ii. Keywords

The following are keywords to be used by search engines and document catalogues.

wmo, wigos, station, observing facility, observations, instrument, weather, climate, water, metadata, search

iii. Security Considerations

Based on the WMO Unified Data Policy for the International Exchange of Earth System Data (Resolution 1 (Cg-Ext(2021) [10], exchanged data are classified as core or recommended. Core data is considered fully open and unrestricted with no security considerations. Recommended data may have access control defined.

No additional security considerations have been made for this standard.

1. Scope

This document defines the content, structure, and encoding of discovery metadata published as part of the WIGOS Global Observing Facility Catalogue (GOFC).

The WIGOS Metadata Representation (WMDR) standard defined herein is an extension of the International Standard OGC API - Records - Part 1: Core.

WMDR observing facility metadata records shall be encoded as GeoJSON as defined in OGC API - Records - Part 1: Core.

The primary purpose of WMDR is to describe stations, or observing facilities. Services and APIs operating on resources are represented as part of discovery metadata via links to WIS2 discovery metadata (WCMP2).

WMDR observing facility metadata record provides descriptions at the granularity level of a station, or observing facilty. Dataset discovery metadata are supported by the Manual on the WMO Information System, Volume II - WMO Information System 2.0 [11].

This specification defines the conformance requirements for the WIGOS Metadata Representation. Annex A defines the abstract test suite. Annex B provides normative information on schemas. Annex C provides informative examples. Annex D provides informative codelists.

2. Conformance

Conformance with this standard shall be checked using the tests specified in Annex A (normative) of this document.

OGC API - Records (OARec) provides a record metadata model in support of resource discovery. This standard is an extension of OGC API - Records - Part 1: Core. Conformance to this standard requires demonstrated conformance to the applicable Conformance Classes of OGC API - Records - Part 1: Core.

Authors of observing facility metadata records published within the WIGOS Global Observing Facility Catalogue (GOFC) are required to comply with the WIGOS Metadata Representation (WMDR). WMDR observing facility metadata shall therefore be compliant with OGC API - Records - Part 1: Core: Requirements Class: Record Core.

WMO shall publish guidance material to assist authors of WMDR observing facility metadata for maintaining consistency across multiple metadata records and perform quality assessment and reporting.

This standard identifies one Requirements Class which defines the functional requirements.

The mandatory Requirements Class for WMDR is:

  • "WIGOS Metadata Representation Core": This Requirements Class inherits from OGC API — Records — Part 1: Core: Requirements Class: Record Core which defines the requirements for a catalogue record. The requirements specified in the Requirements Class “Record Core" are mandatory for all implementations of WMDR. The requirements are specified in Chapter 7 and in Annex A in more detail.

3. References

  • OGC: OGC 20-004, OGC API - Records - Part 1: Core 1.0 (2023) [12]

  • OGC: OGC 17-069r, OGC API - Features - Part 1: Core 1.0 (2022) [13]

  • IETF: RFC-7946 The GeoJSON Format (2016) [14]

  • IETF: RFC-8259 The JavaScript Object Notation (JSON) Data Interchange Format (2017) [15]

  • W3C/OGC: Spatial Data on the Web Best Practices, W3C Working Group Note (2017) [16]

  • W3C: Data on the Web Best Practices, W3C Recommendation (2017) [17]

  • W3C: Data Catalog Vocabulary, W3C Recommendation (2014) [18]

  • IANA: Link Relation Types (2020) [19]

  • IANA: Media Types (2023) [20]

  • Linux Foundation: SPDX License List (2021) [21]

  • IETF: JSON Schema (2022) [22]

  • Manual on the WMO Information System, Volume II - WMO Information System 2.0 (2025) [23]

4. Terms and definitions

This document uses the terms defined in OGC Policy Directive 49, which is based on the ISO/IEC Directives, Part 2, Rules for the structure and drafting of International Standards. In particular, the word “SHALL” (not “must”) is the verb form used to indicate a requirement to be strictly followed to conform to this Standard and OGC documents do not use the equivalent phrases in the ISO/IEC Directives, Part 2.

This document also uses terms defined in the OGC Standard for Modular specifications (OGC 08-131r3), also known as the 'ModSpec'. The definitions of terms such as standard, specification, requirement, and conformance test are provided in the ModSpec.

The following additional terms and definitions also apply.

4.1. Abbreviated terms

Table 1. Symbols and abbreviated terms
Abbreviation Term

API

Application Programming Interface

ARK

Archival Resource Key

DCAT

Data Catalog Vocabulary

DCPC

Data Collection and Production Centres

DOI

Digital Object Identifier

GDC

Global Discovery Catalogue

GIS

Geographic Information System

GISC

Global Information System Centre

GOFC

Global Observing Facility Catalogue

HTML

Hypertext Markup Language

HTTP

Hypertext Transfer Protocol

HTTPS

Hypertext Transfer Protocol Secure

IANA

Internet Assigned Numbers Authority

IETF

Internet Engineering Task Force

ISO

International Organization for Standardization

JSON

JavaScript Object Notation

MIME

Multipurpose Internet Mail Extensions

MQTT

Message Queuing Telemetry Transport

NC

National Centre

NWP

Numerical Weather Prediction

OARec

OGC API - Records

OGC

Open Geospatial Consortium

OSCAR

Observing Systems Capability Analysis and Review Tool

REST

Representational State Transfer

ROA

Resource-oriented architecture

S3

Simple Storage Service

SEO

Search engine optimization

SOA

Service-oriented architecture

URI

Uniform Resource Identifier

URL

Uniform Resource Locator

W3C

World Wide Web Consortium

WCMP

WMO Core Metadata Profile

WIGOS

WMO Integrated Global Observing System

WIS

WMO Information System

WMDR

WIGOS Metadata Representation

WMO

World Meteorological Organization

WSI

WIGOS Station Identifier

XML

eXtensible Markup Language

5. Conventions

This section provides details and examples for any conventions used in the document. Examples of conventions are symbols, abbreviations, use of JSON schema, or special notes regarding how to read the document.

5.1. Identifiers

The normative provisions in this Standard are denoted by the URI:

All requirements and conformance tests that appear in this document are denoted by partial URIs which are relative to this base.

5.2. Examples

Examples provided in this specification are encoded as GeoJSON.

Complete examples can be found at https://schemas.wmo.int/wmdr/2.0.0/examples

5.3. Schemas

5.4. Schema representation

JSON Schema [24] objects are used throughout this standard to define the structure of metadata records. These schema objects are also typically represented using YAML [25].

YAML is a superset of JSON, and in this standard are regarded as equivalent.

Metadata record instances are always represented as JSON.

5.4.1. Properties

A JSON property represents a key-value pair, where the key is the name of the property and the value is a standard JSON data type.

"myPropertyName": "test123"

5.5. Use of HTTPS

For simplicity, this document only refers to the HTTP protocol. This is not meant to exclude the use of HTTPS and simply is a shorthand notation for "HTTP or HTTPS." In fact, most servers are expected to use HTTPS, not HTTP.

6. Introduction

6.1. Overview

TODO

6.1.1. WIGOS

TODO

6.1.2. Observing facility metadata design considerations

The following describes envisioned workflows of WMDR in the context of observing facility metadata publication and search.

  • Flexible metadata publishing mechanisms so providers can publish observing facility metadata in the easiest and most efficient way possible.

  • Basic, HTTP crawlable metadata files (filesystem, object storage). For example, publishing observing facility metadata as JSON files to an S3 bucket, and then making that bucket available for harvesting and traversal to search engines and metadata harvesters.

  • The browser as the catalogue. Browsers utilize mass market search engines as the gateway to low barrier discovery. This pattern may work by way of the WIGOS Global Observing Facility Catalogue, with the idea that search engines can index from the authoritative source.

6.1.3. Granularity

TODO

6.2. User stories

TODO

6.3. OGC API - Records - Part 1: Core

The OGC Records - API - Part 1: Core specification:

  • lowers the discovery barrier to finding the existence of geospatial resources on the Web

  • provides the ability for discovery metadata to be published via API machinery (searchable catalogue) or static records (crawlable catalogue)

  • provides a core record model for information communities to extend

  • provides a subset of core queryables (e.g. by resource type, by external identifier) which enables federation and cross catalogue discovery functionality

6.4. The WIGOS Global Observing Facility Catalogue (GOFC)

The GOFC will provide a central search endpoint, enabling users to traverse, browse and search observing facility metadata holdings in OSCAR. Key search predicate capabilities include:

  • geospatial (bbox=)

  • temporal (time instant or time period) (datetime=)

  • equality predicates (i.e. property=value) for any defined discovery metadata property

  • full-text (q=)

Given the WIS2 principles, use cases, OGC API - Records - Part 1: Core, and the WIGOS Global Observing Facility Catalogue, WMDR provides a standards-based, clear and well-defined information model to facilitate the management and discovery of data within WIGOS.

6.5. Mass market considerations

Given WIS2 principle 10 (publishing metadata in a way that commercial search engines can index), WMDR observing facility metadata enables annotations that can facilitate Search Engine Optimization (SEO) and structured data discovery, search, and relevant results.

7. WIGOS Metadata Representation (Version 2)

WIGOS Metadata Representation (WMDR) is an extension of the OGC API – Records standard and shall be encoded in GeoJSON. The normative provisions in WMDR (version 2) are denoted by the base URI (http://wigos.wmo.int/spec/wmdr/2) and requirements are denoted by partial URIs relative to this base. Property names, values and examples are represented with shaded text in this document.

7.1. Requirements Class "Core"

URI

http://wigos.wmo.int/spec/wmdr/2/req/core

Target type

Observing facility metadata

Dependency

The JavaScript Object Notation (JSON) Data Interchange Format (IETF RFC8259 (2017))

Dependency

JSON Schema (2022)

Dependency

The GeoJSON Format (IETF: RFC-7946 (2016))

Dependency

OGC API - Features - Part 1: Core corrigendum (OGC: OGC 17-069r)

Preconditions

The record conforms to the Requirements Class “Record Core” of OGC API - Records - Part 1: Core

7.1.1. Overview

The table below provides an overview of the set of properties that may be included in a WMDR.

Table 2. Table. WMDR core properties
Property Requirement Description

id

Required

A unique identifier of the station/platform (see TODO)

type

Required

A fixed value denoting the WMDR as a GeoJSON Feature (see TODO)

conformsTo

Required

The version of WMDR associated to which the record conforms (see TODO)

geometry

Required

Geospatial location associated with the dataset, in a geographic coordinate reference system (see TODO)

properties.type

Required

Record type (fixed to facility)

properties.externalIds

Optional

Persistent identifiers or handles for the dataset (see TODO)

properties.created

Required

The date that the WMDR was created (see TODO)

properties.updated

Optional

The date that the WMDR was updated (see TODO)

properties.contacts

Required

Contact information for the dataset (see TODO)

7.1.2. WIGOS Metadata Representation representation

A WMDR can be represented in various ways internally, in WIGOS systems and software tools, but its external representation is GeoJSON.

Recommendation 1

/rec/core/media_type

A

The media type assigned to a WMDR, when transported through a protocol that supports it, SHOULD be application/geo+json.

7.1.3. Validation

The WMDR schema is based on the Requirements Class "Record Core" of OGC API – Records – Part 1: Core schema and the associated information model. WMDRs compliant with the WMDR schema are therefore compliant with the OGC API – Records record schema.

Requirement 1

/req/core/validation

A

Each WMDR SHALL validate without error against the WMDR schema.

B

Each WMDR SHALL provide id (see TODO), type (see TODO), geometry (see TODO) and properties (see, for example, TODO) for GeoJSON compliance.

C

The type property SHALL be set to a fixed value of Feature for GeoJSON compliance.

7.1.4. Identifier

The id property is a unique identifier of the dataset. A record identifier is essential for querying and identifying records within the Global Observing Facility Catalogue (GOFC).

Example
"id": "urn:wmo:md:ca-eccc-msc:observations.swob"

Requirement 2

/req/core/identifier

A

A WMDR SHALL provide an identifier via the id property.

B

The id property SHALL be a WIGOS Station Identifier (WSI).

7.1.5. Conformance

The conformsTo property identifies the version of the WMDR standard to which the metadata record conforms. Conformance identification is valuable for version detection and handling of content.

Example
"conformsTo": [
  "http://wigos.wmo.int/spec/wmdr/2/conf/core"
]

Requirement 3

/req/core/conformance

A

A WMDR SHALL provide information on conformance via the OGC API – Records (OARec) record conformsTo property.

B

The conformsTo property SHALL advertise conformance to WMDR.

7.1.6. Geospatial extent

The geometry property is the location of the station/platform in the geographic coordinate system. , and provides a useful indicator of the location of the station/platform to facilitate search and map displays in the GOFC.

Examples:
"geometry": {
  "type": "Polygon",
  "coordinates": [[
    [-142.23, 28.03],
    [-142.23, 82.56],
    [-52.16, 82.56],
    [-52.16, 28.03],
    [-142.23, 28.03]
  ]]
}
"geometry": {
  "type": "Point",
  "coordinates": [-79.38, 43.65]
}
"geometry": null

Requirement 4

/req/core/extent_geospatial

A

A WMDR SHALL provide one geometry property to convey the geospatial properties of a dataset using a geographic coordinate reference system (World Geodetic System 1984 [WGS 84]) and longitude and latitude decimal degree units.

B

The geometry coordinates SHALL be integer or float data types.

C

The geometry property SHALL provide the value of null when geometry cannot be derived.

Recommendation 2

/rec/core/extent_geospatial_point

A

For datasets based on a geometry without a calculated area (for example, a single station point), a WMDR SHOULD provide the GeoJSON geometry as a Point type.

Recommendation 3

/rec/core/extent_geospatial_precision

A

Geometry coordinates SHOULD have a level of precision of at least two or more decimal places.

Permission 1

/per/core/extent_geospatial

A

The geometry property MAY provide a third element (height) as per clause 4 of the GeoJSON specification.

7.1.6.1. Temporal extent

The time property describes the aggregate extent of the facility.

Temporal extents provide a useful indicator of the date and time period of the facility and facilitate temporal searching in the GOFC.

Examples:
"time": {
  "date": "2021-10-30"
}
"time": {
  "timestamp": "2021-10-30T11:11:11Z"
}
"time": {
  "interval" : ["2020-10-30", "2021-10-30"],
  "resolution": "P1D"
}
"time": {
  "interval" : ["T00Z", "T23Z"],
  "resolution": "PT1H"
}
"time": {
  "interval": ["2018-04-22", ".."],
}
"time": null

Requirement 5

/req/core/extent_temporal

A

A WMDR record SHALL provide one time property using the Gregorian calendar.

B

The time property SHALL provide either one date, timestamp, interval, or the value of null when a conformant time cannot be derived.

C

All non-null time values SHALL be valid ISO8601 representations or .. for an open-ended extent.

Recommendation 4

/rec/core/extent_temporal

A

For datasets with known or discrete intervals, a WMDR record SHOULD provide the temporal resolution (time.resolution) as a valid ISO 8601 duration (for example, P1D).

7.1.7. Properties / Type

TODO

7.1.8. Properties / Title

TODO

7.1.9. Properties / Description

TODO

7.1.10. Properties / Contacts

The contacts property is the information associated with one or more parties responsible for the resource.

Example: Contacts object with all contact details
"properties": {
  ...
  "contacts": [{
    "identifier": "ECCC",
    "organization": "Government of Canada; Environment and Climate Change Canada; Meteorological Service of Canada",
    "name": "National Inquiry Response Team",
    "phones": [{
      "value": "+18199972800"
    }],
    "emails": [{
      "value":"enviroinfo@ec.gc.ca"
    }],
    "addresses": [{
      "deliveryPoint": [ "77 Westmorland Street, suite 260" ],
      "city": "Fredericton",
      "administrativeArea": "NB",
      "postalCode": "E3B 6Z4",
      "country": "Canada"
    }],
    "links": [{
      "href": "https://example.org/about",
      "rel": "about",
      "type": "text/html"
    }],
    "contactInstructions": "email",
    "roles": ["producer", "host"]
  }]
  ...
}
Example: Contacts object with URL to the relevant homepage
"properties": {
  ...
  "contacts": [{
    "organization": "Government of Canada; Environment and Climate Change Canada; Meteorological Service of Canada",
    "links": [{
      "href": "https://example.org/about",
      "rel": "about",
      "type": "text/html"
    }],
    "roles": ["producer"]
  }]
}

Requirement 6

/req/core/contacts

A

A WMDR SHALL provide at least one contact via the properties.contacts property.

B

The properties.contacts SHALL provide an organization property.

C

The roles property, when specified, SHALL provide a role type from the WCMP role type code list.

Permission 2

/per/core/contacts

A

The properties.contacts property MAY provide more than one contact via multiple objects, or a single contact object with multiple roles.

7.1.11. Properties / Persistent identifiers

The externalIds property is a persistent (or handle) identifier used to provide a long lasting reference to a digital resource. Persistent identifiers are commonly used for scientific publications and datasets.

Examples of persistent identifiers include, but are not limited to:

  • Digital Object Identifier (DOI)

  • Archival Resource Key (ARK)

  • Handle

Example: Persistent identifiers
"properties": {
  ...
  "externalIds": [{
    "scheme": "https://doi.org",
    "value": "10.14287/10000001"
  }, {
    "scheme": "https://handle.net",
    "value": "2381/12775"
  }, {
    "scheme": "https://arks.org",
    "value": "ark:/13030/tf5p30086k"
  }]
  ...
}
Example: Online citation
"links": [
  {
    "rel": "cite-as",
    "title": "Cite as: WMO/GAW Ozone Monitoring Community, World Meteorological Organization-Global Atmosphere Watch Programme (WMO-GAW)/World Ozone and Ultraviolet Radiation Data Centre (WOUDC) [Data]. Retrieved [YYYY-MM-DD], from https://woudc.org. A list of all contributors is available on the website. doi:10.14287/10000004",
    "type": "text/html",
    "href": "https://dx.doi.org/10.14287/10000004"
  }
]

Recommendation 5

/rec/core/pids

A

A WMDR SHOULD provide persistent identifier references via items in the properties.externalIds array property, where the value of scheme is based on an established persistent identifier scheme (such as https://doi.org, https://arks.org or https://handle.net), and the value property is the persistent identifier (for example, https://dx.doi.org/10.14287/10000001).

Permission 3

/per/core/pids

A

A WMDR MAY provide a persistent identifier to cite research or for resource identification, using a persistent identifier scheme/framework.

B

A WMDR MAY provide a persistent identifier as a link object with rel=cite-as if there is an online citation or reference.

7.1.12. Properties / Record creation date

The created property is a single date, being the date that the WMDR was created. Note that this date is not related to any aspect of the station/platform.

Example:
"properties": {
  ...
  "created": "2021-06-12T23:45:24Z"
  ...
}

Requirement 7

/req/core/record_creation_date

A

A WMDR SHALL provide a single properties.created property.

B

The properties.created property SHALL NOT be repeated or used to document change history.

7.1.13. Properties / Record update date

The created property is a single date, being the date that the WMDR was created. Note that this date not related to any aspect of the station/platform.

Example:
"properties": {
  ...
  "updated": "2022-06-12T18:52:39Z"
  ...
}

Recommendation 6

/rec/core/record_update_date

A

A WMDR SHOULD provide a properties.updated property when a record has been updated since its initial creation.

7.1.14. Properties / Additional identifiers

TODO

7.1.15. Properties / Additional titles

TODO

7.1.16. Properties / Facility type

TODO

7.1.17. Properties / WMO region

TODO

7.1.18. Properties / Territories

TODO

7.1.19. Properties / Observations

TODO

7.1.20. Properties / Observations / Configurations

TODO

7.1.21. Properties / Observations / Configurations / Instrument

TODO

TODO

7.1.22.1. Overview

TODO

7.1.23. Additional properties

A WMDR can be extended as required for organizational purposes by adding properties (of any type) in the record. Additional properties do not render a record non-compliant with WMDR.

Example:
"properties": {
  ...
  "approvalStatus": "approved"
  "_comment": {
    "validationErrors": [
      "error 1",
      "error 2"
    ]
  }
  ...
}

Permission 4

/per/core/additional_properties

A

A WMDR MAY provide additional properties of any type in any part of the document as needed.

7.2. WIGOS Metadata Representation resources

7.2.1. WMO Codes Registry

7.2.2. WMO schemas server

Validation schemas, examples and other resources are published at https://schemas.wmo.int/wmdr.

8. Cataloguing considerations

In addition to documenting and describing WIGOS metadata holdings, WMDR observing facility metadata will be searchable via the WIGOS Global Observing Facility Catalogue (GOFC). As part of discovery and search workflow, a GOFC may choose to apply filters to help narrow search results. This is realized by the API of the GOFC, as well as applying facets in the catalogue.

8.1. Faceting

The API of the GOFC, in addition to allowing for spatial/temporal/attribute queries and filters, may choose to apply facets to WMDRs. Facets are effective when applied against controlled vocabularies and classifications.

Annex A: Conformance Class Abstract Test Suite (Normative)

A.1. Conformance Class: Core

label

http://wigos.wmo.int/spec/wmdr/2/conf/core

subject

Requirements Class "core"

classification

Target Type:Observing facility metadata

A.1.1. Validation

label

/conf/core/validation

subject

/req/core/validation

test-purpose

Validate that a WMDR is valid to the authoritative WMDR schema.

Run JSON Schema validation on the WMDR against the WMDR authoritative schema.

A.1.2. Identifier

label

/conf/core/identifier

subject

/req/core/identifier

test-purpose

Validate that a WMDR has a valid identifier.

Check for the existence of an id property in the WMDR.

In the WMDR’s id property, check that there are at least five tokens, delimited by :.

In the WMDR’s id property, delimiting the value on :, check that the first three tokens are equal to ['urn', 'wmo', 'md'].

In the WMDR’s id property, delimiting the value on :, check that the fourth token is a centre id based on the WIS2 Topic Hierarchy and controlled vocabulary.

In the WMDR’s id property, delimiting the value on :, check that the fifth token (the local identifier) has no spaces or accented characters.

A.1.3. Conformance

label

/conf/core/conformance

subject

/req/core/conformance

test-purpose

Validate that a WMDR provides valid conformance information.

Check for the existence of a conformsTo property in the WMDR.

In the WMDR’s conformsTo array property, check that ONE of the values is equal to http://wigos.wmo.int/spec/wmdr/2/conf/core.

A.1.4. Geospatial Extent

label

/conf/core/extent_geospatial

subject

/req/core/extent_geospatial

test-purpose

Validate that a WMDR provides a valid geometry property.

Check for the existence of one geometry property in the WMDR.

Check that all geometry coordinate value data types are integers or floats.

Check that geometry coordinate longitudinal values are between -180 and 180.

Check that geometry coordinate latitudinal values are between -90 and 90.

Check that geometry property is a valid GeoJSON geometry.

A.1.5. Contacts

label

/conf/core/contacts

subject

/req/core/contacts

test-purpose

Validate that a WMDR provides contact information for the metadata point of contact and originator of the data.

Check for the existence of a properties.contacts property in the WMDR.

Check that the contact property provides a minimum of one contact object.

Check for the existence of a roles property in the contact object.

Check for the existence of an organization property in the contact object.

If roles exists, check that the value is part of the WMDR contact role codelist.

A.1.6. Record Creation Date

label

/conf/core/record_creation_date

subject

/req/core/record_creation_date

test-purpose

Validate that a WMDR provides a record creation date.

Check for the existence of one and only one properties.created property in the WMDR.

Annex B: Schemas (Normative)

Note
The schema document will be published on https://schemas.wmo.int/wmdr/2.0.0 once the standard has been approved.

B.1. WIGOS Metadata Representation Schema

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/wmo-im/wmdr2/main/schemas/wmdrRecordGeoJSON.yaml",
  "title": "WMDR station metadata record definition",
  "description": "WMDR station metadata record definition",
  "properties": {
    "id": {
      "type": "string",
      "description": "WIGOS station identifier",
      "pattern": "^(0|1|2|3)-([1-9]\\d*)-([0-9]+)-([A-Za-z0-9\\._-]+)$"
    },
    "conformsTo": {
      "type": "array",
      "contains": {
        "const": "http://wigos.wmo.int/spec/wmdr/2/conf/core"
      }
    },
    "type": {
      "type": "string",
      "enum": [
        "Feature"
      ]
    },
    "geometry": {
      "type": "object",
      "required": [
        "type",
        "coordinates"
      ],
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "Point"
          ]
        },
        "coordinates": {
          "type": "array",
          "minItems": 2,
          "items": {
            "type": "number"
          }
        }
      }
    },
    "time": {
      "oneOf": [
        {
          "enum": [
            null
          ]
        },
        {
          "type": "object",
          "properties": {
            "date": {
              "type": "string",
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
            },
            "timestamp": {
              "type": "string",
              "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"
            },
            "interval": {
              "type": "array",
              "minItems": 2,
              "maxItems": 2,
              "items": {
                "oneOf": [
                  {
                    "type": "string",
                    "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                  },
                  {
                    "type": "string",
                    "pattern": "^\\d{4}-\\d{2}$"
                  },
                  {
                    "type": "string",
                    "pattern": "^\\d{4}$"
                  },
                  {
                    "type": "string",
                    "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"
                  },
                  {
                    "type": "string",
                    "pattern": "^T\\d{2}(:\\d{2})?(:\\d{2})?(?:\\.\\d+)?Z$"
                  },
                  {
                    "type": "string",
                    "enum": [
                      ".."
                    ]
                  }
                ]
              }
            },
            "resolution": {
              "type": "string",
              "description": "Minimum time period resolvable in the dataset, as an ISO 8601 duration",
              "pattern": "^(-?)P(?=\\d|T\\d)(?:(\\d+)Y)?(?:(\\d+)M)?(?:(\\d+)([DW]))?(?:T(?:(\\d+)H)?(?:(\\d+)M)?(?:(\\d+(?:\\.\\d+)?)S)?)?$",
              "example": [
                "P1D"
              ]
            }
          }
        }
      ]
    },
    "properties": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "description": "record type",
          "const": "facility"
        },
        "title": {
          "type": "string",
          "description": "observing facility name (primary)"
        },
        "description": {
          "type": "string",
          "description": "observing facility description"
        },
        "contacts": {
          "type": "array",
          "minItems": 1,
          "items": {
            "allOf": [
              {
                "required": [
                  "organization"
                ],
                "additionalProperties": false,
                "type": "object",
                "description": "Identification of, and means of communication with, person responsible\nfor the resource.",
                "anyOf": [
                  {
                    "required": [
                      "name"
                    ]
                  },
                  {
                    "required": [
                      "organization"
                    ]
                  }
                ],
                "properties": {
                  "identifier": {
                    "type": "string",
                    "description": "A value uniquely identifying a contact."
                  },
                  "name": {
                    "type": "string",
                    "description": "The name of the responsible person."
                  },
                  "position": {
                    "type": "string",
                    "description": "The name of the role or position of the responsible person taken\nfrom the organization's formal organizational hierarchy or chart."
                  },
                  "organization": {
                    "type": "string",
                    "description": "Organization/affiliation of the contact."
                  },
                  "logo": {
                    "description": "Graphic identifying a contact. The link relation should be `icon`\nand the media type should be an image media type.",
                    "allOf": [
                      {
                        "type": "object",
                        "allOf": [
                          {
                            "type": "object",
                            "properties": {
                              "rel": {
                                "type": "string",
                                "description": "The type or semantics of the relation."
                              },
                              "type": {
                                "type": "string",
                                "description": "A hint indicating what the media type of the\nresult of dereferencing the link should be."
                              },
                              "hreflang": {
                                "type": "string",
                                "description": "A hint indicating what the language of the\nresult of dereferencing the link should be."
                              },
                              "title": {
                                "type": "string",
                                "description": "Used to label the destination of a link\nsuch that it can be used as a human-readable\nidentifier."
                              },
                              "length": {
                                "type": "integer"
                              },
                              "profile": {
                                "type": "array",
                                "description": "One or more identifiers that provide information about additional\nsemantics (constraints, conventions, extensions), in addition to \nthose defined by the media type, that are associated with the\ntarget resource.",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "created": {
                                "type": "string",
                                "description": "Date of creation of the resource pointed to\nby the link.",
                                "format": "date-time"
                              },
                              "updated": {
                                "type": "string",
                                "description": "Most recent date on which the resource pointed\nto by the link was changed.",
                                "format": "date-time"
                              }
                            }
                          },
                          {
                            "type": "object",
                            "required": [
                              "href"
                            ],
                            "properties": {
                              "href": {
                                "type": "string",
                                "format": "uri"
                              }
                            }
                          }
                        ]
                      },
                      {
                        "type": "object",
                        "required": [
                          "rel",
                          "type"
                        ],
                        "properties": {
                          "rel": {
                            "enum": [
                              "icon"
                            ]
                          }
                        }
                      }
                    ]
                  },
                  "phones": {
                    "type": "array",
                    "description": "Telephone numbers at which contact can be made.",
                    "items": {
                      "type": "object",
                      "required": [
                        "value"
                      ],
                      "properties": {
                        "value": {
                          "type": "string",
                          "description": "The value is the phone number itself.",
                          "pattern": "^\\+[1-9]{1}[0-9]{3,14}$"
                        },
                        "roles": {
                          "description": "The type of phone number (e.g. home, work, fax, etc.).",
                          "$ref": "#/properties/properties/properties/contacts/items/allOf/0/properties/roles"
                        }
                      }
                    }
                  },
                  "emails": {
                    "type": "array",
                    "description": "Email addresses at which contact can be made.",
                    "items": {
                      "type": "object",
                      "required": [
                        "value"
                      ],
                      "properties": {
                        "value": {
                          "type": "string",
                          "description": "The value is the email number itself.",
                          "format": "email"
                        },
                        "roles": {
                          "description": "The type of email (e.g. home, work, etc.).",
                          "$ref": "#/properties/properties/properties/contacts/items/allOf/0/properties/roles"
                        }
                      }
                    }
                  },
                  "addresses": {
                    "type": "array",
                    "description": "Physical location at which contact can be made.",
                    "items": {
                      "type": "object",
                      "properties": {
                        "deliveryPoint": {
                          "type": "array",
                          "description": "Address lines for the location.",
                          "items": {
                            "type": "string"
                          }
                        },
                        "city": {
                          "type": "string",
                          "description": "City for the location."
                        },
                        "administrativeArea": {
                          "type": "string",
                          "description": "State or province of the location."
                        },
                        "postalCode": {
                          "type": "string",
                          "description": "ZIP or other postal code."
                        },
                        "country": {
                          "type": "string",
                          "description": "Country of the physical address.  ISO 3166-1 is recommended."
                        },
                        "roles": {
                          "description": "The type of address (e.g. office, home, etc.).",
                          "$ref": "#/properties/properties/properties/contacts/items/allOf/0/properties/roles"
                        }
                      }
                    }
                  },
                  "links": {
                    "type": "array",
                    "description": "On-line information about the contact.",
                    "items": {
                      "allOf": [
                        {
                          "$ref": "#/properties/properties/properties/contacts/items/allOf/0/properties/logo/allOf/0"
                        },
                        {
                          "type": "object",
                          "required": [
                            "type"
                          ]
                        }
                      ]
                    }
                  },
                  "hoursOfService": {
                    "type": "string",
                    "description": "Time period when the contact can be contacted."
                  },
                  "contactInstructions": {
                    "type": "string",
                    "description": "Supplemental instructions on how or when to contact the\nresponsible party."
                  },
                  "roles": {
                    "description": "The set of named duties, job functions and/or permissions\nassociated with this contact.\n(e.g. developer, administrator, etc.).",
                    "type": "array",
                    "minItems": 1,
                    "items": {
                      "type": "string"
                    }
                  }
                }
              }
            ]
          }
        },
        "externalIds": {
          "type": "array",
          "description": "An identifier for the resource assigned by an\nexternal (to the catalog) entity.",
          "items": {
            "type": "object",
            "properties": {
              "scheme": {
                "type": "string",
                "description": "A reference to an authority or identifier\nfor a knowledge organization system from\nwhich the external identifier was obtained.\nIt is recommended that the identifier be a\nresolvable URI."
              },
              "value": {
                "type": "string",
                "description": "The value of the identifier."
              }
            },
            "required": [
              "value"
            ]
          }
        },
        "created": {
          "type": "string",
          "description": "The date this record was created in the server.",
          "format": "date-time"
        },
        "updated": {
          "type": "string",
          "description": "The most recent date on which the record was changed.",
          "format": "date-time"
        },
        "additionalIds": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "string",
            "description": "additional WIGOS Station Identifiers (WSI)",
            "pattern": "^(0|1|2|3)-([1-9]\\d*)-([0-9]+)-([A-Za-z0-9\\._-]+)$"
          }
        },
        "additionalTitles": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "string",
            "description": "additional observing facility names"
          }
        },
        "facilityType": {
          "allOf": [
            {
              "$ref": "#/properties/properties/properties/wmoRegion/allOf/0"
            }
          ],
          "description": "Observing facility type",
          "$comment": "https://codes.wmo.int/wmdr/FacilityType"
        },
        "wmoRegion": {
          "allOf": [
            {
              "oneOf": [
                {
                  "type": "object",
                  "required": [
                    "id"
                  ],
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "An identifier for the concept."
                    },
                    "title": {
                      "type": "string",
                      "description": "A human readable title for the concept."
                    },
                    "description": {
                      "type": "string",
                      "description": "A human readable description for the concept."
                    },
                    "url": {
                      "type": "string",
                      "format": "uri",
                      "description": "A URI providing further description of the concept."
                    }
                  }
                },
                {
                  "enum": [
                    null
                  ]
                }
              ]
            }
          ],
          "description": "WMO Region",
          "$comment": "https://codes.wmo.int/wmdr/WMORegion"
        },
        "territories": {
          "type": "array",
          "description": "time series of territories",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "territory": {
                "allOf": [
                  {
                    "$ref": "#/properties/properties/properties/wmoRegion/allOf/0"
                  }
                ],
                "description": "Territory of origin of data",
                "$comment": "https://codes.wmo.int/wmdr/TerritoryName"
              },
              "dates": {
                "type": "array",
                "minItems": 1,
                "maxItems": 2,
                "items": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "date"
                    },
                    {
                      "const": ".."
                    }
                  ]
                }
              }
            },
            "required": [
              "territory"
            ]
          }
        },
        "observations": {
          "type": "array",
          "description": "observations made at the facility, including the observed geometry and observed property",
          "minItems": 1,
          "items": {
            "$ref": "#/definitions/Observations"
          }
        }
      },
      "required": [
        "type",
        "title",
        "created",
        "contacts",
        "observations"
      ]
    },
    "links": {
      "type": "array",
      "minItems": 1,
      "items": {
        "allOf": [
          {
            "type": "object",
            "required": [
              "rel"
            ],
            "properties": {
              "rel": {
                "type": "string",
                "description": "The type or semantics of the relation.",
                "example": "alternate"
              },
              "type": {
                "type": "string",
                "description": "A hint indicating what the media type of the result of dereferencing the link should be.",
                "example": "application/geo+json"
              },
              "hreflang": {
                "type": "string",
                "description": "A hint indicating what the language of the result of dereferencing the link should be.",
                "example": "en"
              },
              "title": {
                "type": "string",
                "description": "Used to label the destination of a link such that it can be used as a human-readable identifier.",
                "example": "Trierer Strasse 70, 53115 Bonn"
              },
              "length": {
                "type": "integer"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "href"
            ],
            "properties": {
              "href": {
                "type": "string",
                "description": "The URI of the link target.",
                "example": "https://data.example.com/buildings/123"
              }
            }
          }
        ]
      }
    }
  },
  "required": [
    "id",
    "conformsTo",
    "type",
    "geometry",
    "properties",
    "links"
  ],
  "definitions": {
    "Configurations": {
      "type": "object",
      "properties": {
        "id": {
          "type": [
            "string",
            "integer"
          ],
          "description": "configuration identifier"
        },
        "geometry": {
          "$ref": "#/properties/geometry"
        },
        "time": {
          "$ref": "#/properties/time"
        },
        "observingMethod": {
          "allOf": [
            {
              "$ref": "#/properties/properties/properties/wmoRegion/allOf/0"
            }
          ],
          "description": "observing method",
          "$comment": "- https://codes.wmo.int/wmdr/ObservingMethodAtmosphere\n- https://codes.wmo.int/wmdr/ObservingMethodTerrestrial\n- https://codes.wmo.int/wmdr/ObservingMethodOcean"
        },
        "operatingStatus": {
          "allOf": [
            {
              "$ref": "#/properties/properties/properties/wmoRegion/allOf/0"
            }
          ],
          "description": "operating status",
          "$comment": "- https://codes.wmo.int/wmdr/InstrumentOperatingStatus"
        },
        "sourceOfObservation": {
          "allOf": [
            {
              "$ref": "#/properties/properties/properties/wmoRegion/allOf/0"
            }
          ],
          "description": "Source of observation",
          "$comment": "https://codes.wmo.int/wmdr/SourceOfObservation"
        },
        "instrument": {
          "$ref": "#/definitions/Instrument"
        },
        "instrumentSerialNumber": {
          "type": "string",
          "description": "instrument serial number"
        },
        "verticalDistance": {
          "type": "object",
          "properties": {
            "distances": {
              "type": "array",
              "description": "Signed vertical distances from reference surface",
              "minItems": 1,
              "items": {
                "type": "number"
              }
            },
            "unit": {
              "allOf": [
                {
                  "$ref": "#/properties/properties/properties/wmoRegion/allOf/0"
                }
              ],
              "description": "Measurement unit",
              "$comment": "https://codes.wmo.int/wmdr/unit"
            },
            "referenceSurface": {
              "allOf": [
                {
                  "$ref": "#/properties/properties/properties/wmoRegion/allOf/0"
                }
              ],
              "description": "Type of reference surface",
              "$comment": "https://codes.wmo.int/wmdr/ReferenceSurfaceType"
            }
          },
          "required": [
            "distances",
            "unit",
            "referenceSurface"
          ]
        }
      },
      "required": [
        "id",
        "time"
      ]
    },
    "Instrument": {
      "type": "object",
      "properties": {
        "id": {
          "type": [
            "string",
            "integer"
          ],
          "description": "instrument identifier"
        },
        "manufacturer": {
          "type": "string",
          "description": "instrument manufacturer"
        },
        "model": {
          "type": "string",
          "description": "instrument model"
        }
      },
      "required": [
        "id"
      ]
    },
    "Observations": {
      "type": "object",
      "properties": {
        "observedGeometry": {
          "$ref": "#/properties/properties/properties/wmoRegion/allOf/0/oneOf/0",
          "description": "observed geometry",
          "$comment": "- https://codes.wmo.int/wmdr/Geometry"
        },
        "observedProperty": {
          "$ref": "#/properties/properties/properties/wmoRegion/allOf/0/oneOf/0",
          "description": "observed property",
          "$comment": "- https://codes.wmo.int/wmdr/ObservedVariableAtmosphere\n- https://codes.wmo.int/wmdr/ObservedVariableEarth\n- https://codes.wmo.int/wmdr/ObservedVariableOcean\n- https://codes.wmo.int/wmdr/ObservedVariableOuterSpace\n- https://codes.wmo.int/wmdr/ObservedVariableTerrestrial"
        },
        "programAffiliations": {
          "type": "array",
          "description": "program affiliations",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "programAffiliation": {
                "$ref": "#/properties/properties/properties/wmoRegion/allOf/0/oneOf/0",
                "description": "Programme/network affiliation",
                "$comment": "https://codes.wmo.int/wmdr/ProgramAffiliation"
              },
              "reportingStatus": {
                "allOf": [
                  {
                    "$ref": "#/properties/properties/properties/wmoRegion/allOf/0"
                  }
                ],
                "description": "Station/Platform operating status",
                "$comment": "https://codes.wmo.int/wmdr/ReportingStatus"
              },
              "dates": {
                "$ref": "#/properties/properties/properties/territories/items/properties/dates"
              }
            },
            "required": [
              "programAffiliation"
            ]
          }
        },
        "configurations": {
          "type": "array",
          "description": "configurations",
          "minItems": 1,
          "items": {
            "$ref": "#/definitions/Configurations"
          }
        }
      },
      "required": [
        "observedProperty",
        "programAffiliations",
        "configurations"
      ]
    }
  }
}

Annex C: Examples (Informative)

C.1. WIGOS Metadata Representation Examples

Example: Canadian Hourly Surface Weather Observations (dataset)
{
    "type": "Feature",
    "id": "0-20008-0-THE",
    "geometry": {
        "type": "Point",
        "coordinates": [
            22.956,
            40.634,
            60
        ]
    },
    "time": {
        "interval": [
            "1982-03-13",
            ".."
        ]
    },
    "conformsTo": [
        "http://wigos.wmo.int/spec/wmdr/2/conf/core"
    ],
    "properties": {
        "type": "facility",
        "facilityType": {
            "id": "landFixed"
        },
        "title": "Thessaloniki",
        "created": "2024-12-11T00:00:00Z",
        "updated": "2024-12-11T00:00:00Z",
        "description": "The Brewer spectrophotometers and all radiation instruments are located on the roof of the 4-storey building of the Physics Dept., of the Aristotle University of Thessaloniki. The Campus is located in the city center about 500 m east of the seashore. The highest elevation of about 1100 m is at a distance of about 15 km towards the east. Thessaloniki is the second largest city of Greece with about 1000000 inhabitants in the greater metropolitan area.",
        "contacts": [
            {
                "identifier": "contact:aristotle-university-of-thessaloniki--ed7b7e4a",
                "organization": "Aristotle University of Thessaloniki",
                "roles": [
                    "owner"
                ],
                "links": [
                    {
                        "rel": "about",
                        "href": "https://lapweb.physics.auth.gr",
                        "type": "text/html"
                    }
                ]
            },
            {
                "identifier": "contact:clima@hnms.gr",
                "name": "Mrs M. Michelaraki",
                "organization": "Hellenic National Meteorological Service",
                "roles": [
                    "pointOfContact"
                ],
                "links": [
                    {
                        "rel": "about",
                        "href": "https://www.emy.gr",
                        "type": "text/html"
                    }
                ]
            },
            {
                "identifier": "contact:abais@auth.gr",
                "name": "Alkiviadis Bais",
                "organization": "Aristotle University of Thessaloniki",
                "roles": [
                    "principalInvestigator"
                ],
                "links": [
                    {
                        "rel": "about",
                        "href": "https://lapweb.physics.auth.gr",
                        "type": "text/html"
                    }
                ]
            },
            {
                "identifier": "contact:balis@auth.gr",
                "name": "Dimitris Balis",
                "organization": "Aristotle University of Thessaloniki",
                "roles": [
                    "principalInvestigator"
                ],
                "links": [
                    {
                        "rel": "about",
                        "href": "https://lapweb.physics.auth.gr",
                        "type": "text/html"
                    }
                ]
            }
        ],
        "wmoRegion": {
            "id": "europe"
        },
        "territories": [
            {
                "dates": [
                    "2011-02-16",
                    ".."
                ],
                "territory": {"id": "GRC"}
            }
        ],
        "observations": [
            {
                "observedProperty": {
                    "id": "12164"
                },
                "programAffiliations": [
                    {
                        "dates": [
                            "1982-03-13",
                            ".."
                        ],
                        "programAffiliation": {
                            "id": "GAWregional"
                        },
                        "reportingStatus": {
                            "id": "operational"
                        }
                    },
                    {
                        "dates": [
                            "2008-01-01",
                            "2024-12-11"
                        ],
                        "programAffiliation": {
                            "id": "GALION"
                        },
                        "reportingStatus": {
                            "id": "operational"
                        }
                    },
                    {
                        "dates": [
                            "2003-06-01",
                            "2024-12-11"
                        ],
                        "programAffiliation": {
                            "id": "AERONET"
                        },
                        "reportingStatus": {
                            "id": "operational"
                        }
                    }
                ],
                "configurations": [
                    {
                        "id": "configuration-456",
                        "time": {
                            "interval": [
                                "1982-03-13",
                                ".."
                            ]
                        },
                        "observingMethod": {
                            "id": "78"
                        },
                        "sourceOfObservation": {
                            "id": "automaticReading"
                        },
                        "instrument": {
                            "id": "instrument-789"
                        }
                    }
                ]
            }
        ]
    },
    "links": [
        {
            "href": "https://lapweb.physics.auth.gr/en/infrastructure/#Infrastructure",
            "rel": "about",
            "type": "text/html"
        }
    ]
}

Annex D: Codelists (Informative)

D.1. Dataset status

The links below provide some controlled vocabularies in support of dataset status, and may be of use when encoding the properties.status property..

Annex E: Bibliography

Annex F: Revision History

Date Release Editor Primary clauses modified Description

2025-11-12

Template

Tom Kralidis

all

initial template


1. https://community.wmo.int/en/governance/commission-membership/commission-observation-infrastructure-and-information-systems-infcom/standing-committee-information-management-and-technology-sc-imt/expert-team-metadata-standards-et-metadata/task-team-wigos-metadata-tt-wigosmd
2. https://community.wmo.int/governance/commission-membership/commission-observation-infrastructures-and-information-systems-infcom/commission-infrastructure-national-representatives/infcom-management-group/standing-committee-information-management-and-technology-sc-imt/et-metadata
3. https://community.wmo.int/governance/commission-membership/commission-observation-infrastructures-and-information-systems-infcom/commission-infrastructure-officers/infcom-management-group/standing-committee-information-management-and-technology-sc-imt
4. https://community.wmo.int/governance/commission-membership/infcom
5. https://ogcapi.ogc.org/records
6. https://datatracker.ietf.org/doc/html/rfc7946
7. https://www.w3.org/TR/dwbp
8. https://www.w3.org/TR/sdw-bp
9. https://en.wikipedia.org/wiki/FAIR_data
10. https://library.wmo.int/doc_num.php?explnum_id=11113#page=9
11. https://library.wmo.int/idurl/4/68731
12. https://docs.ogc.org/is/20-004r1/20-004r1.html
13. https://docs.opengeospatial.org/is/17-069r4/17-069r4.html
14. https://datatracker.ietf.org/doc/html/rfc7946
15. https://datatracker.ietf.org/doc/html/rfc8259
16. https://www.w3.org/TR/sdw-bp
17. https://www.w3.org/TR/dwbp
18. https://www.w3.org/TR/vocab-dcat
19. https://www.iana.org/assignments/link-relations/link-relations.xml
20. https://www.iana.org/assignments/media-types/media-types.xhtml
21. https://spdx.org/licenses
22. https://json-schema.org
23. https://library.wmo.int/records/item/68731-manual-on-the-wmo-information-system-volume-ii-wmo-information-system-2-0
24. https://json-schema.org
25. https://en.wikipedia.org/wiki/YAML