Value Types

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"
    }
  ]
}