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.

Please contribute to this draft using the GitHub Issue feature of the WoT Thing Description repository.

Introduction

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.

Axiomatization

Overview of Classes and Properties

Classes

td:ActionAffordance

IRI: https://www.w3.org/2019/wot/td#ActionAffordance

a OWL Class

ActionAffordance - An Interaction Affordance that allows to invoke a function of the Thing, which manipulates state (e.g., toggling a lamp on or off) or triggers a process on the Thing (e.g., dim a lamp over time).
Sub-class oftd:InteractionAffordance

td:PropertyAffordance

IRI: https://www.w3.org/2019/wot/td#PropertyAffordance

a OWL Class

PropertyAffordance - An Interaction Affordance that exposes state of the Thing. This state can then be retrieved (read) and optionally updated (write). Things can also choose to make Properties observable by pushing the new state after a change.
Sub-class oftd:DataSchema
Sub-class oftd:InteractionAffordance

td:Link

IRI: https://www.w3.org/2019/wot/td#Link

a OWL Class

Link - A Web link, as specified by IETF RFC 8288 (https://tools.ietf.org/html/rfc8288).

td:Thing

IRI: https://www.w3.org/2019/wot/td#Thing

a OWL Class

Thing - An abstraction of a physical or a virtual entity whose metadata and interfaces are described by a WoT Thing Description, whereas a virtual entity is the composition of one or more Things.

td:InteractionAffordance

IRI: https://www.w3.org/2019/wot/td#InteractionAffordance

a OWL Class

InteractionAffordance - Metadata of a Thing that shows the possible choices to Consumers, thereby suggesting how Consumers may interact with the Thing. There are many types of potential affordances, but W3C WoT defines three types of Interaction Affordances: Properties, Actions, and Events.

td:MultiLanguage

IRI: https://www.w3.org/2019/wot/td#MultiLanguage

a OWL Class

MultiLanguage - A Map providing a set of human-readable texts in different languages identified by language tags described in [[BCP47]].

td:VersionInfo

IRI: https://www.w3.org/2019/wot/td#VersionInfo

a OWL Class

VersionInfo - Metadata of a Thing that provides version information about the TD document. If required, additional version information such as firmware and hardware version (term definitions outside of the TD namespace) can be extended via the TD Context Extension mechanism.

td:EventAffordance

IRI: https://www.w3.org/2019/wot/td#EventAffordance

a OWL Class

EventAffordance - An Interaction Affordance that describes an event source, which asynchronously pushes event data to Consumers (e.g., overheating alerts).
Sub-class oftd:InteractionAffordance

Object Properties

td:hasUriTemplateVariable

IRI: https://www.w3.org/2019/wot/td#hasUriTemplateVariable

a OWL Class

hasUriTemplateVariable - Define URI template variables as collection based on DataSchema declarations.

td:securityDefinitions

IRI: https://www.w3.org/2019/wot/td#securityDefinitions

a OWL Class

securityDefinitions - Set of named security configurations (definitions only). Not actually applied unless names are used in a security name-value pair.

td:hasCancellationSchema

IRI: https://www.w3.org/2019/wot/td#hasCancellationSchema

a OWL Class

hasCancellationSchema - Defines any data that needs to be passed to cancel a subscription, e.g., a specific message to remove a Webhook

td:hasSecurityConfiguration

IRI: https://www.w3.org/2019/wot/td#hasSecurityConfiguration

a OWL Class

hasSecurityConfiguration - Set of security definition names, chosen from those defined in securityDefinitions. These must all be satisfied for access to resources.

td:hasEventAffordance

IRI: https://www.w3.org/2019/wot/td#hasEventAffordance

a OWL Class

hasEventAffordance - All Event-based Interaction Affordances of the Thing.

td:hasSubscriptionSchema

IRI: https://www.w3.org/2019/wot/td#hasSubscriptionSchema

a OWL Class

hasSubscriptionSchema - Defines data that needs to be passed upon subscription, e.g., filters or message format for setting up Webhooks.

td:isSafe

IRI: https://www.w3.org/2019/wot/td#isSafe

a OWL Class

isSafe - Signals if the Action is safe (=true) or not. Used to signal if there is no internal state (cf. resource state) is changed when invoking an Action. In that case responses can be cached as example.

td:titles

IRI: https://www.w3.org/2019/wot/td#titles

a OWL Class

titles - Provides multi-language human-readable titles (e.g., display a text for UI representation in different languages).

td:hasNotificationSchema

IRI: https://www.w3.org/2019/wot/td#hasNotificationSchema

a OWL Class

hasNotificationSchema - Defines the data schema of the Event instance messages pushed by the Thing.

td:isIdempotent

IRI: https://www.w3.org/2019/wot/td#isIdempotent

a OWL Class

isIdempotent - Indicates whether the Action is idempotent (=true) or not. Informs whether the Action can be called repeatedly with the same result, if present, based on the same input.

td:descriptions

IRI: https://www.w3.org/2019/wot/td#descriptions

a OWL Class

descriptions - Can be used to support (human-readable) information in different languages.

td:hasPropertyAffordance

IRI: https://www.w3.org/2019/wot/td#hasPropertyAffordance

a OWL Class

hasPropertyAffordance - All Property-based Interaction Affordances of the Thing.

td:hasInputSchema

IRI: https://www.w3.org/2019/wot/td#hasInputSchema

a OWL Class

hasInputSchema - Used to define the input data schema of the Action.

td:hasLink

IRI: https://www.w3.org/2019/wot/td#hasLink

a OWL Class

hasLink - Provides Web links to arbitrary resources that relate to the specified Thing Description.

td:hasOutputSchema

IRI: https://www.w3.org/2019/wot/td#hasOutputSchema

a OWL Class

hasOutputSchema - Used to define the output data schema of the Action.

td:hasForm

IRI: https://www.w3.org/2019/wot/td#hasForm

a OWL Class

hasForm - Set of form hypermedia controls that describe how an operation can be performed. Forms are serializations of Protocol Bindings.

td:hasActionAffordance

IRI: https://www.w3.org/2019/wot/td#hasActionAffordance

a OWL Class

hasActionAffordance - All Action-based Interaction Affordances of the Thing.

Datatype Properties

td:description

IRI: https://www.w3.org/2019/wot/td#description

a OWL Class

description - Provides additional (human-readable) information based on a default language.

td:title

IRI: https://www.w3.org/2019/wot/td#title

a OWL Class

title - Provides a human-readable title (e.g., display a text for UI representation) based on a default language.

td:baseUri

IRI: https://www.w3.org/2019/wot/td#baseUri

a OWL Class

baseUri - Define the base URI that is used for all relative URI references throughout a TD document. In TD instances, all relative URIs are resolved relative to the base URI using the algorithm defined in [[RFC3986]].

td:name

IRI: https://www.w3.org/2019/wot/td#name

a OWL Class

name - Indexing property to store entity names when serializing them in a JSON-LD @index container.

td:modified

IRI: https://www.w3.org/2019/wot/td#modified

a OWL Class

modified - Provides information when the TD instance was last modified.

td:isObservable

IRI: https://www.w3.org/2019/wot/td#isObservable

a OWL Class

isObservable - A hint that indicates whether Servients hosting the Thing and Intermediaries should provide a Protocol Binding that supports the observeproperty operation for this Property.

td:instance

IRI: https://www.w3.org/2019/wot/td#instance

a OWL Class

instance - Provides a version indicator of this TD instance.

td:created

IRI: https://www.w3.org/2019/wot/td#created

a OWL Class

created - Provides information when the TD instance was created.

Term Mapping

JSON StringOntology Term
tdtd:
modifiedtd:modified
cancellationtd:hasCancellationSchema
titletd:title
securityDefinitionstd:securityDefinitions
datatd:hasNotificationSchema
securitytd:hasSecurityConfiguration
actionstd:hasActionAffordance
inputtd:hasInputSchema
InteractionAffordancetd:InteractionAffordance
uriVariablestd:hasUriTemplateVariable
EventAffordancetd:EventAffordance
basetd:baseUri
unittd:defaultUnit
formstd:hasForm
Thingtd:Thing
createdtd:created
linkstd:hasLink
PropertyAffordancetd:PropertyAffordance
supporttd:supportContact
instancetd:instance
VersionInfotd:VersionInfo
propertiestd:hasPropertyAffordance
nametd:name
observabletd:isObservable
descriptiontd:description
ActionAffordancetd:ActionAffordance
subscriptiontd:hasSubscriptionSchema
idempotenttd:isIdempotent
safetd:isSafe
eventstd:hasEventAffordance
versiontd:versionInfo
outputtd:hasOutputSchema
descriptionstd:descriptions

Examples