dev.sensorthings.multiObservation

sensorthings.dev

{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "A composite observation bundling multiple co-produced results from a single act of sensing. Each entry carries its own ObservedProperty, unit, and scale metadata. Use this instead of separate Observations when the results are genuinely co-produced (e.g. wave statistics from spectral processing) and have no independent existence.",
      "key": "any",
      "record": {
        "properties": {
          "derivedFrom": {
            "description": "AT-URIs of source observations or datastreams",
            "items": {
              "format": "at-uri",
              "type": "string"
            },
            "maxLength": 16,
            "type": "array"
          },
          "entries": {
            "description": "Array of co-produced result entries",
            "items": {
              "ref": "#multiObservationEntry",
              "type": "ref"
            },
            "maxLength": 32,
            "type": "array"
          },
          "phenomenonTime": {
            "description": "Time the phenomenon was observed. Start of interval if phenomenonTimeEnd is present.",
            "format": "datetime",
            "type": "string"
          },
          "phenomenonTimeEnd": {
            "description": "End of observation interval. For wave statistics, this is the end of the burst window.",
            "format": "datetime",
            "type": "string"
          },
          "resultQuality": {
            "description": "Quality flag applying to the composite observation as a whole",
            "knownValues": [
              "dev.sensorthings.quality#good",
              "dev.sensorthings.quality#suspect",
              "dev.sensorthings.quality#missing"
            ],
            "maxLength": 64,
            "type": "string"
          },
          "resultTime": {
            "description": "Time the results became available",
            "format": "datetime",
            "type": "string"
          },
          "sensor": {
            "description": "AT-URI of the dev.sensorthings.sensor record (the instrument or process that co-produced these results)",
            "format": "at-uri",
            "type": "string"
          },
          "thing": {
            "description": "AT-URI of the dev.sensorthings.thing record",
            "format": "at-uri",
            "type": "string"
          }
        },
        "required": [
          "thing",
          "sensor",
          "phenomenonTime",
          "entries"
        ],
        "type": "object"
      },
      "type": "record"
    },
    "multiObservationEntry": {
      "description": "A single result within a composite observation, fully self-describing.",
      "properties": {
        "observedProperty": {
          "description": "AT-URI of the dev.sensorthings.observedProperty record",
          "format": "at-uri",
          "type": "string"
        },
        "result": {
          "refs": [
            "dev.sensorthings.observation#numericResult",
            "dev.sensorthings.observation#categoryResult",
            "dev.sensorthings.observation#booleanResult",
            "dev.sensorthings.observation#arrayResult",
            "dev.sensorthings.observation#geoPointResult"
          ],
          "type": "union"
        },
        "resultQuality": {
          "description": "Quality flag for this specific entry, if different from the composite quality",
          "knownValues": [
            "dev.sensorthings.quality#good",
            "dev.sensorthings.quality#suspect",
            "dev.sensorthings.quality#missing"
          ],
          "maxLength": 64,
          "type": "string"
        },
        "resultScaleFactor": {
          "description": "Scale factor for this entry's numeric result. Default 0.",
          "type": "integer"
        },
        "unitOfMeasurement": {
          "ref": "dev.sensorthings.datastream#unitOfMeasurement",
          "type": "ref"
        }
      },
      "required": [
        "observedProperty",
        "unitOfMeasurement",
        "result"
      ],
      "type": "object"
    }
  },
  "id": "dev.sensorthings.multiObservation",
  "lexicon": 1,
  "revision": 1
}

Validate Record

Validate a record against dev.sensorthings.multiObservation

Validation Options
Automatically resolve and include external schemas for full validation
Treat any remaining unresolved references as valid

Metadata

DID
did:plc:gqcmwsromoknyigx2afqcvqk
CID
bafyreiezm7g2fnltjomjb6pjznt2zvjk4cdxiavzskc7hsbcehka7lz2hu
Indexed At
2026-07-06 18:09 UTC
AT-URI
at://did:plc:gqcmwsromoknyigx2afqcvqk/com.atproto.lexicon.schema/dev.sensorthings.multiObservation

Referenced Schemas (6)

Similar Lexicons

Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.

  • A single act of observation. The result type is determined by the $type discriminator on the result object.

  • Groups Observations of one ObservedProperty by one Sensor on one Thing. Carries all context needed to interpret observation results.

  • A batch of observations for a single Datastream, covering a contiguous time window. Trades individual addressability for reduced commit overhead.

  • The new or changed readings from one collector tick, for many Datastreams in the same repo. Created once and never updated. After the correction horizon has passed, the readings are sealed into dev.sensorthings.observat…

  • The phenomenon being observed (e.g. air temperature, PM2.5 concentration).

Lexicon Garden

@