Print This Post

Registry Service as a flexible GML Server

For many people, the OGC Web Feature Service (WFS) is the canonical GML data server because it is almost always used in this way. But there is an alternative means of using GML, and of serving GML data, that is less well known — an OGC Registry Service (CSW-ebRIM).

When serving GML from a Service Registry, there are some options to consider that will dictate the form of the GML produced.

The OGC Registry Service uses GML to encode the geometric properties of a Registry Object, which can be an Extrinsic Object (with additional content in the repository), an External Link (with additional content stored remotely), an Association (a relationship between registry objects), or a Classification or Classification Node (that organizes Registry Objects into categories).

A CSW-ebRIM Extrinsic Object or External Link type can be created to mimic GML features or other kinds of GML object types (e.g. CRS, CRS components). Such an object type is assigned properties (SLOTS) similar to those in a GML Application Schema. Each property of a particular feature in the Application Schema would be mapped to a SLOT on the Extrinsic Object or External Link that corresponds to it. This approach generally allows GML data to be ingested into (harvested by) the Registry.

The registry will not, however, return this data in the standard GML format. Instead, it will return the data encoded as CSW-ebRIM XML, with GML being used for all geometric properties. In many cases, the core of this data will look very much like (or may even be identical to) GML. In many other cases, it can easily be transformed into GML data using the Registry Service’s outbound transformation utility. Storing GML in this manner can provide many features that are not available if one uses only a Web Feature Service (WFS). For example, GML features can be associated with non-GML documents, images, and text. Also, a feature can be classified under multiple different types at the same time because the constraint of the type being defined by the set of GML properties, as is the case with the GML data model, no longer applies. Finally, it is easy to relate GML features to one another and to construct arbitrary collections.

In some cases, GML objects (instances) can be treated as unit objects, and the GML can be stored in the registry’s repository. In these cases, the GML produced is compliant with the selected GML version and can meet all GML constraints. For example, a Registry Service might be configured to manage CityGML data, with the CityGML data for each structure (building, traffic way, etc.) being stored in the repository, and specific properties of each structure (such as GML version, CityGML version, spatial extent or footprint polygon) being attached to the associated Registry Objects. In this way, a registry can be very quickly deployed to serve different types of data, such as CityGML, AIXM, WXXM, or any other data based on a selected GML application schema. The registry would, of course, maintain an association from each data object to the GML application schema (which would also be stored in the registry). Such a server would support spatial and other queries for GML data based on the specific properties of each GML object extracted at harvest time.

In effect, a Registry Service deployed in this manner could be a registry of buildings (or structures), weather events, airports (and airport procedures) and airspaces, or any other types of objects defined by the associated application schema. The registry’s data model could then be used to enhance the semantics of the stored GML objects by providing object classifications (taxonomies), object relationships, and logical collections.

The registry provides an audit trail at the application level, recording the registry operations (e.g. object submitted), the person (or system) doing the operation, and the time that it took place. Users can also be automatically notified of any such changes as they occur.

The Registry Service is also fully transactional, and objects can be inserted or modified across the Internet using simple XML messages.

Next time you have requirements to serve (or capture) GML-based data, think about using a registry, a highly flexible and capable GML server.