Spatial Information Services Stack Web Feature Service &Web Map Service (WxS) Rini Angreani, Josh Vote, Ben Caradoc-Davies, Robert Woodcock CSIRO Earth Science and Resource Engineering Perth, Australia Robert Atkinson CSIRO Land and Water Sydney, Australia 17 December 2010 Abstract The Spatial Information Services Stack (SISS) is a project developed for the AuScope Grid to provide a suite of tools that supports its infrastructure in achieving spatial data interoperability. Web Feature Service (WFS) and Web Map Service (WMS) are the essential components in SISS to help achieve this aim using a web interface. WFS and WMS provide the modern alternatives to the conventional data sharing which can be a difficult and slow process due to the difference in data format and platforms among users. WFS lets users access data in a well defined base format instantly, which means that it is platform independent, and can be extended or transformed into other formats to suit their needs. WMS works as a visual tool to display spatial data as images. Through WFS and WMS in SISS, users can view, access and analyse data from multiple sources using a single client interface. Keywords: WFS, WMS, WxS, Web Feature Service, Web Map Service, Complex Features, GeoServer, Application Schema, app-schema 1. Introduction The Open Geospatial Consortium (OGC) defines standards for spatially enabled web applications. This document will discuss the use of OGC Web Feature Service (WFS) [1] and Web Map Service (WMS) [2] in the Spatial Information Services Stack (SISS). Both WFS and WMS serve the purpose of interoperability by publishing spatial data. WFS is used to query data which may contain spatial information, whereas WMS is used to retrieve map images. When used together, WFS and WMS complement each other where WFS provides access to the underlying detailed information behind the simplified map imagery generated by WMS. 2. WFS/WMS in SISS The SISS project is initially developed as part of the AuScope Grid [3] to provide a suite of tools in achieving spatial data interoperability within the geoscience community. However, it is applicable to any other fields with spatially located information, including those as diverse as meteorology, water resources, fisheries, and health. Interoperability is crucial as the geoscience community relies on data from other providers to help analyse their own. The conventional way of sharing data is not an easy process, as there are no standards across data providers on the storage type and format. In order for users to view data from a specific provider, they often have to convert the data before importing to their own database. This process is even more time consuming when dealing with multiple data providers with varied backends. WFS eases interoperability by enabling queries on data from multiple providers, regardless of their backend type. The data is returned as XML, which is a standardised, extensible format that is also platform independent and recognised internationally. Furthermore, the data is provided almost instantly after executing the query, ensuring that they are up-to-date. WMS provides data in the form of map images and is primarily used as a visualisation tool within SISS. Similar to WFS, it increases interoperability by easing sharing data without the need for data conversion. Users can specify a certain image format when making a query. It is also possible to create a single client interface to access multiple WFS and WMS instances from multiple sources, as demonstrated in the AuScope Discovery Portal [4]. 3. GeoServer There are a number of technologies that serve WFS and WMS, both commercial and open source. The SISS project aims to provide a low-barrier to entry, therefore open source software suits this goal better since it is typically free or low-cost and has less restrictive licensing. Open source projects also normally accept external contribution, allowing collaborators to tailor them with our specific requirements. SISS provides support for multiple WFS/WMS implementations, however GeoServer [5] was chosen as the default implementation because it has a wider community, providing more support and chances for collaboration. GeoServer is also renowned for being Certified OGC Compliant for its implementations of WMS 1.1.1 [2] and is the reference implementation of WFS 1.0.0 [6] and WFS 1.1.0 [1]. In this document, all references to default WFS/WMS implementation in SISS refer to GeoServer, unless stated otherwise. A notable competitor to GeoServer is deegree [7] which is also an open source project that is OGC compliant and supported as an alternative within SISS. However, deegree has a smaller community which makes support and maintenance more difficult. Furthermore, in the beginning of the SISS project, deegree version 2.x requires XSLT in order to use it for serving complex features, which makes user configuration difficult. Snowflake Software [8] also provides an OGC compliant solution but it does not have the open source advantage. 3.1 Platforms Supported GeoServer is written in Java which is platform independent, so can be run on Windows, Linux and Mac operating systems. SISS developers have been using both Windows and Linux to run GeoServer. GeoServer is a Java servlet and is deployed in a servlet container such as Tomcat or Jetty 3.2 Data Stores GeoServer supports a wide range of data sources in many forms. It supports databases such as DB2, MySQL, SQL Server, Oracle, PostGIS, ArcSDE and many others. It also allows users to configure shape files or a directory as a data source, consuming another WFS output as a data source, and others. There are limited amount of supports for certain data stores, however this is improving. The GeoServer User Manual [9] provides more details on using data stores. 4. WFS ‘The 'Feature' is the fundamental unit of geospatial information’ [10]. Web Feature Service is an XML web service that enables users to retrieve features from distributed data sources using queries against spatial and non-spatial properties. WFS-T (Transactional) [6] also allows editing features, i.e. inserting, updating and deleting the data but it is outside the context of this project and will not be discussed here. The OGC defines levels of feature compliance: SF-0 and SF-1 [11], which correspond to what we refer to as simple and complex features in GeoServer. GeoServer has implemented WFS 1.0.0 and 1.1.0 with reference to OGC standards. In SISS, GeoServer is used with WFS 1.1.0. 4.1 Simple Features A simple feature in GeoServer is at an OGC SF-0 compliance level. The features can only have spatial properties and restricted built-in non-spatial properties of the following types: string, integer, measurement, date, real, binary, boolean and URI. Each property is also limited to 0 or 1 value, not allowing for “multi-valued” properties [11]. Simple features are mapped automatically in GeoServer, with every table as a feature type, and every column as a property type. The GeoServer GUI makes configuring simple features to data sources even easier. Schemas are not required to govern the output format, as they are produced based on the database structure. Consumers can access the schemas via a specific WFS request called DescribeFeatureType, which is discussed further in section 4.4.3. For example, Table 1 shows a database table called “offices” containing information about office locations. id PER state WA Suburb Perth location POINT(115.858591, -31.955101) KEN SUB WA WA Kensington Subiaco POINT(115.883181, -31.986774) POINT(115.823915, -31.948619) Table 1. Example of a database table "offices". GeoServer would produce the simple features as shown in Figure 1 following a getFeature request. <offices gml:id="PER"> <state>WA</state > <suburb>Perth</suburb > <location> <gml:Point srsName="urn:x-ogc:def:crs:EPSG:4326"> <gml:pos>-31.955101 115.858591</gml:pos> </gml:Point> </location> </offices> <offices gml:id="KEN"> <state>WA</state > <suburb>Kensington</suburb > <location> <gml:Point srsName="urn:x-ogc:def:crs:EPSG:4326"> <gml:pos>-31.986774 115.883181</gml:pos> </gml:Point> </location> </offices> <offices gml:id="SUB"> <state>WA</state > <suburb>Subiaco</suburb > <location> <gml:Point srsName="urn:x-ogc:def:crs:EPSG:4326"> <gml:pos>-31.948619 115.823915</gml:pos> </gml:Point> </location> </offices> Figure 1. The getFeature result on data from Table 1. With the straightforward mapping mechanism, GeoServer streams simple features from the data source with a high performance. However, the ease of configuration and high performance also comes with disadvantages. Since the schema is based on the database structure, other data sources also have to adapt the same structure to serve features of the same types. This limits interoperability for multiple users who want to share the same feature types. Additionally, some features have “multi-valued” properties, which cannot be expressed with simple features. Most significantly, a simple feature cannot contain deeply structured information, such as another feature, limiting its ability to represent relationships between different feature types. 4.2 Complex Features As previously discussed, simple features have limitations in serving certain data structures. Complex features adapt OGC feature compliance level SF-1 to overcome these limitations. 4.2.1 Advantages The advantages of complex features are detailed in sections 4.2.1.1 to 4.2.1.3. 4.2.1.1 Rich Data Representations SF-1 compliant features can have “multi-valued” properties, and user defined properties. Features can also contain rich, complex data that cannot be served as simple features. For example, referring to the “offices” example in section 4.1, we can extend the features to include information about the employees, which have their own data. The feature that we want to achieve would be shown in Figure 2. <offices gml:id="PER"> <state>WA</state > <suburb>Perth</suburb > <location> <gml:Point srsName="urn:x-ogc:def:crs:EPSG:4326"> <gml:pos>-31.955101 115.858591</gml:pos> </gml:Point> </location> <employees> <employee gml:id=”rangreani”> <name>Rini Angreani</name> <role>Software Engineer</role> </employee> <employee gml:id=”jsmith1”> <name>John Smith</name> <role>Tester</role> </employee> </employees> </offices> Figure 2. An example of a complex feature. The above example has “multi-valued” properties, which are quite common in many real life datasets. Moreover, relying on the database schema is not possible for this example, as it would not be able to map nested attributes, i.e. the properties of “employee” straight from the database. This is where user defined properties in complex features are useful. The properties are defined in separate target schemas that are often community agreed and maintained. Users have to map the properties from the schemas to relevant fields in the database via an XML mapping file for each feature type. This is illustrated in Figure 3. Figure 3. How complex features are produced [12]. 4.2.1.2 Data Source Flexibility Complex features in GeoServer can be configured from multiple tables per feature, giving more flexibility in the database design. Simple features require a single table to represent one feature type; each table can get very large and difficult to manage when many properties are present. It also means that users have to ensure they have the same table structures in order to publish the features of the same feature type. However, complex features of the same type can be published from different data sources of different structures. This increases interoperability since users would be able to readily share their data without having to modify their table structures. 4.2.1.3 Polymorphism Some data has conditional output that can have the form of different structures, to be determined at run time. This is what we call polymorphism in complex features. The most common scenario is when an attribute has a certain column value that mandates an attribute to be encoded with a certain structure. Complex features can be mapped with the conditions that are evaluated as the features are constructed. For example, the attribute er:material in EarthResourceML schema can be encoded as gsml:RockMaterial or gsml:Mineral, depending on the value of a column that stores the material type. The mapping for the attribute can contain a function as shown in Figure 4. <AttributeMapping> <targetAttribute>er:material</targetAttribute> <sourceExpression> <linkElement>if_then_else(equalTo(MATERIAL, ’rock’), ’gsml:RockMaterial’, ’gsml:Mineral’) </linkElement> </sourceExpression> </AttributeMapping> Figure 4. An example of conditional attribute mapping. The function translates to mapping er:material as gsml:RockMaterial type if the value of MATERIAL column is equal to “rock”, otherwise encode it as gsml:Mineral type. 4.2.2 Application Schema Complex features in GeoServer are handled by the application schema support [13] plugin, often referred to as “app-schema”. The application schema support plugin uses the existing architecture of simple features and builds complex features out of the simple features as illustrated in Figure 5. Figure 5. A diagram illustrating how application schema works. App-schema allows data from multiple tables to be compounded into a single complex feature type. This mechanism is called feature chaining. To configure the “offices” example mentioned before, we can use feature chaining to map employee data from “employees” table into the “offices” configuration. The XML mapping file would look like similar to that shown in Figure 6. <FeatureTypeMapping> <sourceDataStore>myDatabase</sourceDataStore> <sourceType>offices</sourceType> <targetElement>offices</targetElement> <attributeMappings> <AttributeMapping> <targetAttribute>state</targetAttribute> <sourceExpression><OCQL>STATE</OCQL></sourceExpression> </AttributeMapping> <AttributeMapping> <targetAttribute>suburb</targetAttribute> <sourceExpression><OCQL>SUBURB</OCQL></sourceExpression> </AttributeMapping> <AttributeMapping> <targetAttribute>location</targetAttribute> <sourceExpression><OCQL>LOC</OCQL></sourceExpression> </AttributeMapping> <AttributeMapping> <targetAttribute>employees</targetAttribute> <sourceExpression> <OCQL>EMPLOYEE_IDS</OCQL> <linkElement>employees</linkElement> <linkField>FEATURE_LINK</linkField> </sourceExpression> </AttributeMapping> </attributeMappings> <FeatureTypeMapping> <FeatureTypeMapping> <sourceDataStore>myDatabase</sourceDataStore> <sourceType>employees</sourceType> <targetElement>employees</targetElement> <attributeMappings> <AttributeMapping> <targetAttribute>FEATURE_LINK</targetAttribute> <sourceExpression><OCQL>getID()</OCQL></sourceExpression> </AttributeMapping> <AttributeMapping> <targetAttribute>name</targetAttribute> <sourceExpression><OCQL>NAME</OCQL></sourceExpression> </AttributeMapping> <AttributeMapping> <targetAttribute>role</targetAttribute> <sourceExpression><OCQL>ROLE</OCQL></sourceExpression> </AttributeMapping> </attributeMappings> <FeatureTypeMapping> Figure 6. Sample mapping file that uses feature chaining. The mapping file gives us the flexibility to map any database fields to attributes from the target schemas. The output is validated against the schema, but the validation is not so restrictive that it still leaves some flexibility for the users. For example, if the user configures attributes that don’t exist in the provided schemas, they would be ignored and won’t be encoded in the output. However, if the user misses some mandatory fields in the mapping file, the output will be encoded as configured without any warning to the user. It is assumed that it is the user’s responsibility to ensure the output conforms to the target schemas. Third party XML editors like XMLSpy [14] can be used to validate the output. As the Graphical User Interface (GUI) does not cater for configuring complex features, the mapping file has to be written manually. Manual editing makes it more error prone, as users would often make syntax mistakes and don’t realise it. It is therefore crucial to have meaningful error messages in relation to mapping syntax, and this process has been improving since the beginning of the implementation. 4.3 Why Use WFS WFS produces spatial data in XML form, which can be shared and consumed for various purposes. The following sections discuss the advantages of using WFS in more details. 4.3.1 Interoperability As WFS allows retrieving features from multiple data sources of different types, it increases interoperability between multiple data providers. Conventionally, users had to make a back up of their database and send it to other users. The multi-step process may mean that the data is no longer relevant or has changed upon receipt. Even worse, if their platforms or database types differ with each other, they have to convert the database in order to use it. Users can configure WFS to publish their data conveniently and ensure the information they’re sharing is up-to-date with the database. With WFS-T, real-time editing of the data can also be performed, as it allows users to update or delete features. However, this is not yet available for complex features and is considered as part of future works. WFS data is returned in XML format, which is a common syntax used in exchanging information. Since XML is a well known extensible format, a lot of applications can readily consume the data, and tailor them to their requirements. Interoperability is enhanced even further by using a community-agreed GML application schema, which defines in detail the meaning of each part of the data. The data can be downloaded to be analysed, and edited easily with consistent format, or transformed into different forms. A common example is to use a third party application to consume the data and visualise them. The features with spatial information are normally displayed as place marks on a map that also displays additional information. Figure 7 shows an example of a visualised simple feature with flat data. Figure 7. A visualised simple feature with flat data [4]. In AuScope Discovery Portal , complex features are visualised with links to related features. For example, the feature in Figure 8 displays a link to “Commodity Description”. When the link is clicked, it will display a window with the linked information as shown in Figure 9. Figure 8. A visualised complex feature with a link to nested data [4]. Figure 9. A window displaying linked information [4]. 4.3.2 Filter Support WFS also allows users to retrieve a selective subset of data to ease analysing relevant data only. Filtering speeds up the process of getting the desired data without having to manually parse the full output, which can be very large. For example, a geologist can query geologic features that contain certain composition that he/she is interested in. There are many types of filters to consider, and they can be combined to numerous possibilities. The great advantage of complex features is that they can represent relationships between features, and allow WFS filter queries to select features based on their relationships. For example it is possible to ask the following of such services, “show me all the mines within this region of Australia that have known reserves of gold”. 4.3.3 Spatial support In the case where spatial data is concerned, WFS will serve the data with the provided Coordinate Reference System (CRS). CRS determines the location and dimension of the geometries contained in the features, with reference to the Earth. Spatial data are normally provided with relevant CRS in the database, or that default CRS is set within the configuration. Users are able to reproject the features, translating the data from its set CRS code to another CRS code. Reprojecting can be done by setting a CRS in the WFS request parameter. This support is crucial because different CRS codes are used across the world, and the interpretation of geospatial data would vary accordingly. For example, a feature that has a native CRS of EPSG:4326 may have a geometric attribute as shown in Figure 10. <gsml:shape> <gml:Point srsDimension="2" srsName="urn:xogc:def:crs:EPSG:4326"> <gml:pos>-28.564421 122.480003</gml:pos> </gml:Point> </gsml:shape> Figure 10. Sample feature with EPSG:4326 projection. Appending “&srsName=urn:x-ogc:def:crs:EPSG:4238” in the request would produce the feature with reprojected values as shown in Figure 11. <gsml:shape> <gml:Point srsDimension="2" srsName="urn:xogc:def:crs:EPSG:4238"> <gml:pos>-28.564428478730168 122.47972006450976</gml:pos> </gml:Point> </gsml:shape> Figure 11. Sample feature reprojected to EPSG:4238. WFS also enables users to filter data that satisfy specific bounding box constraints. This is useful for getting features that are relevant to specific area only. Figure 12 illustrates an example of a visualised result of WFS GetFeature request with bounding box query. Figure 12. Visualised results of WFS bounding box query [4]. It should be noted that spatial support for WFS in GeoServer is limited to two dimensional (2D) data at the time of writing. 4.3.4 Standards WFS, WMS and their dependencies are OGC standards that are publicly available. These standards and specifications ease implementations and usage of the service, since users and developers can refer to the same documents for consistency. 4.4 How to Use WFS This section will summarise the main types of WFS requests used in SISS. Please refer to the WFS OGC specification [1] document to see all types of requests and how to use them. 4.4.1 GetFeature The GetFeature request is used to retrieve features, often garnished with filters. When a GetFeature request is executed, GeoServer retrieves relevant data from the data sources, builds the features and returns them in XML form. Filters can be specified to restrict spatial or non-spatial attributes, or a combination of them. Often maxFeatures is specified to get a certain number of features in shorter time, instead of getting the full amount of features. 4.4.2 GetCapabilities This request is used to describe the deployed WFS capabilities, i.e. all the available feature types and their respective supported operations and filters. For example, the extract of a GetCapabilities request in Figure 13 shows that queries can be run against the “gsml:Borehole” feature type. <FeatureTypeList> <Operations> <Operation>Query</Operation> </Operations> <FeatureType> <Name>gsml:Borehole</Name> <Title>Borehole</Title> <Abstract>Borehole Collar Location</Abstract> <DefaultSRS>urn:x-ogc:def:crs:EPSG:4326</DefaultSRS> <ows:WGS84BoundingBox> <ows:LowerCorner>-180.0 -90.0</ows:LowerCorner> <ows:UpperCorner>180.0 90.0</ows:UpperCorner> </ows:WGS84BoundingBox> </FeatureType> </FeatureTypeList> Figure 13. Sample of getCapabilities result. 4.4.3 DescribeFeatureType DescribeFeatureType is used to retrieve the schemas that define a feature type that is available in the service. The schemas are useful for end users for reference to the possible output so they can validate the features against them, or construct a mapping file for complex features. As GeoServer automatically maps database fields for simple features, the output of this request reflects the structure of the database table concerning the feature type. However, app-schema users must define the locations of the target schemas, in their mapping file. The target schemas in complex features can be multiple, but most of the time only the top level schema is required, as the schemas are often related and GeoServer recognises imports and includes within schemas. As a result, DescribeFeatureType on complex feature types would produce the provided locations of the target schemas. 4.5 Future Work GeoServer does not serve complex features as fast it does for simple features. Reusing simple features streaming mechanism for complex features is not suitable when multiple tables are involved. The need to amend the underlying architecture to improve feature chaining performance has been identified for future work. The current workaround to improve performance is to use materialised database views as opposed to regular database views. With the lack of GUI to configure complex features in GeoServer, good configuration error reporting is essential to aid the process; this (at time of writing) is work in progress. However, once the GUI has been implemented, this will become less critical. Having a GUI for app-schema would save a lot of time in learning the configuration file syntax and the manual efforts to construct the mapping files. Standards keep changing as new requirements and improvements are identified. It is important to conform to the most recent standards, and be aware of the upcoming changes. Support for GML 3.2 is currently being implemented in GeoServer and will be available soon. Interests in using WFS 2.0 have also been expressed by many parties, and there are plans to add this support in GeoServer. Catering for 3D spatial support is also an important candidate for future work. Last but not least, letting users edit complex features in real time would be a good feature. That is, extending WFS-T for app-schema to allow executing transactional operations on complex features. 5. WMS A Web Map Service (WMS) is a web service that implements the OGC WMS standard. GeoServer has implemented WMS 1.1.1 which is the chosen reference for this project. Simple visualisations are a powerful tool, and for some use-cases they can be just as important as access to the scientific data. WMS provides limited access to the underlying data and so its main strength is in its simplicity of use. A user can request, reproject and redesign visualisations of data, which are computed on the service, without the need to transfer the raw data back to the client. As such it is primarily used as a visualisation tool within SISS. 5.1 Why Use WMS WMS is a dataset visualisation tool, it can be used for a variety of use-cases which include: Dataset discovery - Being able to visualise all data for a specific spatial region can aid in finding potential datasets to incorporate into a model. Quality control - Being able to visually reference aspects of data against specific landmarks or other spatially referenced datasets to ensure they conform to expectations. Visual correlation - Being able to visualise multiple datasets that exist in a similar area may help to identify possible correlations and interactions between the datasets. Being a visualisation tool, WMS is best used as part of a graphical user interface in conjunction with a software package or library that supports it. 5.2 How to Use WMS This section summarises the main types of WMS requests used in SISS. Please refer to the WMS OGC Specification [2] document to see all the types of requests and how to use them. 5.2.1 GetCapabilities This is the first request to be made when accessing a WMS; the response will contain general information about the service along with a list of layers. Each layer within a WMS represents a distinct data source that can be queried using the various WMS requests described in this section. The GetCapabilities request can also be used to extract provider information, available raster formats and supported spatial reference systems. 5.2.2 GetMap The GetMap request allows users to request a layer as a raster image. It can accept parameters to spatially subset a layer and reproject it to a known spatial reference system. A typical request consists of a layer name, bounding box (in a supported spatial reference system) and desired output dimensions. The responses from a GetMap request in Figure 14 and Figure 15 are for the same layer but with different request parameters. Figure 14. A WMS response using EPSG:4326 and no bounding box [15]. Figure 15. A WMS response using EPSG:4326 longitude 110 to 129 and latitude -13 to -36 [15]. 5.2.3 GetFeatureInfo GetFeatureInfo is an optional operation that allows the client to request the underlying data from certain locations on the map [2]. To make a GetFeatureInfo request you must specify a layer and a spatial location in the query. The response will typically be a raw XML description of the data at that location; some services also support requesting the data as a HTML page that can be displayed in a web browser as in Figure 16. Figure 16. The HTML results of a GetFeatureInfo request from Southern Queensland [15]. 5.2.4 GetLegendGraphic GetLegendGraphic is another optional operation that when implemented returns a raster image Figure 17 that will represent the legend or key of a particular layer. A legend will assign a distinct meaning to any ambiguous aspects of a GetMap request. Figure 17. The results of a GetLegendGraphic request [15]. 5.3 Current Use WMS has been utilised in various places within the AuScope Discovery Portal which allows many instances and layers to be composed and viewed simultaneously. Figure 18 shows two layers from two separate WMS instances being overlaid on a map of South Australia. Figure 18. Geologic age [15] and seismic station locations overlaid on South Australia through the AuScope Discovery Portal. 5.4 Future Work Although the GeoServer SISS component supports generating a WMS for the previously defined SF-0 features, there is currently no WMS support for SF-1 features. What this means is that although data is now accessible through SF-1 features, there is no easy way to visualise this data. Every dataset must have a domain specific visualisation solution instead of a general purpose WMS. Future work could involve more GeoServer application schema development to extend WMS support to complex features. Being a visualisation tool WMS is typically used in conjunction with other standards for accessing data. The WMS 1.1.1 standard doesn’t include any provisions for referencing any related services and as a result any such references have to be maintained manually. There is an opportunity here for an extension to the standard that could allow a WMS to specify that the underlying data is also accessible via WFS or otherwise. 6. Conclusion Both Web Feature Service and Web Map Service are important components in SISS, as they assist in achieving spatial data interoperability by allowing easy access to data from multiple data sources. WMS allows displaying map images, whereas WFS provides more complex operations, suitable for analysing spatial data. Some data can be very rich and is best represented as complex features, using the application schema extension in GeoServer. The main functionality of application schema extension is to enable complex queries of data in an interoperable format. It is an ideal tool in achieving spatial data interoperability. The capability of the application schema extension will further improve as work is being conducted to enhance performance and enable displaying map images extracted from complex features. The addition of a graphical user interface to ease configuration would make it even more attractive. REFERENCES [1] OpenGIS Web Feature Service (WFS) Implementation Specification, OGC 04094, 2005. Available: http://www.opengeospatial.org/standards/wfs [2] OpenGIS Web Map Service (WMS) Implementation Specification version 1.1.1, OGC 01-068r3, 2002. Available: http://www.opengeospatial.org/standards/wms [3] AuScope Grid. Available: http://www.auscope.org.au/content.php/content/id/12 [4] AuScope Discovery Portal. Available: http://portal.auscope.org/ [5] GeoServer. Available: http://geoserver.org/display/GEOS/Welcome [6] Web Feature Service Implementation Specification, OGC 02-058, 2002. Available: http://www.opengeospatial.org/standards/wfs [7] deegree. Available: http://www.deegree.org [8] Snowflake Software. Available: http://www.snowflakesoftware.com [9] “Working with Data”, GeoServer User Manual, viewed 08 October 2010. Available: http://docs.geoserver.org/stable/en/user/data/index.html [10] S. Cox, “Feature Model and Encoding”, Solid Earth and Environment GRID, viewed 08 October 2010. Available: https://www.seegrid.csiro.au/twiki/bin/view/AppSchemas/FeatureModel [11] Geography Markup Language (GML) simple features profile (1.0.0), OGC 06049r1, 2006. Available: http://www.opengeospatial.org/standards/gml [12] G. Roldan 2005, viewed 08 October 2010. Available: http://svn.osgeo.org/geotools/trunk/modules/unsupported/app-schema/appschema/src/main/java/org/geotools/data/complex/doc-files/complexdsscheme.png [13] B. Caradoc-Davies & R. Angreani 2009, “Application Schema Support”, Geoserver User Manual, viewed 08 October 2010. Available: http://docs.geoserver.org/latest/en/user/data/app-schema/index.html [14] Altova XMLSpy. Available: http://www.altova.com/xmlspy.html [15] Geoscience Australia WMS, “AUS GA 1:2.5M Geologic Unit – Age”, viewed 08 October 2010. Available: http://www.ga.gov.au/map/broker/wms_info.php