INSPIRE Thematic Clusters

O&M out-of-band encoding

214 Views

Hi,

I'm currently investigating options for the out-of-band encoding of observation results, yet again going through the various options we laid out in D2.9.

My question is if anybody has taken this work further, tried to implement any of the options described?

And, while they all look quite feasible to encode, at the end of the day, it also needs to be consumable by applications.

Thoughts/Ideas/Examples anybody?

:)

Kathi

Replies

    • Public

    By Sylvain GRELLET

    Hi Kathi,

    It is in my roadmap for our work in EPOS Research Infrastructure.
    But unfortunately we have not been able to start the exercise yet.
    In our context, there are observation results which are stored in specific formast that it wouldn't make sense to re-encode in XML.
    For example:
    - LAS for BoreholeLogs : http://www.cwls.org/las/
    - SEG-Y for geophysics (seimic data) : https://en.wikipedia.org/wiki/SEG-Y

    I was currently hesitating between D2.9 out-of-band options 2, 3 and 4.
    Theoretically (no test done yet) the idea was, in the result, to provide a link to the external result file but with a description of what type of file is at the end of the URL (to avoid clients requesting encoding they can't handle).

    We'll work on this in 2018 now.

    Sylvain

    • Public

    By Carsten HOLLMANN

    Hi Kati, Hi Sylvain,

    in the 52°North SOS we have implemented the option 2 of D2.9 out-of-band as a simple representation of out-of-band values which we called ReferenceObservation.

    The result of the observation is a xlink to the data and further information such as the result type and the access modes might be defined in the sensor/procedure description, e.g. outputs of a SensorML document.

    Best,
    Carsten

    • Public

    By Katharina SCHLEIDT

    Hi Carsten,

    could you provide a full example of the 52°N ReferenceObservation? I'm trying to understand how one can provide infomation on result access modes within the procedure, so much easier with examples!

    :)

    Kathi

    • Public

    By Katharina SCHLEIDT

    OK, here my first attempt at out-of-band encoding of irregular profiles - I've gone for option 6 from D2.9 (SWE Common Datastream) as most of the other options required provision of the domain within the XML result, difficult with irregularly spaced domain as the ReferencableGrid encoding has its own issues. The Con listed in D2.9 that the domain is not explicitly provided could be mitigated by providing the FoI as the fully modelled vertical transect, then all one would be missing are the exact measurement intervals along this transect.

    Full information is then provided in the accompanying external ODV file. Bits I'd like to put up for discussion (please add anything I missed!):

    • should the depth column of the ODV file be added to the list of fields provided in the data record?
    • where could one provide further info as to the file type (in the current case either ODV or NetCDF)? Is it possible to add mime types (and what mime type would ODV be)?

    Please note that the construct below is formally invalid, as at present, the ProfileObservation result is constrained to rectified or referencable grids, more on that in the coverage discussion.

    XML Example: O&M out-of-band encoding ProfileObservation SWE Common

    <?xml version="1.0" encoding="UTF-8"?>
    <omso:ProfileObservation gml:id="PO_1619169_NTKGAATX" xmlns:om="http://www.opengis.net/om/2.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:gml="http://www.opengis.net/gml/3.2" xmlns:sams="http://www.opengis.net/samplingSpatial/2.0" xmlns:gmlcov="http://www.opengis.net/cis/1.1/gml" xmlns:sf="http://www.opengis.net/sampling/2.0" xmlns:swe="http://www.opengis.net/swe/2.0" xmlns:omso="http://inspire.ec.europa.eu/schemas/omso/3.0" xsi:schemaLocation="
                        http://www.opengis.net/cis/1.1/gml
                        http://schemas.opengis.net/cis/1.1/gml/cisAll.xsd
                        http://inspire.ec.europa.eu/schemas/omso/3.0
                        http://inspire.ec.europa.eu/schemas/omso/3.0/SpecialisedObservations.xsd
                        http://www.opengis.net/swe/2.0
                        http://schemas.opengis.net/sweCommon/2.0/swe.xsd">
        <!--<omso:PointTimeSeriesObservation gml:id="o_1">-->
        <gml:description xlink:href="http://seadatanet.maris2.nl/v_cdi_v3/print_xml.asp?n_code=1619169">
            <!-- Description  -->
            A single series of CTD or STD cast data collected on 17.06.2006
        </gml:description>
        <gml:name>TS profile 527 Cruise 2006209</gml:name>
        <!-- Name -->
        <om:type xlink:href="http://inspire.ec.europa.eu/featureconcept/ProfileObservation"/>
        <om:metadata xlink:href="http://seadatanet.maris2.nl/v_cdi_v3/print_xml.asp?n_code=1619169"/>
        <!-- Type -->
        <om:phenomenonTime>
            <!-- Phenomenon Time -->
            <gml:TimePeriod gml:id="PT_1619169_NTKGAATX">
                <gml:beginPosition>2006-06-17</gml:beginPosition>
                <gml:endPosition>2006-06-17</gml:endPosition>
            </gml:TimePeriod>
        </om:phenomenonTime>
        <om:resultTime>
            <gml:TimeInstant gml:id="RT_1619169_NTKGAATX">
                <gml:timePosition>2006-06-17</gml:timePosition>
            </gml:TimeInstant>
        </om:resultTime>
        <!-- link to the procedure. Still looking to see where this can be taken from in SDN -->
        <om:procedure xlink:href="mySensorML.com"/>
        <!-- Definition of the Observed Property -->
        <om:observedProperty xlink:href="http://vocab.nerc.ac.uk/collection/P01/current/NTKGAATX/"/>
        <om:featureOfInterest>
            <!-- Foi -->
            <sams:SF_SpatialSamplingFeature gml:id="FOI_1619169_NTKGAATX">
                <sf:type xlink:href="http://www.opengis.net/def/samplingFeatureType/OGC-OM/2.0/SF_SamplingPoint"/>
    <!--            <sf:sampledFeature xlink:href="https://sweet.jpl.nasa.gov/2.3/realmOcean.owl#OpenOcean" xlink:title="OpenOcean"/> -->
                <sf:sampledFeature xlink:href="http://vocab.nerc.ac.uk/collection/E01/current/ESS070/"/>
                <sams:shape>
                    <!-- Note: srs is missing from CDI file, gmd:referenceSystemInfo is empty, assuming 4326 -->
                    <gml:Point gml:id="SF_1619169_NTKGAATX" srsName="http://www.opengis.net/def/crs/EPSG/0/4326">
                        <gml:pos>19.8829 70.9942</gml:pos>
                    </gml:Point>
                </sams:shape>
            </sams:SF_SpatialSamplingFeature>
        </om:featureOfInterest>
        <om:result>
            <!-- Result -->
            <swe:DataStream id="DS_ID">
                <swe:elementType name="MarineProfile">
                    <swe:DataArray definition="http://sweet.jpl.nasa.gov/2.0/info.owl#Raster">
                        <swe:elementCount><swe:Count><swe:value>24</swe:value></swe:Count></swe:elementCount>
                        <swe:elementType name="ProfileCell">
                            <swe:DataRecord definition="http://sweet.jpl.nasa.gov/2.0/info.owl#Cell">
                                <swe:field name="NTKGAATX">
                                    <swe:Quantity definition="http://vocab.nerc.ac.uk/collection/P01/current/NTKGAATX/">
                                        <swe:label>NO3+NO2_Unfilt_ColAA/kg</swe:label>
                                        <swe:uom code="umol/kg"/>
                                    </swe:Quantity>
                                </swe:field>
                            </swe:DataRecord>
                        </swe:elementType>
                    </swe:DataArray>
                </swe:elementType>
                <swe:encoding>
                    <swe:TextEncoding tokenSeparator="\t" blockSeparator="\n"/>
                </swe:encoding>
                <swe:values xlink:href="./b1619169.txt"/>
            </swe:DataStream>
        </om:result>
    </omso:ProfileObservation>

    • Public

    By Carsten HOLLMANN

    Hi Kati,

    here is an example of the ReferenceObservation and how the information might be encoded in a sensor/procedure description (SensorML).

    The sml:outputs can contain a sml:DataInterface with interface parameters which could provide information about the acces  modes.

    The ReferenceObservaiton example:ReferenceObservation

    <om:OM_Observation gml:id="o1"
        xmlns:gml="http://www.opengis.net/gml/3.2"
        xmlns:xlink="http://www.w3.org/1999/xlink"
        xmlns:om="http://www.opengis.net/om/2.0"
        xmlns:sams="http://www.opengis.net/samplingSpatial/2.0"
        xmlns:sf="http://www.opengis.net/sampling/2.0"
        xmlns:xs="http://www.w3.org/2001/XMLSchema"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.opengis.net/om/2.0 http://schemas.opengis.net/om/2.0/observation.xsd">
        <om:type xlink:href="http://www.opengis.net/def/observationType/OGC-OM/2.0/OM_ReferenceObservation"/>
        <om:phenomenonTime>
            <gml:TimeInstant gml:id="phenomenonTime">
                <gml:timePosition>2012-11-19T13:45:15.000+00:00</gml:timePosition>
            </gml:TimeInstant>
        </om:phenomenonTime>
        <om:resultTime xlink:href="#phenomenonTime"/>
        <om:procedure xlink:href="http://www.52north.org/test/procedure/9"/>
        <om:observedProperty xlink:href="http://www.52north.org/test/observableProperty/9_9"/>
        <om:featureOfInterest>
            <sams:SF_SpatialSamplingFeature gml:id="ssf_test_feature_9">
                <gml:identifier codeSpace="">http://www.52north.org/test/featureOfInterest/9</gml:identifier>
                <gml:name>52°North</gml:name>
                <sf:type xlink:href="http://www.opengis.net/def/samplingFeatureType/OGC-OM/2.0/SF_SamplingPoint"/>
                <sf:sampledFeature xlink:href="http://www.52north.org/test/featureOfInterest/1"/>
                <sams:shape>
                    <gml:Point gml:id="test_feature_9">
                        <gml:pos srsName="http://www.opengis.net/def/crs/EPSG/0/4326">51.935101100104916 7.651968812254194</gml:pos>
                    </gml:Point>
                </sams:shape>
            </sams:SF_SpatialSamplingFeature>
        </om:featureOfInterest>
        <om:result xsi:type="gml:ReferenceType" xlink:href="http://my.server.org/myData_1233.txt" />
    </om:OM_Observation>

    The SensorML ouput section:SensorML-Ouputs

    <?xml version="1.0" encoding="UTF-8"?>
    <sml:PhysicalComponent gml:id="123" xml:lang="en"
    xmlns:sml="http://www.opengis.net/sensorml/2.0"
    xmlns:swe="http://www.opengis.net/swe/2.0"
     xmlns:gml="http://www.opengis.net/gml/3.2"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:xlink="http://www.w3.org/1999/xlink"
     xsi:schemaLocation="http://www.opengis.net/sensorml/2.0 http://schemas.opengis.net/sensorml/2.0/sensorML.xsd">
     ...
        <sml:outputs>
            <sml:OutputList>
                <sml:output name="tempAndWind">
                    <sml:DataInterface">
                        <sml:data>
                            <swe:DataStream>
                                ...
                            </swe:DataStream>
                        </sml:data/>
                        <sml:interfaceParameters>
                            <swe:DataRecord>
                                <swe:field name="resultType">
                                    <swe:Text definition="resultType">
                                        <swe:value>result type</swe:value>
                                    </swe:Text>
                                </swe:field>
                                <swe:field name="accessModes">
                                    <swe:Text definition="accessModes">
                                        <swe:value>access mode</swe:value>
                                    </swe:Text>
                                </swe:field>
                            </swe:DataRecord>
                        </sml:interfaceParameters>
                    </sml:DataInterface>
                </sml:output>
            </sml:OutputList>
        </sml:outputs>
    ...
    </sml:PhysicalComponent>

    • Public

    By Katharina SCHLEIDT

    Hi Carsten,

    thanks!

    quick question - is the data link http://my.server.org/myData_1233.txt referencing the sml bit below? if so, why is it .txt instead of .xml (or .sml)?

    :?

    Kathi

     

    • Public

    By Carsten HOLLMANN

    Hi Kati,

    No, the data link references the file/location where you find the values, in the example a text file.

    And the sml contains the description of how the data is represented (swe:DataStream can be the same as in your example except the swe:values element) in the linked file of the observation and some additional information.

    Carsten

    • Public

    By Katharina SCHLEIDT

    Hi Carsten,

    So the SML is what one would receive upon resolving the procedure xlink:href="http://www.52north.org/test/procedure/9"?

    :?

    Kathi

    • Public

    By Carsten HOLLMANN

    Hi Kathi,

    yes, if the URL of the procedure is resolvable and provides the SML.

    If the SML is provided by a SOS you would receive the SML when you send a DescribeSensor request to the SOS service with the procedure identitfier (http://www.52north.org/test/procedure/9.

    Carsten

Environmental Monitoring and Observations Cluster

Environmental Monitoring and Observations Cluster

Environmental Monitoring Facilities, Observations and Measurements