SensorML and ISO Metadata

From NOAA Environmental Data Management Wiki

The Sensor Model Language (SensorML) is a critical part of the Open Geospatial Consortium Standard Sensor Web Enablement effort. It provides standard models and an XML encoding for describing any process, including the process of measurement by sensors and instructions for deriving higher-level information from observations. These details are generally referenced from, rather than being explicitly included in, the ISO Metadata Standards, so SensorML works with the ISO Metadata Standards to provide complete documentation of data and observations.

SensorML and ISO Metadata Standards also share several components. The shared components have slightly different XML representations in the two languages because the ISO XML representation (ISO 19139) was not available when the XML representation of SensorML was developed. It is expected that the next version of SensorML (2.0) will converge with the 19139 representations.

This page identifies and elucidates relationships between some of the shared components.

SensorML Descriptions

AcquisitionDetails
SensorML provides standard models and an XML encoding for describing any process, including the process of measurement by sensors and instructions for deriving higher-level information from observations. There are several places that SensorML might be referenced from an ISO Metadata Record.

SensorML can be used to describe instrument characteristics. For example, this SensorML describes geometric characteristics of the Advanced Synthetic Aperture Radar (ASAR) instrument on ENVISAT (complete SensorML record):

<!-- ================================================= -->
<!--       Instrument Geometric Characteristics        -->
<!-- ================================================= -->
<sml:characteristics xlink:role="urn:ogc:def:role:CEOS:eop:GeometricCharacteristics">
    <swe:DataRecord>
        <gml:name>Geometric Characteristics</gml:name>
        <swe:field name="Antenna Length">
            <swe:Quantity definition="urn:ogc:def:property:CEOS:sar:AntennaLength">
                <swe:uom code="m"/>
                <swe:value>10</swe:value>
            </swe:Quantity>
        </swe:field>
        <swe:field name="Antenna Width">
            <swe:Quantity definition="urn:ogc:def:property:CEOS:sar:AntennaWidth">
                <swe:uom code="m"/>
                <swe:value>1.3</swe:value>
            </swe:Quantity>
        </swe:field>
        <swe:field name="Ground Location Accuracy">
            <swe:Quantity definition="urn:ogc:def:property:CEOS:eop:GroundLocationAccuracy">
                <swe:uom code="m"/>
                <swe:value>000</swe:value>
            </swe:Quantity>
        </swe:field>
        <swe:field name="Revisit Time">
            <swe:Quantity definition="urn:ogc:def:property:CEOS:eop:RevisitTime">
                <swe:uom code="d"/>
                <swe:value>000</swe:value>
            </swe:Quantity>
        </swe:field>
    </swe:DataRecord>
</sml:characteristics>

Instrument descriptions like this might be referenced from is the ISO 19115-2 MI_AcquisitionInformation object (shown at right) which can include any number of MI_Instrument objects. Each of the MI_Instrument objects includes a citation and a description. The citation could point to a SensorML description of the characteristics of an instrument. In this case, the citation would look like:

<gmd:CI_Citation>
    <gmd:title>
        <gco:CharacterString>SensorML Description of Advanced Synthetic Aperture Radar (ASAR)</gco:CharacterString>
    </gmd:title>
    <gmd:date gco:nilReason="inapplicable"/>
    <gmd:citedResponsibleParty>
        <gmd:CI_ResponsibleParty>
            <gmd:organisationName>
                <gco:CharacterString>European Space Agency</gco:CharacterString>
            </gmd:organisationName>
            <gmd:contactInfo>
                <gmd:CI_Contact>
                    <gmd:onlineResource>
                        <gmd:CI_OnlineResource>
                            <gmd:linkage>
                                <gmd:URL>http://ws.spotimage.com/sensorML/Envisat/Instrument_ENVISAT-ASAR_v01_draft03.xml</gmd:URL>
                            </gmd:linkage>
                            <gmd:name>
                                <gco:CharacterString>SensorML Description of Advanced Synthetic Aperture Radar (ASAR)</gco:CharacterString>
                            </gmd:name>
                        </gmd:CI_OnlineResource>
                    </gmd:onlineResource>
                </gmd:CI_Contact>
            </gmd:contactInfo>
            <gmd:role>
                <gmd:CI_RoleCode codeList="http://www.isotc211.org/2005/resources/codeList.xml#CI_RoleCode" codeListValue="originator">originator</gmd:CI_RoleCode>
            </gmd:role>
        </gmd:CI_ResponsibleParty>
    </gmd:citedResponsibleParty>
