Quality information integration into 52north's Sensor Observation Service (SOS)
Each O&M observation contains an optional series of quality elements. The content of these quality information is implemented according to the ISO specifications 19113, 19114 and 19115. There are multiple quality informations specified. We decided to support at first only a subset of these quality types and within these quality types only the mandatory elements. The following quality types are supported by the 52north's Sensor Observation Service:
- gmd:DQ_CompletenessCommission: excess data present in a dataset
- gmd:DQ_CompletenessOmission: data absent from a dataset.
- gmd:DQ_QuantitativeAttributeAccuracy: accuracy of quantitative attributes
- gmd:DQ_NonQuantitativeAttributeAccuracy: correctness of non-quantitative attributes
The only mandatory element for each quality type is the gmd:result element. This element must contain either an gmd:DQ_ConformanceResult or an gmd:DQ_QuantitativeResult. We decided to implement at the moment only the gmd:DQ_QuantitativeResult. These element must have the following subelements:
- gmd:value: represents the result and the content is of record type, so the result could contain any kind of content.
- gmd:valueUnit: the unit of the value, which consists of a name and a unit type
- optional: gmd:valueType: this element could be used to describe the record contained in the value element.
An example of a quality element, which is returned in a Measurement or CategoryObservation is shown below:
In the generic observation the quality values are contained in the value tuples of the result element. An example could be:
Implementation of quality integration in 52north's SOS
Because every quality information has the same elements and differs only through the type, we decide to use just one class SosQuality to represent the quality information and in this class an enumeration 'QualityType' to indicate the type. Because each observation can have multiple quality informations, each AbstractSosObservation subclass has a collection of SosQuality objects. The picture below shows the UML
diagram of the SosQuality class:
Discussion of quality integration
The implementation of quality integration is a first step and should be open for discussion. Very interesting for the programmers are the needs of the users for specific quality types described in the ISO specs or in general. Also every proposal for improvement of code, datamodel, or conceptual design is very appreciated! Feel free to use the 52north's SWE mailing list to comment on the implementation!
Datamodel for SOS database
The picture below shows the model of the 'quality' table:
In our SOS standard datamodel, we have created a new table 'quality', which contains the elements:
- 'quality_value': value of the quality information
- 'quality_value_type': type of the record, in which the quality value is returned
- 'quality_value_unit': unit of the quality value
- 'quality_value_unit_type': unit type of the quality value
- 'quality_type': type of the quality. According to the enumeration 'QualityType' the value has to be either 'completenessComission', 'completenessOmission', 'quantAttributeAccuracy' or 'nonQuantAttributeAccuracy'
- 16 May 2007