Proposed TSML profile for aerodrome forecast and observation timeseries - team-sx/iwxxm-sx GitHub Wiki

Profile of TSML 1.3 XML Schemas

NOTE: This page and the TSML profile is still work-in-progress, and is likely to change.

The proposed IWXXM profile of the OGC TimeseriesML 1.3 Standard XML Schemas only includes a subset of the TSML 1.3 elements and types. It also does not import the O&M 2.0 schemas like the official TSML 1.3 schema does.

The retained TSML 1.3 schema sections include:

  • timeseriesTVP.xsd (slightly modified, see below)
  • timeseriesMetadata.xsd (slightly modified, see below)

The following sections are NOT included:

  • timeseriesDR.xsd
  • observationProcess.xsd
  • monitoringFeature.xsd
  • collection.xsd

Modifications on the TSML schema files

All changes to the TSML schema files should be backwards-compatible, mostly relaxations of cardinalities and the replacements of the O&M elements.

timeseriesTVP.xsd

  • TimeseriesTVP/defaultPointMetadata/PointMetadata multiplicity Line 101: Laxed multiplicity from 1 to 1..n to allow for separate default point metadata for each of the record fields
  • TimeValuePair/metadata/PointMetadata multiplicity Line 139: Laxed multiplicity from 1 to 1..n to allow for separate point metadata for each of the record fields

timeseriesMetadata.xsd

  • Removed import on O&M Schemas Line 22
  • Changed PointMetadata/relatedObservation from om:OM_ObservationPropertyType to gml:FeaturePropertyType Line 95
  • Changed PointMetadata/qualifier from swe:QuantityPropertyType to swe:AbstractSimpleComponentPropertyType to accommodate QuantityRanges Line 106
  • Changed the type of TimeseriesMetadata/parameter from om:NamedValuePropertyType to tsml:NamedValuePropertyType Line 204
  • Borrowed the NameValue from the O&M Schema to provide the content for the parameter Line 221

Extensions of the TSML types and elements

These are currently in the iwxxm namespace, but some of them could be candidates for inclusion into the TSML 2.0 XML Schemas.

FieldSpecificPointMetadata extends tsml:PointMetadata

See tsml-ext.xsd

Provides a mechanism to describe tsml:PointMetadata for a single quantity/observable property item within a record of values by using the optional field and position attributes.

Example:

<iwxxm:FieldSpecificPointMetadata field="windSpeed" position="1">
  <tsml:interpolationType xlink:href="http://www.opengis.net/def/timeseries/InterpolationCode/AveragePrec"/>
  <tsml:aggregationDuration>PT10M</tsml:aggregationDuration>
  <tsml:qualifier>
    <swe:Quantity definition="http://preferred.observable-property.registry/windSpeed">
      <swe:label>Wind speed</swe:label>
      <swe:uom xlink:href="https://unitsofmeasure.org/ucum#m_s" code="m/s"/>
    </swe:Quantity>
  </tsml:qualifier>
</iwxxm:FieldSpecificPointMetadata>

LinkedTimeseriesTVP extends tsml:TimeseriesTVP

See tsml-ext.xsd

Provides a mechanism to link a tsml:TimeseriesTVP instance to the previous and the next part of a longer timeseries provided in parts using the optional nextPart and the previousPart elements.

Example:

<iwxxm:LinkedTimeseriesTVP gml:id="uuid.1a8e2921-1ffc-41bf-83fb-dabca8be0062">
  <tsml:point>
    <tsml:MeasurementTVP>
      <tsml:time>2001-01-31T00:00:00Z</tsml:time>
      <tsml:value uom="m">1.0</tsml:value>
    </tsml:MeasureTVP>
  </tsml:point>
  <tsml:point>
    <tsml:MeasurementTVP>
      <tsml:time>2001-01-31T00:10:00Z</tsml:time>
      <tsml:value uom="m">2.2</tsml:value>
    </tsml:MeasurementTVP>
  </tsml:point>
...
  <iwxxm:nextPart xlink:href="#uuid.d3681490-1791-47cc-b76c-283a58cc76d0" />
</iwxxm:LinkedTimeseriesTVP>

RecordTVP extends tsml:TimeValuePair

