Re: [galeon] [WCS-2.0.swg] CF-netCDF standards initiatives

Hi Tom,

No you're not out-of-lie at all. I'm glad you pointed out this problem.

Sorry for this example, I did not notice the xlink pointing to the record out 
of band.

According to the SWE Common standard, metadata can very well be put inline in 
the XML along with the encoded data. Actually this is the recomended approach.

I personally disagree with the approach of externalizing the record definition. 
This is inspired of the GML CRS spirit but I personally don't like it for the 
reason you mentioned. It is there because some communities like to register 
well known types of data structures for reuse...

Attached is the more "standard" version of doing this in SWE Common. Sorry for 
the confusion and I hope it will clarify and ease your fears of doing the same 
mistakes again :-)

Just one more thing: This examples shows text encoding but SWE Common allows 
raw or gzip/bzip compressed binary encoding as well. Since binary data cannot 
be embedded in XML (except in base64 which is one option in SWE Common), the 
binary data would have to be referenced from the XML description, thus 
potentially causing the problem you fear.

IMO the solution here is to wrap both XML description and binary data together 
in an existing packaging formats such as MIME (we do that at the output of web 
services using SOAP w/ attachments for example). This package can then be sent 
around without loosing track of the description.

This last point is still work in progress but the concept have been tested 
successfully.

Regards,

-------------------------------------------------
Alexandre Robin
Spot Image, Web and E-Business
Tel: +33 (0)5 62 19 43 62
Fax: +33 (0)5 62 19 43 43
http://www.spotimage.com
Before printing, think about the environment



> -----Message d'origine-----
> De : Tom Whittaker [mailto:whittaker@xxxxxxxx]
> Envoyé : jeudi 20 août 2009 18:55
> À : Robin, Alexandre
> Cc : John Caron; Unidata GALEON; Ben Domenico; wcs-2.0.swg
> Objet : Re: [galeon] [WCS-2.0.swg] CF-netCDF standards initiatives
> 
> I may be ignorant about these issues, so please forgive me if I am
> completely out-of-line....but when I looked at the examples, I got
> very concerned since the metadata needed to interpret the data values
> in the "data files" is apparently not actually in the file, but
> somewhere else.  We've been here before:  One of the single biggest
> mistakes that the meteorological community made in defining a
> distribution format for realtime, streaming data was BUFR -- because
> the "tables" needed to interpret the contents of the files are
> somewhere else....and sometimes, end users cannot find them!
> 
> NetCDF and ncML maintain the essential metadata within the files:
> types, units, coordinates -- and I strongly urge you (or whomever) not
> to make the  "BUFR mistake" again -- put the metadata into the files!
> Do not require the end user to have to have an internet connection to
> simply "read" the data....many people download the files and then
> "take them along" when traveling, for example.
> 
> If I simply downloaded the file at
> <http://schemas.opengis.net/om/1.0.0/examples/weatherObservation.xml>
> I would not be able to read it.  In fact, it looks like even if I also
> got the "metadata" file at:
> <http://schemas.opengis.net/om/1.0.0/examples/weatherRecord1.xml>
> I would still not be able to read it, since it also refers to other
> servers in the universe to obtain essential metadata.
> 
> That is my 2 cents worth....and I hope I am wrong about what I saw in
> the examples....
> 
> tom
> 
> --
> Tom Whittaker
> University of Wisconsin-Madison
> Space Science & Engineering Center (SSEC)
> Cooperative Institute for Meteorological Satellite Studies (CIMSS)
> 1225 W. Dayton Street
> Madison, WI  53706  USA
> ph: +1 608 262 2759
<?xml version="1.0" encoding="UTF-8"?>
<om:Observation xmlns="http://www.opengis.net/om/1.0"; 
xmlns:gml="http://www.opengis.net/gml"; xmlns:om="http://www.opengis.net/om/1.0"; 
xmlns:swe="http://www.opengis.net/swe/1.0.1"; 
xmlns:xlink="http://www.w3.org/1999/xlink"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://www.opengis.net/om/1.0 ../om.xsd">
  <gml:name>Weather Data</gml:name>
  <om:samplingTime>
    <gml:TimePeriod>
      <gml:beginPosition>2007-04-01T00:00:00.000-06:00</gml:beginPosition>
      <gml:endPosition>2007-04-01T03:40:00.000-06:00</gml:endPosition>
    </gml:TimePeriod>
  </om:samplingTime>
  <om:procedure xlink:href="urn:vast:sensor:weatherStation"/>
  <om:observedProperty>
          <swe:CompositePhenomenon gml:id="weather1" dimension="6">
      <gml:name 
codeSpace="urn:ietf:rfc:2141">urn:ogc:def:phenomenon:SEEGrid:weather1</gml:name>
      <swe:component xlink:href="urn:ogc:def:property:OGC:AirTemperature"/>
                        <swe:component 
xlink:href="urn:ogc:def:property:OGC:WindSpeed"/>
      <swe:component 
xlink:href="urn:ogc:def:property:OGC:WindDirectionToNorth"/>
      <swe:component 
