The Thing Description (TD) ontology is an RDF axiomatization of the TD information model, one of the building blocks of the Web of Things (WoT). Besides providing an alternative to the standard JSON representation format for TD documents, the TD ontology can also be used to process contextual information on Things and for alignments with other WoT-related ontologies.
Validation of the document by the Working Group is expected by the end of June 2019.
The TD ontology is an idiomatic RDF axiomatization of the TD information model [[WOT-THING-DESCRIPTION]], which can be used to describe WoT things and their interaction affordances. The TD ontology imports the hypermedia controls ontology. However, although the TD information model also includes terms for data schemas and security configurations, the TD ontology does not force the use of the corresponding JSON schema and WoT security vocabularies. Other schema languages like SHACL [[shacl]] can thus be leveraged to describe WoT Things.
Please note that the Turtle version of the ontology can be always obtained by doing content negotiation as explained in
Appendix D of the Thing
Description Recommendation.
You can include Accept: text/turtle
in the request to obtain the Turtle version of this ontology.
The fundamental WoT terminology such as Thing, Consumer, Thing Description (TD), Interaction Model, Interaction Affordance, Property, Action, Event, Protocol Binding, Servient, etc. is defined in Section 3 of the WoT Architecture specification [[WOT-ARCHITECTURE]].
The Thing Description terminology such as TD Information Model, TD Document, Term (Vocabulary Term), etc. is defined in Section 3 of the WoT Thing Description specification [[WOT-THING-DESCRIPTION]].
IRI: https://www.w3.org/2019/wot/td#ActionAffordance
Sub-class of | td:InteractionAffordance |
In the domain of | td:hasInputSchema td:hasOutputSchema td:isIdempotent td:isSafe td:isSynchronous |
In the range of | td:hasActionAffordance |
IRI: https://www.w3.org/2019/wot/td#EventAffordance
Sub-class of | td:InteractionAffordance |
In the domain of | td:hasCancellationSchema td:hasNotificationResponseSchema td:hasNotificationSchema td:hasSubscriptionSchema |
In the range of | td:hasEventAffordance |
IRI: https://www.w3.org/2019/wot/td#InteractionAffordance
Super-class of | td:ActionAffordance td:EventAffordance td:PropertyAffordance |
In the domain of | td:descriptionInLanguage td:hasForm td:hasUriTemplateSchema td:name td:titleInLanguage tm:ref |
In the range of | td:hasInteractionAffordance |
IRI: https://www.w3.org/2019/wot/td#OperationType
IRI: https://www.w3.org/2019/wot/td#PropertyAffordance
Sub-class of | td:InteractionAffordance |
In the domain of | td:isObservable |
In the range of | td:hasPropertyAffordance |
IRI: https://www.w3.org/2019/wot/td#Thing
In the domain of | td:baseURI td:definesSecurityScheme td:descriptionInLanguage td:followsProfile td:hasForm td:hasInteractionAffordance td:hasSecurityConfiguration td:titleInLanguage |
IRI: https://www.w3.org/2019/wot/td#definesSecurityScheme
Domain includes | td:Thing |
IRI: https://www.w3.org/2019/wot/td#hasActionAffordance
Range includes | td:ActionAffordance |
IRI: https://www.w3.org/2019/wot/td#hasCancellationSchema
Domain includes | td:EventAffordance |
IRI: https://www.w3.org/2019/wot/td#hasEventAffordance
Range includes | td:EventAffordance |
IRI: https://www.w3.org/2019/wot/td#hasForm
Domain includes | td:InteractionAffordance td:Thing |
Range includes | hctl:Form |
IRI: https://www.w3.org/2019/wot/td#hasInputSchema
Domain includes | td:ActionAffordance |
IRI: https://www.w3.org/2019/wot/td#hasInstanceConfiguration
Domain includes | wotsec:SecurityScheme |
IRI: https://www.w3.org/2019/wot/td#hasInteractionAffordance
Domain includes | td:Thing tm:ThingModel |
Range includes | td:InteractionAffordance |
IRI: https://www.w3.org/2019/wot/td#hasLink
Domain includes | tm:ThingModel |
Range includes | hctl:Link |
IRI: https://www.w3.org/2019/wot/td#hasNotificationResponseSchema
Domain includes | td:EventAffordance |
IRI: https://www.w3.org/2019/wot/td#hasNotificationSchema
Domain includes | td:EventAffordance |
IRI: https://www.w3.org/2019/wot/td#hasOutputSchema
Domain includes | td:ActionAffordance |
IRI: https://www.w3.org/2019/wot/td#hasPropertyAffordance
Range includes | td:PropertyAffordance |
IRI: https://www.w3.org/2019/wot/td#hasSecurityConfiguration
Domain includes | hctl:Form td:Thing |
IRI: https://www.w3.org/2019/wot/td#hasSubscriptionSchema
Domain includes | td:EventAffordance |
IRI: https://www.w3.org/2019/wot/td#hasUriTemplateSchema
Domain includes | td:InteractionAffordance |
IRI: https://www.w3.org/2019/wot/td#baseURI
Domain includes | td:Thing |
Range includes | schema:URL |
IRI: https://www.w3.org/2019/wot/td#description
Domain includes | tm:ThingModel |
Range includes | schema:Text |
IRI: https://www.w3.org/2019/wot/td#descriptionInLanguage
Domain includes | jsonschema:DataSchema wotsec:SecurityScheme td:InteractionAffordance td:Thing |
Range includes | schema:Text |
IRI: https://www.w3.org/2019/wot/td#followsProfile
Domain includes | td:Thing |
Range includes |
IRI: https://www.w3.org/2019/wot/td#instance
Domain includes | td:versionInfo |
IRI: https://www.w3.org/2019/wot/td#isIdempotent
Domain includes | td:ActionAffordance |
Range includes | schema:Boolean |
IRI: https://www.w3.org/2019/wot/td#isObservable
observeproperty
and unobserveproperty
operations for this Property.Domain includes | td:PropertyAffordance |
Range includes | schema:Boolean |
IRI: https://www.w3.org/2019/wot/td#isSafe
Domain includes | td:ActionAffordance |
Range includes | schema:Boolean |
IRI: https://www.w3.org/2019/wot/td#isSynchronous
Domain includes | td:ActionAffordance |
Range includes | schema:Boolean |
IRI: https://www.w3.org/2019/wot/td#model
Domain includes | td:versionInfo |
IRI: https://www.w3.org/2019/wot/td#name
Domain includes | td:InteractionAffordance |
Range includes | schema:Text |
IRI: https://www.w3.org/2019/wot/td#title
Domain includes | tm:ThingModel |
Range includes | schema:Text |
IRI: https://www.w3.org/2019/wot/td#titleInLanguage
Domain includes | jsonschema:DataSchema td:InteractionAffordance td:Thing |
Range includes | schema:Text |
IRI: https://www.w3.org/2019/wot/td#supportContact
IRI: https://www.w3.org/2019/wot/td#versionInfo
IRI: https://www.w3.org/2019/wot/td#cancelAction
Instance of | td:OperationType |
IRI: https://www.w3.org/2019/wot/td#invokeAction
Instance of | td:OperationType |
IRI: https://www.w3.org/2019/wot/td#observeAllProperties
Instance of | td:OperationType |
IRI: https://www.w3.org/2019/wot/td#observeProperty
Instance of | td:OperationType |
IRI: https://www.w3.org/2019/wot/td#queryAction
Instance of | td:OperationType |
IRI: https://www.w3.org/2019/wot/td#queryAllActions
Instance of | td:OperationType |
IRI: https://www.w3.org/2019/wot/td#readAllProperties
Instance of | td:OperationType |
IRI: https://www.w3.org/2019/wot/td#readMultipleProperties
Instance of | td:OperationType |
IRI: https://www.w3.org/2019/wot/td#readProperty
Instance of | td:OperationType |
IRI: https://www.w3.org/2019/wot/td#subscribeAllEvents
Instance of | td:OperationType |
IRI: https://www.w3.org/2019/wot/td#subscribeEvent
Instance of | td:OperationType |
IRI: https://www.w3.org/2019/wot/td#unobserveAllProperties
Instance of | td:OperationType |
IRI: https://www.w3.org/2019/wot/td#unobserveProperty
Instance of | td:OperationType |
IRI: https://www.w3.org/2019/wot/td#unsubscribeAllEvents
Instance of | td:OperationType |
IRI: https://www.w3.org/2019/wot/td#unsubscribeEvent
Instance of | td:OperationType |
IRI: https://www.w3.org/2019/wot/td#writeAllProperties
Instance of | td:OperationType |
IRI: https://www.w3.org/2019/wot/td#writeMultipleProperties
Instance of | td:OperationType |
IRI: https://www.w3.org/2019/wot/td#writeProperty
Instance of | td:OperationType |
The TD ontology shares commonalities with other WoT-related vocabularies, in particular with SOSA [[vocab-ssn]] and schema.org. Alignments between these vocabularies are provided in a human-readable way in the following.
All alignments with SOSA are also available here in OWL: td-sosa.ttl.
Alignment of td:Thing
with SOSA:
Sub-Class | Super-Class |
---|---|
td:Thing
|
sosa:Sensor orsosa:Actuator orsosa:Platform orsosa:FeatureOfInterest
|
td:Thing andsosa:FeatureOfInterest
|
ssn:hasProperty some (( sosa:isObservedBy some sosa:Sensor ) or( sosa:isActedOnBy some sosa:Actuator )) |
td:Thing andsosa:Sensor
|
sosa:observes somesosa:ObservableProperty
|
td:Thing andsosa:Actuator
|
sosa:actsOnProperty somesosa:ActuatableProperty
|
td:Thing andsosa:Platform
|
sosa:hosts some (( sosa:Sensor andsosa:observes somesosa:ObservableProperty ) or ( sosa:Actuator andsosa:actsOnProperty somesosa:ActuatableProperty ) ) |
Alignment of td:InteractionAffordance
with SOSA:
Sub-Class | Super-Class |
---|---|
td:PropertyAffordance andtd:hasForm somehctl:hasOperationType valuetd:readProperty
|
ssn:forProperty some sosa:ObservableProperty
|
td:PropertyAffordance andtd:hasForm somehctl:hasOperationType valuetd:writeProperty
|
ssn:forProperty some sosa:ActuatableProperty
|
td:ActionAffordance
|
ssn:forProperty somesosa:ActuatableProperty
|
td:EventAffordance
|
ssn:forProperty somesosa:ObservableProperty
|
The alignments with schema.org's actions are also available here in OWL: td-sdo.ttl.
Sub-Class | Super-Class |
---|---|
td:InteractionAffordance
|
schema:Action andschema:actionStatus value
schema:PotentialActionStatus |
Sub-Property | Super-Property |
---|---|
td:hasInteractionAffordance
|
schema:potentialAction
|
The following example shows a TD instance from Example 1 Thing Description specification [[WOT-THING-DESCRIPTION]] in JSON-LD 1.1 (JSON-LD 1.1 tab) and in a RDF dataset (RDF tab).
The RDF dataset contains the corresponding Thing Description IRIs as defined in this document. This IRI mapping is provided by the Thing Description
context file https://www.w3.org/2019/wot/td/v1
. For instance, the field actions
is transformed to <https://www.w3.org/2019/wot/td#hasActionAffordance>
.
The following example includes two TD documents in the standard TD JSON representation format [[WOT-THING-DESCRIPTION]], identified by a unique electronic product code [[RFC5134]].
If these two documents are being merged together with contextual information in the form of an RDF graph that uses the same identifiers, it is possible to retrieve form metadata of these TDs depending on the relations that exist between Things. Here, the two Things share information on room 101 of some example building.
It is possible for affordances of different kinds to have the same effect. For instance, an affordance to a writable property may be equivalent to an affordance to invoke an action that changes the property value. Similarly, for every observable property, there may be an equivalent affordance to subscribe to an event that occurs at every property value change.
WoT clients can avoid having to deal with these discrepancies by
using the generic td:hasInteractionAffordance
predicate.
They can then decide to perform an action based solely on the operation type
of the form embedded in the affordance object.
It is possible to use the TD ontology to extend the definition of
well-known subclasses of Thing
by defining expected
affordances that Things of such types should present. The
following example specifies that every temperature sensor presents
an affordance to a temperature property (expressed in the SAREF
vocabulary [[smartM2M]]).