A dataset has a particular type which indicates the type of data values
which are being, or have been observed by a specific platform. This
can be simple scalar types or more complex types like profile
or
other record
data being observed over time or along a track.
The default dataset type is quantity
which actually is a
numeric observation over time. A resource can be filtered by
dataset type(s).
General
A simplest data value has a timestamp
and a corresponding value
.
Showing time intervals (timestart
and timeend
) can be activated
via query parameter showTimeIntervals=true
.
NULL
values means no-data
.
While timestamp
and value
are mandatory (timestamp
is mutually
exclusive to timestart
and timeend
), other information can
be encoded as well (if present).
Member | Optional | Description |
---|---|---|
timestamp |
no | when value has been observed |
timestart |
no | when observation started (mutual exclusive to timestamp ) |
timeend |
no | when observation ended (mutual exclusive to timestamp ) |
value |
no | the actual (typed) data value |
geometry |
yes | relevant for mobile platforms |
parameters |
yes | additional parameters |
validTime |
yes | when the observation is being considered valid |
Each data value might have different optionals set.
Scalar data types
Scalar data types are single values (double
, count
, boolean
, double
,
text
). Observations of type double
are identified by quantity
. Other
scalar types are denoted as is.
Depending on what members are available (see above table) the following output would be valid.
Quantity Example (stationary
platform)
{
"quantity_1": {
"values": [
{
"timestamp": 1353326400000,
"value": 1,
"validTime": {
"start": 1381528800000,
"end": 1386802800000
},
"bar": "alice",
"foo": 3.4
},
{
"timestamp": 1353326460000,
"value": 1.1,
"bar": "bob",
"foo": 5
}
]
}
}
Text example (observation interval, stationary
platform)
{
"text_1": {
"values": [
{
"timestart": 1353326400000,
"timesend": 135332605000,
"value": "foo",
},
{
"timestart": 1353326460000,
"timeend": 1353326465000
"value": "bar",
}
]
}
}
Quantity example (mobile
platform)
{
"values": [
{
"timestamp": 1362610500000,
"value": 261.494,
"geometry": {
"type": "Point",
"coordinates": [
3.020595,
52.40741
]
}
},
{
"timestamp": 1362610520000,
"value": 261.738,
"geometry": {
"type": "Point",
"coordinates": [
3.018087,
52.408466
]
}
},
]
}
Complex data types
Complex data types are compound values. Each compound value shall be seen as abstract
value type which has to be made concrete by data providers. In case of providing
record data, the dataset should provide a concrete value type like record+quantity
in
case of quantity
values. Other, completely customized, value types (like my-type
)
are also possible, but lead to less compatibility towards client (it has to know how to
deal with that specific type).
Please note that combining complex types with a complex type (e.g. `record+record) is not supported by the API, just one subtype level.
Depending on what members are available (see above table) the following output would be valid.
Record
A record’s value
member is a map of key-valued objects. However, a record
is abstract
and each implementation have to provide its own valueType
within the dataset
metadata.
Typed Record Example: text
(stationary
platform)
{
"record+text_309510107": {
"values": [
{
"timestamp": 1437160475022,
"value": {
"east": "http://example.org/upload/201507/55a9541b20c50876106726.jpg",
"south": "http://example.org/upload/201507/55a9541b26583054767586.jpg",
"north": "http://example.org/upload/201507/55a9541b19209320230740.jpg",
"spot": "http://example.org/upload/201507/55a9541b3782c557670845.jpg",
"west": "http://example.org/upload/55a9541b30c2f165697520.jpg"
}
}
]
}
}
Customized Example: fotoquest
(stationary
platform)
Fotoquest value types describe some
kind of (referenced) media taken at a given location. It could also be described more
generally as record+geojson
. Background infos about the project can be found at the
Fotoquest Homepage.
{
"fotoquest_309510107": {
"values": [
{
"timestamp": 1437160475022,
"value": {
"east": {
"type": "Feature",
"id": "120644",
"properties": {
"id": "120644",
"href": "http://example.org/upload/201507/55a9541b20c50876106726.jpg"
},
"geometry": {
"type": "Point",
"coordinates": [
14.27377,
48.30273
]
}
},
"south": {
"type": "Feature",
"id": "120645",
"properties": {
"id": "120645",
"href": "http://example.org/upload/201507/55a9541b26583054767586.jpg"
},
"geometry": {
"type": "Point",
"coordinates": [
14.27375,
48.30275
]
}
},
"north": {
"type": "Feature",
"id": "120643",
"properties": {
"id": "120643",
"href": "http://example.org/upload/201507/55a9541b19209320230740.jpg"
},
"geometry": {
"type": "Point",
"coordinates": [
14.27378,
48.30273
]
}
},
"spot": {
"type": "Feature",
"id": "120647",
"properties": {
"id": "120647",
"href": "http://example.org/upload/201507/55a9541b3782c557670845.jpg"
},
"geometry": {
"type": "Point",
"coordinates": [
14.27375,
48.30275
]
}
},
"west": {
"type": "Feature",
"id": "120646",
"properties": {
"id": "120646",
"href": "http://example.org/upload/55a9541b30c2f165697520.jpg"
},
"geometry": {
"type": "Point",
"coordinates": [
14.27374,
48.30275
]
}
}
}
}
]
}
}
Profile
A value type which contain observations along a vertical axis (e.g. observations made on different depth levels). The vertical unit is overridable within each vertical item.
Vertical Example (stationary
platform)
{
"values": [
{
"timestamp": 1353330000000,
"value": [
{
"vertical": 10,
"value": 100
},
{
"vertical": 20,
"value": 200
}
],
"verticalUnit": "test_unit_4"
},
{
"timestamp": 1353330540000,
"value": [
{
"vertical": 12,
"value": 400
},
{
"vertical": 15,
"value": 300
}
],
"verticalUnit": "test_unit_4"
}
]
}