Jump to content
 







Main menu
   


Navigation  



Main page
Contents
Current events
Random article
About Wikipedia
Contact us
Donate
 




Contribute  



Help
Learn to edit
Community portal
Recent changes
Upload file
 








Search  

































Create account

Log in
 









Create account
 Log in
 




Pages for logged out editors learn more  



Contributions
Talk
 



















Contents

   



(Top)
 


1 Principles  



1.1  Property  





1.2  Action  





1.3  Event  







2 Components and standard technologies  





3 Thing Description examples  





4 Implementations  





5 See also  





6 References  














Thing Description







Add links
 









Article
Talk
 

















Read
Edit
View history
 








Tools
   


Actions  



Read
Edit
View history
 




General  



What links here
Related changes
Upload file
Special pages
Permanent link
Page information
Cite this page
Get shortened URL
Download QR code
Wikidata item
 




Print/export  



Download as PDF
Printable version
 
















Appearance
   

 






From Wikipedia, the free encyclopedia
 


Thing Description
ThingDescription
The logo of the latest version, Thing Description
Filename extension
.jsontd, .td.json, .td.jsonld
Internet media type
application/td+json
Developed byW3C
Initial releaseApril 9, 2020
Type of formatJSON-LD
StandardW3C Web of Things
Open format?Yes
Websitehttps://www.w3.org/TR/wot-thing-description/

The Thing Description (TD) (orW3C WoT Thing Description (TD)) is a royalty-free, open information model with a JSON based representation format for the Internet of Things (IoT). A TD provides a unified way to describe the capabilities of an IoT device or service with its offered data model and functions, protocol usage, and further metadata. Using Thing Descriptions help reduce the complexity of integrating IoT devices and their capabilities into IoT applications.[1]

The TD originated from the Web of Things (WoT) initiative of the international standards organization of the W3C which has the intention to increase the interoperability in the IoT.[2] Since April 2020, the Thing Description[3] is a W3C recommendation (W3C WoT Thing Description 1.0).

In December 2023, the W3C published 1.1 version of the Thing Description recommendation.[4]

Principles[edit]

The major principle of the Thing Description is to provide a human-readable and machine-interpretable interface description of an IoT device/Thing. In that context, the WoT Thing Description is to the IoT what index.html is to a website: it can be considered as the entry point of a physical or virtual Thing/device.[5] Thing Description are not limited to a specific communication protocol, rather it provides a framework called a WoT Binding Template.[6] Such a Protocol Binding defines the mapping from an Interaction Affordance to concrete messages of a specific IoT protocol such as MQTT, HTTP, CoAP, ModbusorOPC UA.

The WoT Thing Description defines 3 kinds of Interaction Affordances, named Property, Action and Event:

Property[edit]

An Interaction Affordance that exposes state of an IoT device. This state can then be retrieved (read) and optionally updated (write). Devices can also choose to make Properties observable by pushing the new state after a change.

Action[edit]

An Interaction Affordance that allows to invoke a function of an IoT device, which manipulates state (e.g., toggling a lamp on or off) or triggers a process on the device (e.g., dim a lamp over time).

Event[edit]

An Interaction Affordance that describes an event source, which asynchronously pushes event data to the subscribers of the event (e.g., overheating alerts).

Components and standard technologies[edit]

WoT Thing Description components: Context Extension Framework, Security Framework, Things Relation Definitions, WoT Interaction Model (containing Properties, Actions and Evens), Data Model, Binding Templates.
Figure 1. WoT Thing Description components.

In general, the Thing Description is designed to reuse and rely on established Internet and Web standards, this includes:

Thing Description examples[edit]

Example of a Thing Description object.

Below is an example TD serialized in JSON-LD format, which has one property, one action and one event. The IoT device represented by this TD uses the HTTP protocol but a TD can represent any protocol with a URI scheme, as shown in the example below.

