I've been doing some test queries using complex features and the GeoSciML v3.0 (www.geosciml.org) application schemas which are based on GML 3.2.1.
I couldn't test with 2.3-beta1 because of http://jira.codehaus.org/browse/GEOS-5496 so I've used a later nightly build; namely http://gridlock.opengeo.org/geoserver/2.3.x/geoserver-2.3.x-2013-02-14-war.zip and http://gridlock.opengeo.org/geoserver/2.3.x/ext-2013-02-14/geoserver-2.3-SNAPSHOT-app-schema-plugin.zip running in Apache Tomcat 6.
I'm using a PostGIS backend with the data loaded from the scripts at https://www.seegrid.csiro.au/subversion/GeoSciML/cgi-reference-dataset/tags/2013-02-20/data/database/cgi-reference-postgis.sql and the GeoServer data directory at https://www.seegrid.csiro.au/subversion/GeoSciML/cgi-reference-dataset/tags/2013-02-20/services/geoserver/postgis/data/ .
I have tested a number of queries which give errors as follows:
Example 1
---------
A simple GetFeature request with no filtering criteria:
or WFS 1.1.0 equivalent:
both give the same results with all 35 gsmlgu:GeologicUnit's in the database but also two extra spurious empty gsmlgu:GeologicUnit elements:
<wfs:member xlink:href="#gsmlgu.geologicunit.ref-16777549126931119"><gsmlgu:GeologicUnit/></wfs:member>
and
<wfs:member xlink:href="#gsmlgu.geologicunit.ref-16777549126932875"><gsmlgu:GeologicUnit/></wfs:member>
Example 2
---------
A filter query on a simple property works correctly,
E.g. POSTing the query below to http://ogcdev.bgs.ac.uk:8082/geoserver-2.3.x-2013-02-14/ows retrieves the correct single gsmlgu:GeologicUnit feature:
---
<?xml version="1.0" encoding="UTF-8"?>
<GetFeature version="2.0.0" service="WFS" xmlns="http://www.opengis.net/wfs/2.0"
xmlns:fes="http://www.opengis.net/fes/2.0" xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:gml="http://www.opengis.net/gml/3.2" xmlns:swe="http://www.opengis.net/swe/2.0"
xmlns:gsml="http://xmlns.geosciml.org/GeoSciML-Core/3.0"
xmlns:gsmlgu="http://xmlns.geosciml.org/GeologicUnit/3.0"
xmlns:gsmlga="http://xmlns.geosciml.org/GeologicAge/3.0"
count="100">
<Query typeNames="gsmlgu:GeologicUnit">
<fes:Filter>
<fes:PropertyIsEqualTo>
<fes:ValueReference>gml:name</fes:ValueReference>
<fes:Literal>mullock heaps (Qhm)</fes:Literal>
</fes:PropertyIsEqualTo>
</fes:Filter>
</Query>
</GetFeature>
---
but a query on a nested complex property such as below incorrectly retrieves all 35 features in the database rather than the 2 matching ones (and also includes the two extra spurious empty gsmlgu:GeologicUnit elements as with the unfiltered query in Example 1).
---
<?xml version="1.0" encoding="UTF-8"?>
<GetFeature version="2.0.0" service="WFS" xmlns="http://www.opengis.net/wfs/2.0"
xmlns:fes="http://www.opengis.net/fes/2.0" xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:gml="http://www.opengis.net/gml/3.2" xmlns:swe="http://www.opengis.net/swe/2.0"
xmlns:gsml="http://xmlns.geosciml.org/GeoSciML-Core/3.0"
xmlns:gsmlgu="http://xmlns.geosciml.org/GeologicUnit/3.0"
xmlns:gsmlga="http://xmlns.geosciml.org/GeologicAge/3.0"
count="100">
<Query typeNames="gsmlgu:GeologicUnit">
<fes:Filter>
<fes:PropertyIsEqualTo>
<fes:ValueReference>gsml:relatedFeature/gsmlga:GeologicHistory/gsml:relatedFeature/gsmlga:GeologicEvent/gsmlga:eventEnvironment/swe:Category/swe:label</fes:ValueReference>
<fes:Literal>terrestrial setting</fes:Literal>
</fes:PropertyIsEqualTo>
</fes:Filter>
</Query>
</GetFeature>
---
Should I file bug reports about these results?
Marcus Sen
This message (and any attachments) is for the recipient only. NERC is subject to the Freedom of Information Act 2000 and the contents of this email and any reply you make may be disclosed by NERC unless it is exempt from release under the Act. Any material supplied to NERC may be stored in an electronic records management system.