</gmd:CI_Citation>

A second place where SensorML could be referenced involves the ISO Data Quality / Lineage Section (see Figure at right). One of the important applications of SensorML is the description of the lineage of observations: "SensorML can provide a complete and unambiguous description of the lineage of an observation. In other words, it can describe in detail the process by which an observation came to be .... from acquisition by one or more detectors to processing and perhaps even interpretation by an analyst."

Data Quality
Lineage is included in the DQ_DataQuality section of the ISO standards (see Figure). That object also includes a DQ_DataScope that defines the subset of the dataset that a particular data quality report pertains to. The possible values are: attribute, attributeType, collectionHardware, collectionSession, dataset, series, nonGeographicDataset, dimensionGroup, feature, featureType, propertyType, fieldSession, software, service, model, tile. A quality report that gives the lineage of a particular parameter would have this code = attribute and the levelDescription would give the details about which specific attribute the report pertained to.
Lineage
The LI_Lineage section from ISO 19115-2 is shown in the next Figure. The processing of the observations can be described as a processStep or as processingInformation. In particular, the documentation element of the processingInformation provides a CI_Citation that could reference a SensorML document.
    <gmd:dataQualityInfo>
        <gmd:DQ_DataQuality>
            <gmd:scope>
                <gmd:DQ_Scope>
                    <gmd:level>
                        <gmd:MD_ScopeCode codeList="./resources/codeList.xml#MD_ScopeCode" codeListValue="attribute"/>
                    </gmd:level>
                    <gmd:extent/>
                    <gmd:levelDescription>
                        <gmd:MD_ScopeDescription>
                            <gmd:dataset>
                                <gco:CharacterString>Name of the Parameter goes here</gco:CharacterString>
                            </gmd:dataset>
                        </gmd:MD_ScopeDescription>
                    </gmd:levelDescription>
                </gmd:DQ_Scope>
            </gmd:scope>
            <gmd:lineage>
                <gmd:LI_Lineage>
                    <gmd:processStep>
                        <gmi:LE_ProcessStep>
                            <gmd:description>
                                <gco:CharacterString>Collection of parameter X by sensor Y</gco:CharacterString>
                            </gmd:description>
                            <gmd:dateTime gco:nilReason="inapplicable"/>
                            <gmi:processingInformation>
                                <gmi:LE_Processing>
                                    <gmi:identifier/>
                                    <gmi:documentation>
                                        <gmd:CI_Citation>
                                            <gmd:title>
                                                <gco:CharacterString>Process Description for Sensor Y</gco:CharacterString>
                                            </gmd:title>
                                            <gmd:date>
                                                <gmd:CI_Date>
                                                    <gmd:date>
                                                        <gco:Date>2007-02-28</gco:Date>
                                                    </gmd:date>
                                                    <gmd:dateType>
                                                        <gmd:CI_DateTypeCode codeList="http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode"
                                                            codeListValue="publication"/>
                                                    </gmd:dateType>
                                                </gmd:CI_Date>
                                            </gmd:date>
                                            <gmd:identifier>
                                                <gmd:MD_Identifier>
                                                    <gmd:code>
                                                        <gco:CharacterString>SensorID goes here</gco:CharacterString>
                                                    </gmd:code>
                                                </gmd:MD_Identifier>
                                            </gmd:identifier>
                                            <gmd:citedResponsibleParty>
                                                <gmd:CI_ResponsibleParty>
                                                    <gmd:organisationName>
                                                        <gco:CharacterString>DOC/NOAA/NESDIS/NGDC > National Geophysical Data Center, NESDIS, NOAA, U.S. Department of Commerce</gco:CharacterString>
                                                    </gmd:organisationName>
                                                    <gmd:contactInfo>
                                                        <gmd:CI_Contact>
                                                            <gmd:onlineResource>
                                                                <gmd:CI_OnlineResource>
                                                                    <gmd:linkage>
                                                                        <gmd:URL>http://www.ngdc.noaa.gov/sensorxxx.xml</gmd:URL>
                                                                    </gmd:linkage>
                                                                </gmd:CI_OnlineResource>
                                                            </gmd:onlineResource>
                                                        </gmd:CI_Contact>
                                                    </gmd:contactInfo>
                                                    <gmd:role>
                                                        <gmd:CI_RoleCode codeList="http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_RoleCode" codeListValue="originator"/>
                                                    </gmd:role>
                                                </gmd:CI_ResponsibleParty>
                                            </gmd:citedResponsibleParty>
                                        </gmd:CI_Citation>
                                    </gmi:documentation>
                                </gmi:LE_Processing>
                            </gmi:processingInformation>
                        </gmi:LE_ProcessStep>
                    </gmd:processStep>
                </gmd:LI_Lineage>
            </gmd:lineage>
        </gmd:DQ_DataQuality>
    </gmd:dataQualityInfo>