See tsml-ext.xsd

A TimeValuePair with the record-like value for each time step. Items in the record value are separated by a whitespace and each are of type sx:anySimpleType.

Example:

<iwxxm:RecordTVP>
  <tsml:time>2001-01-31T00:00:00Z</tsml:time>
  <iwxxm:value>1.0 110 1.5</iwxxm:value>
</iwxxm:RecordTVP>

RangeRecordTVP extends tsml:TimeValuePair

See tsml-ext.xsd

A TimeValuePair with the record-like range (minimum-maximum) for each time step. Items in the minimum and maximum record value are separated by a whitespace and each are of type sx:anySimpleType.

<iwxxm:RangeRecordTVP>
  <tsml:time>2023-05-31T03:00:00Z</tsml:time>
  <iwxxm:minimum>10.2 50 http://codes.wmo.int/49-2/CloudAmountReportedAtAerodrome/FEW</iwxxm:minimum>
  <iwxxm:maximum>15.2 63 http://codes.wmo.int/49-2/CloudAmountReportedAtAerodrome/SCT</iwxxm:maximum>
</iwxxm:RangeRecordTVP></tsml:point>

DistributionRecordTVP extends tsml:TimeValuePair

See tsml-ext.xsd

A TimeValuePair with the statistical distributions of values for record item and each time step. The distribution of values for a described quantity is defined using a set of descriptive statistics (each one is optional):

  • mean (list of double)
  • median (list of anySimpleType)
  • mode (list of anySimpleType)
  • variance (list of double)
  • standardDeviation (list of double)
  • count (list of integer)
  • minimum (list of anySimpleType)
  • maximum (list of anySimpleType)
  • prediction intervals (upper and lower boundaries for any levels 0.0 - 1.0, list of anySimpleType)

Only some of these make sense for probabilistic forecasts, mode and count for example may only be relevant for distributions of statistical samples.

Example:

<iwxxm:DistributionRecordTVP>
  <tsml:time>2001-01-31T00:10:00Z</tsml:time>
  <iwxxm:mean>2.3 110 4.1</iwxxm:mean>
  <iwxxm:predictionIntervalBoundary level="0.95" type="lower">2.2 105 3.5</iwxxm:predictionIntervalBoundary>
  <iwxxm:predictionIntervalBoundary level="0.95" type="upper">2.5 113 4.5</iwxxm:predictionIntervalBoundary>
  <iwxxm:predictionIntervalBoundary level="0.90" type="lower">2.1 100 3.2</iwxxm:predictionIntervalBoundary>
  <iwxxm:predictionIntervalBoundary level="0.90" type="upper">2.6 117 4.8</iwxxm:predictionIntervalBoundary>
<iwxxm:DistributionRecordTVP>

Extensions to SWE Common types and elements

These are currently in the iwxxm namespace, but some of them could potentially be candidates for inclusion into the SWE Common XML Schemas, if a new version is released at some point.

QuantityProbabilityDistribution extends swe:AbstractSimpleComponent

See swe-ext.xsd

Defines an observable property (with an optional value) for the statistical distribution of the value of another observable property. This is a sibling level component with SWE Common elements Count, CountRange, Category, CategoryRange, Quantity, QuantityRange, Time, TimeRange, Boolean and Text.

The distribution of values for a described quantity is defined using a set of descriptive statistics (each one is optional):

  • mean (double)
  • median (anySimpleType)
  • mode (anySimpleType)
  • variance (double)
  • standardDeviation (double)
  • count (integer)
  • minimum (anySimpleType)
  • maximum (anySimpleType)
  • prediction intervals (upper and lower boundaries for any levels 0.0 - 1.0, anySimpleType)

Optionally, the element also allows for describing the probability density function (PDF) or the cumulative distribution function (CDF) of the distribution explicitly using the probabilityDensityFunction and the cumulativeDistributionFunction sub-elements. No data model for these are defined however: any XML content for these elements is allowed by the schema.

Example 1 (observable property definition, no value given):

