The IOTDB Semantic Model with Schema.org
IOTDB's semantic model is built on top of schema.org's vocabulary. For ease of use, we have duplicated names into IOTDB's vocabulary and marked them as equivalent to their schema.org's equivalents.
The IOTDB semantic model can be browsed here: https://iotdb.org/pub/.
Node-IOTDB provides Javascript classes which compile into JSON-LD, make it very easy to author IOTDB Models. A number of examples of this can be found here in Javascript and here in JSON-LD.
I highly encourage you to browse those links above - everything should be hyperlinked and probably makes a lot more intuitive sense than the descriptions below.
iot:Model are the semantic description of "Things": the data they produce (if they're sensors) or how to control them (if they're actuators). It's defined to be a (RDFs) subclass of schema.org's Thing. Yes, there's a slight bit of naming confusion here, sorry.
All the common properties of schema.org's Thing are available under the iot: namespace, e.g. schema:name → iot:name, schema:description → iot:description, etc..
Probably the most important property is iot:attribute. This links your Model to Attributes, described in the next section.
Each individual piece of data a Thing can produce and each way to control a Thing are described by an iot:Attribute.
There's a lot going on with Attributes, but here's the basic rundown:
name, description, etc. from iot:/schema.org are all there
iot:purpose links to one property from iot-attribute:, to describe why this attribute exists. I.e. is it to turn something on and off, open or close something, specify the channel, etc.. Please browse that link to find out more.
iot:role can be iot-attribute:role-control or iot-attribute:role-reading (or both) depending on whether the purpose of this Attribute is for describing values coming from a sensor or describing a value going to an actuator.
iot:related-role can be used to link an Attribute that's used as a reading to an Attribute thats used for control. E.g. one attribute is for setting a light on and off, another is for reading whether it actually is on or off.
iot:vector can be used multiple Attributes together, like for example x/y/z values
iot-js:type to specify the Javascript type of the value
iot:unit to specify the unit of measurement
Authoring these is fairly easy using our Javascript / Node code.