</gmi:MI_Metadata>

Contacts

Contacts in SensorML

<sml:contact xlink:role="urn:ogc:def:classifiers:OGC:contactType:owner">
  <sml:ResponsibleParty>
    <sml:organizationName>Center for Operational Oceanographic Products and Services</sml:organizationName>
    <sml:contactInfo>
      <sml:phone>
        <sml:voice>301-713-2806</sml:voice>
      </sml:phone>
      <sml:address>
        <sml:deliveryPoint>1305 East-West Highway</sml:deliveryPoint>
        <sml:city>Silver Spring</sml:city>
        <sml:administrativeArea>MD</sml:administrativeArea>
        <sml:postalCode>20910-3281</sml:postalCode>
        <sml:country>USA</sml:country>
      </sml:address>
      <sml:onlineResource xlink:href="http://tidesandcurrents.noaa.gov" />
    </sml:contactInfo>
  </sml:ResponsibleParty>
</sml:contact>

Contacts in ISO

<gmd:contact>
    <gmd:CI_ResponsibleParty>
        <gmd:organisationName>
            <gco:CharacterString>Center for Operational Oceanographic Products and Services</gco:CharacterString>
        </gmd:organisationName>
        <gmd:contactInfo>
            <gmd:CI_Contact>
                <gmd:phone>
                    <gmd:CI_Telephone>
                        <gmd:voice>
                            <gco:CharacterString>(301)-713-2806</gco:CharacterString>
                        </gmd:voice>
                    </gmd:CI_Telephone>
                </gmd:phone>
                <gmd:address>
                    <gmd:CI_Address>
                        <gmd:deliveryPoint>
                            <gco:CharacterString>1305 East-West Highway</gco:CharacterString>
                        </gmd:deliveryPoint>
                        <gmd:city>
                            <gco:CharacterString>Silver Spring</gco:CharacterString>
                        </gmd:city>
                        <gmd:administrativeArea>
                            <gco:CharacterString>MD</gco:CharacterString>
                        </gmd:administrativeArea>
                        <gmd:postalCode>
                            <gco:CharacterString>20910-3281</gco:CharacterString>
                        </gmd:postalCode>
                        <gmd:country>
                            <gco:CharacterString>USA</gco:CharacterString>
                        </gmd:country>
                        <gmd:electronicMailAddress>
                            <gco:CharacterString>co-ops.userservices@noaa.gov</gco:CharacterString>
                        </gmd:electronicMailAddress>
                    </gmd:CI_Address>
                </gmd:address>
                <gmd:hoursOfService>
                    <gco:CharacterString>9:00 - 5:00 Mountain</gco:CharacterString>
                </gmd:hoursOfService>
                <gmd:contactInstructions>
                    <gco:CharacterString/>
                </gmd:contactInstructions>
            </gmd:CI_Contact>
        </gmd:contactInfo>
        <gmd:role>
            <gmd:CI_RoleCode codeList="http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_RoleCode" codeListValue="pointOfContact"/>
        </gmd:role>
    </gmd:CI_ResponsibleParty>