<iwxxm:QuantityProbabilityDistribution>
  <swe:label>Probability distribution of predicted wind speed at 10 m height from the surface</swe:label>
    <iwxxm:quantity>
      <swe:Quantity definition="http://preferred.observable-property.registry/wind/10mWindSpeed">
      <swe:label>10 m wind speed</swe:label>
      <swe:uom xlink:href="https://unitsofmeasure.org/ucum#m_s" code="m/s"/>
    </swe:Quantity>
  </iwxxm:quantity>
  <iwxxm:distributionType xlink:href="http://uncertml.org/distributions/normal" xlink:title="Normal distribution"/>
</iwxxm:QuantityProbabilityDistribution>

Example 2 (stand-alone data entry):

<iwxxm:QuantityProbabilityDistribution>
  <swe:label>Probability distribution of predicted wind speed at 10 m height from the surface</swe:label>
    <iwxxm:quantity>
      <swe:Quantity definition="http://preferred.observable-property.registry/wind/10mWindSpeed">
        <swe:label>10 m wind speed</swe:label>
        <swe:uom xlink:href="https://unitsofmeasure.org/ucum#m_s" code="m/s"/>
      </swe:Quantity>
    </iwxxm:quantity>
  <iwxxm:distributionType xlink:href="http://uncertml.org/distributions/normal" xlink:title="Normal distribution"/>
  <iwxxm:descriptiveStatistics>
    <iwxxm:DescriptiveStatistics>
      <iwxxm:mean>1.1</iwxxm:mean>
      <iwxxm:predictionInterval level="0.95">1.0 1.2</iwxxm:predictionInterval>
    </iwxxm:DescriptiveStatistics>
  </iwxxm:descriptiveStatistics>
</iwxxm:QuantityProbabilityDistribution>

QuantityValueInRangeProbability extends swe:Quantity

See swe-ext.xsd

An observable property (with an optional value) for a probability of the value of the given other observable property being falling in a given range. The range may also be given only with the lower or the upper limit, thus ranging to infinity (or to some context-dependent implicit limit, such as the absolute zero temperature -273,15 degC) on that side.

The value is always a probability between 0.0 and 1.0.

Example 1 (observable property definition, no value given):

<iwxxm:QuantityValueInRangeProbability>
  <swe:label>Probability of 1 hour maximum wind speed exceeding 15.0 m/s</swe:label>
  <swe:uom xlink:href="https://qudt.org/vocab/unit/UNITLESS" />
  <iwxxm:quantity>
    <iwxxm:AggregatedQuantity>
      <swe:label>1h maximum wind speed</swe:label>
      <swe:uom xlink:href="https://unitsofmeasure.org/ucum#m_s" code="m/s"/>
      <iwxxm:baseQuantity>
        <swe:Quantity definition="http://preferred.observable-property.registry/wind/10mWindSpeed">
          <swe:label>10 m wind speed</swe:label>
          <swe:uom xlink:href="https://unitsofmeasure.org/ucum#m_s" code="m/s"/>
        </swe:Quantity>
      </iwxxm:baseQuantity>
      <iwxxm:aggregationFunction xlink:href="http://www.opengis.net/def/timeseries/InterpolationCode/MaxPrec"/>
      <iwxxm:aggregationPeriod>PT1H</iwxxm:aggregationPeriod>
    </iwxxm:AggregatedQuantity>
  </iwxxm:quantity>
  <iwxxm:lowerLimit>15.0</iwxxm:lowerLimit>
</iwxxm:QuantityValueInRangeProbability>

Example 2 (stand-alone data entry):

<iwxxm:QuantityValueInRangeProbability>
  <swe:label>Probability of 1 hour maximum wind speed exceeding 15.0 m/s</swe:label>
  <swe:uom xlink:href="https://qudt.org/vocab/unit/UNITLESS" />
  <swe:value>0.55</swe:value>
  <iwxxm:quantity>
    <iwxxm:AggregatedQuantity>
      <swe:label>1h maximum wind speed</swe:label>
      <swe:uom xlink:href="https://unitsofmeasure.org/ucum#m_s" code="m/s"/>
      <iwxxm:baseQuantity>
        <swe:Quantity definition="http://preferred.observable-property.registry/wind/10mWindSpeed">
          <swe:label>10 m wind speed</swe:label>
          <swe:uom xlink:href="https://unitsofmeasure.org/ucum#m_s" code="m/s"/>
        </swe:Quantity>
      </iwxxm:baseQuantity>
      <iwxxm:aggregationFunction xlink:href="http://www.opengis.net/def/timeseries/InterpolationCode/MaxPrec"/>
      <iwxxm:aggregationPeriod>PT1H</iwxxm:aggregationPeriod>
    </iwxxm:AggregatedQuantity>
  </iwxxm:quantity>
  <iwxxm:lowerLimit>15.0</iwxxm:lowerLimit>
