S e n s o r M o d e l
L a n g u a g e O G C
0 7 - 0 0 0
8 SWE Common Conceptual Models
This document defines several basic value types and data encodings that will exist in the Sensor Web Enablement SWE Common namespace. These include definitions that are
expected to be shared among all SWE encodings and services. It is anticipated that in future releases, these SWE Common components will be defined as a separate standard
on which SensorML depends.
SWE Common provides a set of data types and related components that are required in various places across the suite of OGC SWE technologies. These fall into the following
categories:
• primitive data types, complementing those implemented in GML • general purpose aggregate data types, including records, arrays, vectors and
matrices • aggregate data types with specialized semantics, including position, curve, and
time-aggregates • standard encodings to add semantics, quality indication and constraints to both
primitive and aggregate types • specialized components to support semantic definitions, as required above
• a notation for the description of XML and non-XML array encodings. The last item in the list relates to a particularly important use case, concerning the
transport of large datasets organized as records and arrays. Such data may be represented for transport in fully XML encoded form with each data item in a separate element.
However, it is often desirable to allow alternative encodings of large volumes of data for transport, for both efficiency reasons and also for compatibility with legacy systems.
8.1 Simple Data Types
Of primary importance are the definitions of primitive values. Following patterns described by Fowler
[Fow1998],
the scalar values Quantity, Count, Boolean, Category, and Time provide the basic primitives. Within SensorML, these serve as the basis for
specifying all inputs, outputs, and parameters within a Process. The conceptual model for simple data types is provided in Fig. 8.1.
Copyright © 2007 Open Geospatial Consortium, Inc. All Rights Reserved.
38
S e n s o r M o d e l
L a n g u a g e O G C
0 7 - 0 0 0
Figure 8.1. Simple Data Types Conceptual Model 8.1.1 DataComponents
A data component represents an object whose value can be assigned to a property. The simple types carry standard properties inherited from the AbstractDataComponent class.
These include components supporting cross-referencing inherited transitively from a class designated AnyIdentifiableObject, an optional link to a definition providing the
component semantics, and an optional flag to indicate if the component value is fixed. The definition attribute identifies the phenomenon association or other context of the
value and takes a definition reference as its value.
Example: the definition may indicate that the value represents an atmospheric temperature or angle of a rotation. Its value should be obtained from a register of community-accepted terms.
As with all reference types in these conceptual diagrams, it is envisioned that these references will point to community-accepted terms that exist in online dictionaries or
registries.
The fixed attribute, when set to true, signifies that the value cannot be changed dynamically. Data components also include name and description properties, which
provide labels and
Copyright © 2007 Open Geospatial Consortium, Inc. All Rights Reserved.
39
S e n s o r M o d e l
L a n g u a g e O G C
0 7 - 0 0 0
Some types also realize attributes from the SimpleComponentAttributeGroup. The axisID allows a component value to be related to the axis of a defined referenceFrame. Many
may also be qualified by a quality description, and limited by constraints expressed as enumerated values or permitted ranges..
The value attribute in all of these types is optional. When it is absent the component serves as a “template” or descriptor, in a definition or schema for a data structure.
NOTE: The definition of Record in ISO 19103 provides for its schema to be provided in an associated RecordType. When used in “template” mode a SWE Common data aggregate implements RecordType. When
populated with values, the SWE Common data aggregate is self-describing: the record-type information is interleaved with the record.
8.1.2 Boolean
Boolean is a simple data component that represents a property that can be true or false and takes definition, axisID, and fixed as attributes. The quality of a Boolean should
indicate the level of confidence in the answer being true or false, expressed as a Quantity e.g. 85 or a Category e.g. confidence = high.
8.1.3 Category
Category represents textual data that is a member of some larger grouping of values. The type of category is defined by the definition attribute e.g., “dog” may be the value of a
category defined by “mammal”, while the codeSpace provides a dictionary of potential values. Category usually takes a token i.e., simple string as its value. A Category can
also have a constraint that further limits its potential value to being a member of an enumerated list of tokens. The quality of a Category would typically be a Quantity or a
Category indicating the level of confidence in the classification.
8.1.4 Text
Text represents a property that takes a string as its value. Like all data components, it can be unambiguously defined by the definition attribute.
8.1.5 Numerical data types
Numerical data types are simple data components that take one or more numbers as its value. In addition to attributes inherited from AbstractDataComponent, a numerical
provides a unit of measure declaration through the uom attribute. Thus, a numerical can specify that its value should be interpreted as a kilogram or as meters per second, for
instance. The unit of measure designation shall also be able to specify a multiplication scale factor. Any numerical can have a constraint attribute that takes either a value range
or a enumerated list of values. A numerical can also allows for a measure of its quality, typically expressed in terms of accuracy, precision, tolerance, or confidence.
8.1.6 Quantity and QuantityRange
Quantity represents a numerical that can be quantified using a decimal value. Quantities represent a real continuous value along some defined axis, and thus are usually encoded
Copyright © 2007 Open Geospatial Consortium, Inc. All Rights Reserved.
40
S e n s o r M o d e l
L a n g u a g e O G C
0 7 - 0 0 0
using a decimal number floating-point. Similarly, a QuantityRange provides minimum and maximum values as a decimal pair in that order.
8.1.7 Count and CountRange
Count represents a ‘countable’ property that can be quantified using an integer value. A Count includes many of the same attributes as Quantity, including definition, axisID,
constraint, and fixed, which have the same meaning. A CountRange provides minimum and maximum values as an integer pair in that order.
Example: Count can be used to represent a number of persons, a number of pixels, etc., and is particularly useful to define array indices.
8.1.8 Time and TimeRange
Time is supported and treated as a special type of numerical scalar, to which it adds the attributes referenceFrame and localFrame. These are used to identify the frame of
reference i.e., frame which the time value is given relative to or epoch and the frame of interest i.e., frame of which we are giving the time origin.
Example: in the case of a scanner instrument, this can be useful to specify that the ‘scan start time’ is given relative to ‘mission start time’.
One difference with a Quantity is that time is often expressed using a calendar based numerical system such as the ISO 8601 format. SensorML will support this possibility
through the encoding of the Time component. The Time component can then be used to specify a time after an epoch given by the referenceTime attribute using a decimal value
with a unit or an ISO style date andor time. Note that the referenceTime should be specified even for what is commonly called an ‘absolute time’ since there can be
confusion between GPS or Atomic time and International Earth Rotation and Reference Systems IERS time, which are typically offset by a few seconds leap seconds. A
TimeRange provides minimum and maximum values as a time value pair in that order.
8.1.9 Union Types
8.1.9.1 AnyNumerical, AnyScalar, AnyRange
These union types allow a choice of numeric types, of scalar types, and range types to be specified in a content model.
8.2 Aggregate Data Types