</gmd:contact>

Keywords

Keywords are generally used to support hierarchical or text searches. They are included in both standards.

Keywords in SensorML SensorML supports keywords with a simple URL as the source (codespace) for the keywords:

<sml:keywords>
  <sml:KeywordList codeSpace="http://gcmd.nasa.gov/Resources/valids/archives/keyword_list.html">
    <sml:keyword>OCEAN PLATFORMS</sml:keyword>
    <sml:keyword>Oceans > Coastal Processes > Sea Surface Height</sml:keyword>
    <sml:keyword>Oceans > Tides > Tidal Height</sml:keyword>
    <sml:keyword>Oceans > Tides > Tidal Range</sml:keyword>
    <sml:keyword>Atmosphere > Atmospheric Winds > Surface Winds</sml:keyword>
    <sml:keyword>Oceans > Ocean Winds > Surface Winds</sml:keyword>
  </sml:KeywordList>
</sml:keywords>
Identification Objects
Keywords in ISO The ISO Standards support several types of keywords (discipline, place, stratum, temporal, theme) and a full Citation to the source (see Figure). This allows keywords that cover a much broader range of types and better tracking of the source of the keywords.

Classifiers and Aggregations

Classification of sensors and datasets is an important aid to discovery and understanding.

Classifiers in SensorML This example describes four groups that include a particular station. Each classifier includes the type of group (classifier.name) and a definition of that type (Term.definition), a link to information about the group (codeSpace), and the name of the group (value).

<sml:classification>
  <sml:ClassifierList>
    <sml:classifier name="Parent Network">
      <sml:Term definition="urn:x-noaa:def:classifier:NOAA::parentNetwork">
        <sml:codeSpace xlink:href="http://tidesandcurrents.noaa.gov" />
        <sml:value>urn:x-noaa:def:network:NOAA.NOS.CO-OPS::MetActive</sml:value>
      </sml:Term>
    </sml:classifier>
    <sml:classifier name="Parent Network">  
      <sml:Term definition="urn:x-noaa:def:classifier:NOAA::parentNetwork">
        <sml:codeSpace xlink:href="http://tidesandcurrents.noaa.gov" />
        <sml:value>urn:x-noaa:def:network:NOAA.NOS.CO-OPS::WaterLevelActive</sml:value>
      </sml:Term>
    </sml:classifier>
    <sml:classifier name="System Type Name">
      <sml:Term definition="urn:x-noaa:def:classifier:NOAA::systemTypeName">
        <sml:codeSpace xlink:href="http://tidesandcurrents.noaa.gov" /> 
        <sml:value>CO-OPS Observational System</sml:value>
      </sml:Term>
    </sml:classifier>
    <sml:classifier name="System Type Identifier">
      <sml:Term definition="urn:x-noaa:def:classifier:NOAA::systemTypeID">
        <sml:codeSpace xlink:href="http://mmisw.org/ont/mmi/platform/" />
        <sml:value>Platform</sml:value>
      </sml:Term> 
    </sml:classifier>
  </sml:ClassifierList>
</sml:classification>

Aggregations in ISO