</iwxxm:QuantityValueInRangeProbability>

AggregatedQuantity extends DerivedQuantity

See swe-ext.xsd

A quantity (observable property with an optional measure value) which has been derived from another observable property by temporal aggregation.

Example:

<iwxxm:AggregatedQuantity>
  <swe:label>1h maximum wind speed</swe:label>
  <swe:uom xlink:href="https://unitsofmeasure.org/ucum#m_s" code="m/s"/>
  <iwxxm:baseQuantity>
    <swe:Quantity definition="http://preferred.observable-property.registry/wind/10mWindSpeed">
      <swe:label>10 m wind speed</swe:label>
      <swe:uom xlink:href="https://unitsofmeasure.org/ucum#m_s" code="m/s"/>
    </swe:Quantity>
  </iwxxm:baseQuantity>
  <iwxxm:aggregationFunction xlink:href="http://www.opengis.net/def/timeseries/InterpolationCode/MaxPrec"/>
  <iwxxm:aggregationPeriod>PT1H</iwxxm:aggregationPeriod>
</iwxxm:AggregatedQuantity>

DerivedQuantity extends swe:Quantity (abstract)

See swe-ext.xsd

A quantity (observable property with an optional measure value) which has been derived from one ore more other observable properties. This element is an abstract extension point for concrete derived quantities.

QualifiedQuantity extends DerivedQuantity

See swe-ext.xsd

A quantity (observable property with an optional measure value) which is based on a more generic quantity, but a result of particular qualification of it, such as sub-setting or spatial offsetting.

Example 1:

<iwxxm:QualifiedQuantity definition="http://preferred.observable-property.registry/wind/10mTailWind">
  <swe:label>Tail wind for runway 04L at 10m</swe:label>
  <swe:uom xlink:href="https://unitsofmeasure.org/ucum#kn_i" code="kt" />
  <iwxxm:baseQuantity>
    <swe:Quantity definition="http://preferred.observable-property.registry/wind/windSpeed">
      <swe:label>Wind speed</swe:label>
      <swe:uom xlink:href="https://unitsofmeasure.org/ucum#kn_i" code="kt" />
    </swe:Quantity>
  </iwxxm:baseQuantity>
  <iwxxm:qualifier>
    <swe:Quantity definition="http://preferred.observable-property.registry/trueBearing">
      <swe:label>Direction (true bearing)</swe:label>
      <swe:uom xlink:href="https://unitsofmeasure.org/ucum#deg" code="deg" />
      <swe:value>47.423</swe:value>
    </swe:Quantity>
  </iwxxm:qualifier>
</iwxxm:QualifiedQuantity>

Example 2:

<iwxxm:QualifiedQuantity definition="http://preferred.observable-property.registry/wind/100flWindSpeed">
  <swe:label>Wind speed at light level 100</swe:label>
  <swe:uom xlink:href="https://unitsofmeasure.org/ucum#M_s" code="m/s" />
  <iwxxm:baseQuantity>
    <swe:Quantity definition="http://preferred.observable-property.registry/wind/windSpeed">
      <swe:label>Wind speed</swe:label>
      <swe:uom xlink:href="https://unitsofmeasure.org/ucum#kn_i" code="kt" />
    </swe:Quantity>
  </iwxxm:baseQuantity>
  <iwxxm:qualifier>
    <swe:Quantity definition="http://preferred.observable-property.registry/flightLevel">
      <swe:label>Flight level</swe:label>
      <swe:uom xlink:href="https://qudt.org/vocab/unit/UNITLESS" />
      <swe:value>100</swe:value>
    </swe:Quantity>
  </iwxxm:qualifier>
</iwxxm:QualifiedQuantity>
⚠️ **GitHub.com Fallback** ⚠️