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:hasInputSchematd:hasOutputSchematd:isIdempotenttd:isSafetd: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:hasCancellationSchematd:hasNotificationResponseSchematd:hasNotificationSchematd:hasSubscriptionSchema |
| In the range of | td:hasEventAffordance |
IRI: https://www.w3.org/2019/wot/td#InteractionAffordance
| Super-class of | td:ActionAffordancetd:EventAffordancetd:PropertyAffordance |
| In the domain of | td:descriptionInLanguagetd:hasFormtd:hasUriTemplateSchematd:nametd:titleInLanguagetm: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:baseURItd:definesSecuritySchemetd:descriptionInLanguagetd:followsProfiletd:hasFormtd:hasInteractionAffordancetd:hasSecurityConfigurationtd: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:InteractionAffordancetd: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:Thingtm: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:Formtd: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:DataSchemawotsec:SecuritySchemetd:InteractionAffordancetd: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:DataSchematd:InteractionAffordancetd: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]]).