xlink:href="http://sweet.jpl.nasa.gov/ontology/property.owl#AtmosphericPressure"/>
      <swe:component 
xlink:href="http://sweet.jpl.nasa.gov/ontology/property.owl#RelativeHumidity"/>
      <swe:component 
xlink:href="http://sweet.jpl.nasa.gov/ontology/property.owl#Visibility"/>
    </swe:CompositePhenomenon>
        </om:observedProperty>
  <om:featureOfInterest xlink:href="http://www.ga.gov.au/bin/gazd01?rec=293604"; 
xlink:role="urn:ogc:def:featuretype:SEEGRID:locality"/>
  <om:result>
    <swe:DataArray>
      <swe:elementCount>
        <swe:Count>
          <swe:value>23</swe:value>
        </swe:Count>
      </swe:elementCount>
      <swe:elementType name="WeatherRecordType">
        <swe:DataRecord>
          <swe:field name="AirTemperature">
            <swe:Quantity definition="urn:ogc:def:property:OGC:AirTemperature">
              <swe:uom xlink:href="urn:ogc:def:uom:OGC:degC"/>
            </swe:Quantity>
          </swe:field>
          <swe:field name="WindSpeed">
            <swe:Quantity definition="urn:ogc:def:property:OGC:WindSpeed">
              <swe:uom xlink:href="urn:ogc:def:uom:OGC:m_s"/>
            </swe:Quantity>
          </swe:field>
          <swe:field name="WindDirection">
            <swe:Quantity 
definition="urn:ogc:def:property:OGC:WindDirectionToNorth">
              <swe:uom xlink:href="urn:ogc:def:uom:OGC:deg"/>
            </swe:Quantity>
          </swe:field>
          <swe:field name="AtmosphericPressure">
            <swe:Quantity 
definition="http://sweet.jpl.nasa.gov/ontology/property.owl#AtmosphericPressure";>
              <swe:uom xlink:href="urn:ogc:def:uom:OGC:hPa"/>
            </swe:Quantity>
          </swe:field>
          <swe:field name="RelativeHumidity">
            <swe:Quantity 
definition="http://sweet.jpl.nasa.gov/ontology/property.owl#RelativeHumidity";>
              <swe:uom xlink:href="urn:ogc:def:uom:OGC:percent"/>
            </swe:Quantity>
          </swe:field>
          <swe:field name="Visibility">
            <swe:Category 
definition="http://sweet.jpl.nasa.gov/ontology/property.owl#Visibility"/>
          </swe:field>
        </swe:DataRecord>
      </elementTypê>
      <swe:encoding>
        <swe:TextBlock decimalSeparator="." tokenSeparator="," blockSeparator=" 
"/>
      </swe:encoding>
      <swe:values>
2007-04-01T00:00:00.000-06:00,30.4,28.8,155.8,1055.32,55,haze
2007-04-01T00:00:10.000-06:00,30.4,28.8,155.8,1055.4,59,haze
2007-04-01T00:00:20.000-06:00,30.4,28.8,155.7,1055.47,65,haze
2007-04-01T00:00:30.000-06:00,30.3,28.9,155.7,1055.55,66,haze
2007-04-01T00:00:40.000-06:00,30.3,28.9,155.6,1055.62,61,haze
2007-04-01T00:00:50.000-06:00,30.3,28.9,155.6,1055.69,55,haze
2007-04-01T00:01:00.000-06:00,30.3,28.9,155.5,1055.77,51,haze
2007-04-01T00:01:10.000-06:00,30.2,28.9,155.5,1055.84,48,haze
2007-04-01T00:01:20.000-06:00,30.2,28.9,155.4,1055.91,43,haze
2007-04-01T00:01:30.000-06:00,30.2,28.9,155.4,1055.99,44,haze
2007-04-01T00:01:40.000-06:00,30.2,29,155.3,1056.06,46,haze
2007-04-01T00:01:50.000-06:00,30.1,29,155.3,1056.13,48,haze
2007-04-01T00:02:00.000-06:00,30.1,29,155.2,1056.2,44,haze
2007-04-01T00:02:10.000-06:00,30.1,29,155.2,1056.27,41,haze
2007-04-01T00:02:20.000-06:00,30.1,29,155.1,1056.34,40,haze
2007-04-01T00:02:30.000-06:00,30,29,155.1,1056.41,36,clear
2007-04-01T00:02:40.000-06:00,30,29,155,1056.48,39,clear
2007-04-01T00:02:50.000-06:00,30,29.1,155,1056.55,50,haze
2007-04-01T00:03:00.000-06:00,30,29.1,155,1056.62,65,haze
2007-04-01T00:03:10.000-06:00,30,29.1,154.9,1056.69,70,haze
2007-04-01T00:03:20.000-06:00,29.9,29.1,154.9,1056.76,71,haze
2007-04-01T00:03:30.000-06:00,29.9,29.1,154.8,1056.83,75,haze
2007-04-01T00:03:40.000-06:00,29.9,29.1,154.8,1056.89,75,haze
      </swe:values>
    </swe:DataArray>
  </om:result>
</om:Observation>