{
    "@context": "https://www.w3.org/2019/wot/td/v1",
    "id": "urn:dev:ops:32473-WoTLamp-1234",
    "title": "MyLampThing",
    "securityDefinitions": {
        "basic_sc": {"scheme": "basic", "in":"header"}
    },
    "security": ["basic_sc"],
    "properties": {
        "status" : {
            "type": "string",
            "forms": [{
                "href": "https://mylamp.example.com/status",
                "htv:methodName":"GET"
            }]
        }
    },
    "actions": {
        "toggle" : {
            "forms": [{
                "href": "https://mylamp.example.com/toggle",
                "htv:methodName":"POST"
            }]
        }
    },
    "events":{
        "overheating":{
            "data": {"type": "string"},
            "forms": [{
                "href": "https://mylamp.example.com/oh",
                "htv:methodName":"GET",
                "subprotocol": "longpoll"
            }]
        }
    }
}

This TD represents an Internet connected lamp, which could be thought as a simple version of a Philips Hue lamp.

From this TD example, a client knows that there exists one Property affordance with the title status (lines 10-16). In addition, information is provided in lines 13-14 that this Property is readable with an HTTP GET request to the URI https://mylamp.example.com/status, and will return a string-based status value. In a similar manner, an Action affordance is specified to toggle the switch status using the POST method on the https://mylamp.example.com/toggle resource. The Event affordance enables a mechanism for asynchronous messages to be sent by a Thing. Here, a subscription to be notified upon a possible overheating event of the lamp can be obtained by using HTTP with its long polling subprotocol on https://mylamp.example.com/oh. The use of the GET or POST method is stated explicitly but can be omitted using the default assumptions stated in the TD specification. It can be seen that the HTTP methods are defined using the "htv:methodName" vocabulary terms. This vocabulary terms for HTTP are included in the TD vocabulary that is found in the "@context" value.

This example also specifies the basic security scheme, requiring a username and password for access. A security scheme is first given a name and its corresponding scheme in the securityDefinitions and then activated by specifying that name in a security section. In combination with the use of the HTTP this example demonstrates the use of Basic access authentication.

Below is the same connected lamp but using MQTT protocol and no security.

{
    "@context": [
        "https://www.w3.org/2019/wot/td/v1",
        {"mqv": "http://www.example.org/mqtt-binding#"}
    ],
    "id": "urn:dev:ops:32473-WoTLamp-1234",
    "title": "MyLampThing",
    "securityDefinitions": {
        "nosec_sc": {"scheme": "nosec"}
    },
    "security": ["nosec_sc"],
    "properties": {
        "status" : {
            "type": "string",
            "forms": [{
                "href": "mqtt://mylamp.example.com/status",
                "mqv:controlPacketValue": "SUBSCRIBE"
            }]
        }
    },
    "actions": {
        "toggle" : {
            "forms": [{
                "href": "mqtt://mylamp.example.com/toggle",
                "mqv:controlPacketValue": "PUBLISH"
            }]
        }
    },
    "events":{
        "overheating":{
            "data": {"type": "string"},
            "forms": [{
                "href": "mqtt://mylamp.example.com/oh",
                "mqv:controlPacketValue": "SUBSCRIBE"
            }]
        }
    }
}

Differently from the last TD, here the forms include MQTT protocol as specified by the WoT Binding Templates. More specifically, lines 17, 25 and 34 describe what message types should be used to use the affordances. For example, instead of HTTP GET and longpoll subprotocol to observe the overheating event, a client can subscribe to this event using the MQTT protocol. Furthermore, a WoT device with MQTT protocol can be both a publisher and a subscriber. For the property and event affordances, it would publish the values, whereas for action affordances it would subscribe to the action topics that other MQTT publishers can trigger by publishing to these topics.

Implementations[edit]

Thing Description editing and validation tools

Implementations using Thing Description

See also[edit]

