Hi Is that my name being taken in vain? I think you mean Matthias. I'm not at all suprised though that complex data type support requirements are coming out of the wild, and being blamed on me :-)
Matthias - will you be at the OGC meeting in Darmstadt next week by any chance? I'll be there, then at Munster the week after, then FOSS4G in Sydney later in the month. If you will be around lets catch up. I'm trying to get the GML data type bindings in the XML parser fixed (its a long story). One part of this is providing an ability to create a ComplexAttributeImpl, driven by a schema, to the parser and encoder. I'm not 100% sure, but this might be what you are trying to do also. Once I get GML working properly, and the ability to do basic schema driven object bindings, then I'm considering creating default bindings for some very common patterns, including data types required to support the Observations and Measurements schema. The first step would (I am thinking) be creating default bindings for ISO19115 data types, so its easy for example to bind a simple string to a CI_ResponsibleParty, or MD_Identification which are very complex union classes. I'm not sure if it makes sense, but was thinking that convenience methods, in the form of Factories to produce Observation objects, or other SWE objects, could then be built as an extension module. Anyway, I'd love to hear about your high-level Use Cases - what you are trying to achieve. Ultimately we would need test cases for any capabilities designed to support these, so it would be good to have an instance example to play with. Regards Rob Atkinson On Fri, Sep 25, 2009 at 3:51 AM, Jody Garnett <[email protected]> wrote: > I don't understand what you mean with using an java.util.Map to store the > complex information. > > The default bindings handle things like xs:int and know enough to turn that > into an Integer. The default binding for an a complex type (at least for an > earlier version of the parser!) would produce a java.util.Map with the keys > as the element name and the value as appropriate. > The idea was to present something to Java developers making use of as much > of the schema as could be understood. > The interesting one is a choice of course ... forcing you to use containsKey > to see what choice was chosen > So if observation was not bound below I would a data structure similar to > ... > Map<String,Object> obvervation = new LinkedMap<String,Object>(); > obvervation.put( "_id", "obs_seismic_1234567"); > obvervation.put("samplingTime", new Date( .... ) ); > obvervation.put("procedure", new URI("urn:foo:foo2:def:procedure:bar23"")); > obvervation.put("observedProperty", new LinkedMap( ... ) ); > The advantage here is anything that *can* be bound is punted into a java > object - geometry; feature etc should show up ready to go. > So this is the theory; Rob is running into the limits of what this default > complex binding can do.... > Jody > > > Cheers, Matthias > > > > > > <om:ObservationCollection xmlns:om="http://www.opengis.net/om/0.0" > xmlns:gml="http://www.opengis.net/gml" > xmlns:xlink="http://www.w3.org/1999/xlink" > xmlns:swe="http://www.opengis.net/swe/0.0" > xmlns:ns="http://www.opengis.net/swe/0.0" > gml:id="oc_1234"> > <om:member> > <om:Observation gml:id="obs_seismic_1234567"> > <om:samplingTime> > <gml:TimeInstant> > <gml:timePosition>2007-12-12T01:12:00+02</gml:timePosition> > </gml:TimeInstant> > </om:samplingTime> > <om:procedure xlink:href="urn:foo:foo2:def:procedure:bar23" /> > <om:observedProperty> > <swe:CompositePhenomenon gml:id="comp_123" > dimension="1"> > <gml:csName>bar</gml:csName> > <swe:base xlink:href="urn:bar:foo2:def:phenomenon:SeismicComposite" /> > <swe:component xlink:href="urn:foo:foo2:def:quantity:depth:BelowEpicenter" > /> > <swe:component xlink:href="urn:bar:foo2:def:phenomenon:universalMagnitude" > /> > <swe:component xlink:href="urn:bar:foo2:def:phenomenon:originLocation" /> > </swe:CompositePhenomenon> > </om:observedProperty> > <om:featureOfInterest> > <gml:FeatureCollection gml:id="foi_earthquake"> > <gml:location> > <gml:Point> > <gml:pos srsName="urn:ogc:crs:epsg:4328"> > 104.095 -6.2522 > </gml:pos> > </gml:Point> > </gml:location> > </gml:FeatureCollection> > </om:featureOfInterest> > <om:resultDefinition> > <swe:DataBlockDefinition> > <swe:components name=""> > <ns:SimpleDataRecord> > <ns:field name=""> > <ns:Time definition="urn:ogc:data:time:iso8601" /> > </ns:field> > <ns:field name=""> > <ns:Quantity definition="urn:foo:foo2:def:quantity:depth:BelowEpicenter"> > <ns:uom xlink:href="m" /> > </ns:Quantity> > </ns:field> > <ns:field name=""> > <ns:Quantity definition="urn:bar:foo2:def:phenomenon:universalMagnitude" /> > </ns:field> > <ns:field name=""> > <ns:Text definition="urn:bar:foo2:def:phenomenon:originLocation" /> > </ns:field> > </ns:SimpleDataRecord> > </swe:components> > <swe:encoding> > <swe:TextBlock decimalSeparator="." blockSeparator="@@" > tokenSeparator="," /> > </swe:encoding> > </swe:DataBlockDefinition> > </om:resultDefinition> > <om:result> > 2007-12-12T01:12:00+02,109.12,8,104.095 -6.25229@@ > </om:result> > </om:Observation> > </om:member> > <om:member> > <om:Observation gml:id="obs_buoy_003_1234567"> > <om:samplingTime> > <gml:TimeInstant> > <gml:timePosition>2007-12-12T01:20:00+02</gml:timePosition> > </gml:TimeInstant> > </om:samplingTime> > <om:procedure xlink:href="urn:foo:foo2:def:procedure:doos:buoy:station:ts01" > /> > <om:observedProperty> > <swe:CompositePhenomenon gml:id="comp_1" > dimension="1"> > <gml:csName>bar</gml:csName> > <swe:base xlink:href="urn:bar:foo2:def:phenomenon:BuoyComposite" /> > <swe:component xlink:href="urn:bar:foo2:def:quantity:sealevel:change" /> > </swe:CompositePhenomenon> > </om:observedProperty> > <om:featureOfInterest> > <gml:FeatureCollection gml:id="foi_buoy1"> > <gml:location> > <gml:Point> > <gml:pos srsName="urn:ogc:crs:epsg:4328"> > 99.113 -2.7365 > </gml:pos> > </gml:Point> > </gml:location> > </gml:FeatureCollection> > </om:featureOfInterest> > <om:resultDefinition> > <swe:DataBlockDefinition> > <swe:components name=""> > <ns:SimpleDataRecord> > <ns:field name=""> > <ns:Time definition="urn:ogc:data:time:iso8601" /> > </ns:field> > <ns:field name=""> > <ns:Quantity definition="urn:bar:foo2:def:quantity:sealevel:change"> > <ns:uom xlink:href="cm" /> > </ns:Quantity> > </ns:field> > <ns:field name=""> > <ns:Text definition="urn:bar:foo2:def:phenomenon:BuoyLocation" /> > </ns:field> > </ns:SimpleDataRecord> > </swe:components> > <swe:encoding> > <swe:TextBlock decimalSeparator="." blockSeparator="@@" > tokenSeparator="," /> > </swe:encoding> > </swe:DataBlockDefinition> > </om:resultDefinition> > <om:result> > 2007-12-12T01:20:00+02,23.032,99.113 -2.7365@@ > </om:result> > </om:Observation> > </om:member> > <om:member> > <om:Observation gml:id="obs_buoy_002_1234567"> > <om:samplingTime> > <gml:TimeInstant> > <gml:timePosition>2007-12-12T01:41:00+02</gml:timePosition> > </gml:TimeInstant> > </om:samplingTime> > <om:procedure xlink:href="urn:foo:foo2:def:procedure:doos:buoy:station:ts02" > /> > <om:observedProperty> > <swe:CompositePhenomenon gml:id="comp_2" > dimension="1"> > <gml:csName>bar</gml:csName> > <swe:base xlink:href="urn:bar:foo2:def:phenomenon:BuoyComposite" /> > <swe:component xlink:href="urn:bar:foo2:def:quantity:sealevel:change" /> > </swe:CompositePhenomenon> > </om:observedProperty> > <om:featureOfInterest> > <gml:FeatureCollection gml:id="foi_buoy2"> > <gml:location> > <gml:Point> > <gml:pos srsName="urn:ogc:crs:epsg:4328"> > 97.547 -0.611 > </gml:pos> > </gml:Point> > </gml:location> > </gml:FeatureCollection> > </om:featureOfInterest> > <om:resultDefinition> > <swe:DataBlockDefinition> > <swe:components name=""> > <ns:SimpleDataRecord> > <ns:field name=""> > <ns:Time definition="urn:ogc:data:time:iso8601" /> > </ns:field> > <ns:field name=""> > <ns:Quantity definition="urn:bar:foo2:def:quantity:sealevel:change"> > <ns:uom xlink:href="cm" /> > </ns:Quantity> > </ns:field> > <ns:field name=""> > <ns:Text definition="urn:bar:foo2:def:phenomenon:BuoyLocation" /> > </ns:field> > </ns:SimpleDataRecord> > </swe:components> > <swe:encoding> > <swe:TextBlock decimalSeparator="." blockSeparator="@@" > tokenSeparator="," /> > </swe:encoding> > </swe:DataBlockDefinition> > </om:resultDefinition> > <om:result> > 2007-12-12T01:41:00+02,23.032,97.547 -0.611@@ > </om:result> > </om:Observation> > </om:member> > </om:ObservationCollection> > > > ------------------------------------------------------------------------------ > Come build with us! The BlackBerry® Developer Conference in SF, CA > is the only developer event you need to attend this year. Jumpstart your > developing skills, take BlackBerry mobile applications to market and stay > ahead of the curve. Join us from November 9-12, 2009. Register now! > http://p.sf.net/sfu/devconf > _______________________________________________ > Geotools-devel mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/geotools-devel > > ------------------------------------------------------------------------------ Come build with us! The BlackBerry® Developer Conference in SF, CA is the only developer event you need to attend this year. Jumpstart your developing skills, take BlackBerry mobile applications to market and stay ahead of the curve. Join us from November 9-12, 2009. Register now! http://p.sf.net/sfu/devconf _______________________________________________ Geotools-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/geotools-devel