MD_AggregateInformation Object
The ISO approach to aggregation uses codelists to describe the type of aggregation, an identifier to provide the name of the group, and a full citation to provide information about the group.
<gmd:aggregationInfo> <!-- Program Aggregation -->
  <gmd:MD_AggregateInformation>
    <gmd:aggregateDataSetName>
      <gmd:CI_Citation>
        <gmd:title>
          <gco:CharacterString>Reference information on collection urn:x-noaa:def:network:NOAA.NOS.CO-OPS::MetActive</gco:CharacterString>
        </gmd:title>
        <gmd:date>
          <gmd:CI_Date>
            <gmd:date>
              <gco:Date>2000-01-01</gco:Date>
            </gmd:date>
            <gmd:dateType>
              <gmd:CI_DateTypeCode
                codeList="http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode"
                codeListValue="publication"/>
            </gmd:dateType>
          </gmd:CI_Date>
        </gmd:date>
        <gmd:citedResponsibleParty>
          <gmd:CI_ResponsibleParty>
            <gmd:contactInfo>
              <gmd:CI_Contact>
                <gmd:onlineResource>
                  <gmd:CI_OnlineResource>
                    <gmd:linkage>
                      <gmd:URL>http://programReference.noaa.gov/urn:x-noaa:def:network:NOAA.NOS.CO-OPS::MetActive</gmd:URL>
                    </gmd:linkage>
                  </gmd:CI_OnlineResource>
                </gmd:onlineResource>
              </gmd:CI_Contact>
            </gmd:contactInfo>
            <gmd:role/>
          </gmd:CI_ResponsibleParty>
        </gmd:citedResponsibleParty>
      </gmd:CI_Citation>
    </gmd:aggregateDataSetName>
    <gmd:aggregateDataSetIdentifier>
      <gmd:MD_Identifier>
        <gmd:authority>
          <gmd:CI_Citation>
            <gmd:title>
              <gco:CharacterString>Reference information on collection urn:x-noaa:def:network:NOAA.NOS.CO-OPS::MetActive</gco:CharacterString>
            </gmd:title>
            <gmd:date gco:nilReason="inapplicable"></gmd:date>
          </gmd:CI_Citation>                        
        </gmd:authority>
        <gmd:code>
          <gco:CharacterString>urn:x-noaa:def:network:NOAA.NOS.CO-OPS::MetActive</gco:CharacterString>
        </gmd:code>
      </gmd:MD_Identifier>
    </gmd:aggregateDataSetIdentifier>
    <gmd:associationType>
      <gmd:DS_AssociationTypeCode
        codeList="http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DS_AssociationTypeCode"
        codeListValue="largerWorkCitation"/>
    </gmd:associationType>
    <gmd:initiativeType>
      <gmd:DS_InitiativeTypeCode
        codeList="http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DS_InitiativeTypeCode"
        codeListValue="collection"/>
    </gmd:initiativeType>
  </gmd:MD_AggregateInformation>
</gmd:aggregationInfo>

Deployments and Components

The concept of deployment is shared by many Ocean Observing System. A deployment is generally a time between maintenance visits to a station or platform. The nature of these systems is that a deployment is also a period of constant instrumentation and, therefore, a period of constant documentation at some level. Full documentation for a platform can include documentation for any number of deployments.

Deployments in SensorML SensorML includes the concept of components which has been used to describe deployments. It is not clear that this is the correct interpretation of sensorML components.

<!-- ================================================= -->
<!--              Components : deployments             -->
<!-- ================================================= -->
<sml:components>
   <sml:ComponentList>
      <!-- Site + deployment number  -->
      <sml:component name="ESTOC_11" xlink:href="Deployments/ESTOC_11.xml"/>
      <sml:component name="ESTOC_10" xlink:href="Deployments/ESTOC_10.xml"/>
      <sml:component name="ESTOC_09" xlink:href="Deployments/ESTOC_09.xml"/>
      <sml:component name="ESTOC_08" xlink:href="Deployments/ESTOC_08.xml"/>
      <!-- ... -->
   </sml:ComponentList>
</sml:components>

Deployments in ISO An example of describing deployments in ISO was proposed for the DART buoys:

<pre>
<gmd:DS_Series>
   <gmd:composedOf>
      <gmd:DS_DataSet>
         <gmd:has>
            <gmi:MI_Metadata>
               <!-- characteristics of the 1999 deployment -->
            </gmi:MI_Metadata>
         </gmd:has>
         <gmd:has>
            <gmi:MI_Metadata>
               <!-- characteristics of the 2000 deployment -->
            </gmi:MI_Metadata>
         </gmd:has>
         <gmd:has>
            <gmi:MI_Metadata>
               <!-- characteristics of the 2001 deployment -->
            </gmi:MI_Metadata>
         </gmd:has>
      <gmd:DS_DataSet>
   <gmd:composedOf>
   <gmd:seriesMetadata>
      <gmi:MI_Metadata>
         <!-- description of the collection -->
      </gmi:MI_Metadata>
   </gmd:seriesMetadata>
</gmd:DS_Series>