References[edit]

  1. ^ "Web of Things over IoT and Its Applications". InfoQ. Retrieved 2020-12-03.
  • ^ "Solution for IoT Interoperability – W3C Web of Things". DATAVERSITY - Data Education for Business and IT Professionals. 13 April 2020. Retrieved 2020-04-13.
  • ^ Käbisch, Sebastian; Kamiya, Takuki; McCool, Michael; Charpenay, Victor; Kovatsch, Matthias (2020-04-09). "Web of Things (WoT) Thing Description". www.w3.org. Archived from the original on 2021-10-24. Retrieved 2020-04-17.{{cite web}}: CS1 maint: bot: original URL status unknown (link)
  • ^ Käbisch, Sebastian; McCool, Michael; Korkan, Ege (2023-12-05). "Web of Things (WoT) Thing Description 1.1". www.w3.org. Archived from the original on 2023-12-07. Retrieved 2023-01-19.{{cite web}}: CS1 maint: bot: original URL status unknown (link)
  • ^ "Solution for IoT Interoperability - W3C Web of Things (WoT)". W3C. W3C Press. 9 April 2020. Retrieved 22 December 2020.
  • ^ Koster, Michael; Korkan, Ege (2019-01-30). "Web of Things (WoT) Binding Templates". www.w3.org. Archived from the original on 2020-04-14. Retrieved 2020-04-17.{{cite web}}: CS1 maint: bot: original URL status unknown (link)
  • ^ Kellogg, Gregg; Champin, Pierre-Antoine; Longley, Dave (2020-07-16). "JSON-LD Syntax 1.1".
  • ^ Serena, Fernando; Poveda-Villalón, María; García-Castro, Raúl (22 February 2018). Semantic Discovery in the Web of Things. Cham, Switzerland: Springer. doi:10.1007/978-3-319-74433-9_2. ISBN 978-3-319-74433-9.
  • ^ Ed., R. Shekh-Yusef; Ahrens, D.; Bremer, S. (2015). Shekh-Yusef, R. (ed.). "HTTP Digest Access Authentication". IETF. doi:10.17487/RFC7616. S2CID 11159319. Retrieved 2020-09-01. {{cite journal}}: Cite journal requires |journal= (help)
  • ^ Nottingham, M. (September 2017). "Web Linking". IETF. doi:10.17487/RFC8288. {{cite journal}}: Cite journal requires |journal= (help)
  • ^ Wright, Austin; Andrews, Henry; Luff, Geraint. "JSON Schema Validation: A Vocabulary for Structural Validation of JSON". Ietf Datatracker. IETF.
  • ^ Berners-Lee, T.; Fielding, R.; Masinter, L. (2005). "Uniform Resource Identifier (URI): Generic Syntax". IETF. doi:10.17487/RFC3986. S2CID 30973664. {{cite journal}}: Cite journal requires |journal= (help)
  • ^ Freed, N.; Borenstein, N. (1996). "Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types". IETF. doi:10.17487/RFC2046. {{cite journal}}: Cite journal requires |journal= (help)
  • ^ Eclipse edi{TD}or project, Eclipse Foundation, 2020-12-04
  • ^ Thing Description Playground, 2020-11-14
  • ^ thingweb.node-wot. W3C Web of Things implementation on NodeJS., Eclipse Foundation, 2019-11-14, retrieved 2019-11-17
  • ^ Korkan, Ege; Hassine, Hassib Belhaj; Schlott, Verena Eileen; Käbisch, Sebastian; Steinhorst, Sebastian (2019-09-07). "WoTify: A platform to bring Web of Things to your devices". arXiv:1909.03296 [cs.DC].
  • ^ Mangas, Andrés García (2020-01-08), Experimental implementation of a W3C Web of Things runtime: agmangas/wot-py, retrieved 2020-01-15
  • ^ Toumura, Kunihiko (2019-05-21), GitHub - k-toumura/node-red-nodegen, retrieved 2020-01-15
  • ^ "Java-Implementation für das Web of Things veröffentlicht". sane.city. Retrieved 2020-01-28.

  • Retrieved from "https://en.wikipedia.org/w/index.php?title=Thing_Description&oldid=1220233910"

    Categories: 
    Resource Description Framework
    JSON
    Internet of things
    Hidden categories: 
    CS1 maint: bot: original URL status unknown
    CS1 errors: missing periodical
     



    This page was last edited on 22 April 2024, at 15:54 (UTC).

    Text is available under the Creative Commons Attribution-ShareAlike License 4.0; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.



    Privacy policy

    About Wikipedia

    Disclaimers

    Contact Wikipedia

    Code of Conduct

    Developers

    Statistics

    Cookie statement

    Mobile view



    Wikimedia Foundation
    Powered by MediaWiki