Simple Data Types Change Requests | OGC

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