The VSS Taxonomy defines what data "entities" (Signals and Attributes) we can deal with.  In addition to VSS itself, we see a need for defining the data-exchange formats (e.g. actual message content whether in JSON or other) for measured values of those Signals.

Certain protocols include part of this, but others, such as GraphQL are generic and need definition of types, schemas, etc. to be used.



Signal:

Request:

Job:  

Record:  (or Measurement, or Observation)

PlainRecord, TimeStampedRecord   (not specifying the signal, only the value)

+ Record types which specify the signal inside.


TODO: For Snapshot you need a Record Type that also includes the signal name.

"Container" – naming of this? 

   A delivery of data sent at a particular time.

... metadata ...

  * Job ID
  * Sequence number (if partial delivery of a Job)
  * Values container (of type Snapshot, Bundle, or single Record)
 

NOTES: General metadata needed for measurements:

Snapshot:

Bundle:

Stream


Examples, in JSON


PlainRecord: (one Record Type)

{
   "value" : " 100.54"
}

TimestampedRecord:

{
   "ts" : "20200319123245Z123456" # Zulu time ISO std + microsecond - to be clarified
   "value" : "42 "
}


Bundle:


    "signal"  :  "vehicle.body.cabin.temperature"
"count" : "132"
    "values" : {
        { 
   "ts" : "20200319123245Z123456"
   "value" : "42 "
     },
        { 
   "ts" : "20200320120101Z100000"
   "value" : "43"
     },
...
}
}

Snapshot:


"timeperiod" {
"start" : "xxx",
"end" : "xxx"
},
"measurements" {
{
    "signal" : "vehicle.body.cabin.temperature",
     "value" : "22",
     "ts" : "20200320120101Z100000"
},
{
    "signal" : "vehicle.drivetrain.engine.rpm.average",
      "value" : "3200",
     "ts" : "20200320120101Z100000"
}
}