diff --git a/REQUIREMENTS/link-relation-types.md b/REQUIREMENTS/link-relation-types.md index 122d9659..eec0cd6f 100644 --- a/REQUIREMENTS/link-relation-types.md +++ b/REQUIREMENTS/link-relation-types.md @@ -22,9 +22,8 @@ Results of the brainstorming discussion in arch call on Sept 17th. ### Requirements: - -Describe a topology of things that are combined in a mashup. -Connect a thing description with a thing model. +- Describe a topology of things that are combined in a mashup. +- Connect a thing description with a thing model. ### Types of relationships: @@ -34,24 +33,24 @@ If the type is a URL, a link is the natural chice for represnting it. when you think about how you model things in UML: inheritance, implementation, aggregation -"Source"/"Search", to identify the source from which the TD was obtained (e.g. a device, database, directory) -"Inheritance/implements" for Thing Model - TD relationship -"Containment": "contained by" or "is contained" - system components -"Aggregation": set of entities -"Collection": -"Metadata", e.g. company, maintainer, license ... -"Documentation": -("Current") -"Previous": version of the document -"member", "Item" -"manifest": point to SW implementing the TD -"Profile": denote compliance +- "Source"/"Search", to identify the source from which the TD was obtained (e.g. a device, database, directory) +- "Inheritance/implements" for Thing Model - TD relationship +- "Containment": "contained by" or "is contained" - system components +- "Aggregation": set of entities +- "Collection": +- "Metadata", e.g. company, maintainer, license ... +- "Documentation": +- ("Current") +- "Previous": version of the document +- "member", "Item" +- "manifest": point to SW implementing the TD +- "Profile": denote compliance #### Not in IANA list: -"proxy-to" (security or protocol proxy or both) -"twin-of" -"shadow": caching data -"simulation", could be a shadow or a twin +- "proxy-to" (security or protocol proxy or both) +- "twin-of" +- "shadow": caching data +- "simulation", could be a shadow or a twin ### Entity types: * Thing model @@ -68,8 +67,8 @@ when you think about how you model things in UML: inheritance, implementation, a * More than one link of the same type? (Example is a TD that implements multiple TMs) * Is a "TD implements TM" relationship inclusive or exclusive? * When to use links and when to use semantic relationships? -- not use a link if the linked entity is not dereferencable -- if it is primarily a concept, a semantic realtionship is more appropriate +* not use a link if the linked entity is not dereferencable +* if it is primarily a concept, a semantic realtionship is more appropriate ### Related standards: @@ -78,7 +77,6 @@ Any more IoT specific link relation types: Platform Industry 4.0? ### Other references: - https://www.iana.org/go/rfc8288 Link relations: diff --git a/index.html b/index.html index 0c20da73..4dba56cc 100644 --- a/index.html +++ b/index.html @@ -1,1899 +1,1908 @@ +
- -The W3C Web of Things (WoT) is intended to enable - interoperability across IoT platforms and application - domains. - Overall, the goal of the WoT is to preserve and complement existing - IoT standards and solutions. In general, the W3C WoT architecture is - designed to describe what exists rather than to prescribe - what to implement. -
-This WoT Architecture specification describes the abstract - architecture for the W3C Web of Things. - This abstract architecture is based on a - set of requirements that were derived from use cases for - multiple application domains, both given in this document. - A set of modular building blocks are also identified whose detailed - specifications are given in other documents. - This document describes how these building blocks are related and work together. - The WoT abstract architecture defines a basic conceptual - framework that can be mapped onto a variety of concrete deployment scenarios, - several examples of which are given. - However, the abstract architecture described in this specification does not - itself define concrete mechanisms or prescribe any concrete implementation. -
+The W3C Web of Things (WoT) is intended to enable + interoperability across IoT platforms and application + domains. + Overall, the goal of the WoT is to preserve and complement existing + IoT standards and solutions. In general, the W3C WoT architecture is + designed to describe what exists rather than to prescribe + what to implement. +
+This WoT Architecture specification describes the abstract + architecture for the W3C Web of Things. + This abstract architecture is based on a + set of requirements that were derived from use cases for + multiple application domains, both given in this document. + A set of modular building blocks are also identified whose detailed + specifications are given in other documents. + This document describes how these building blocks are related and work together. + The WoT abstract architecture defines a basic conceptual + framework that can be mapped onto a variety of concrete deployment scenarios, + several examples of which are given. + However, the abstract architecture described in this specification does not + itself define concrete mechanisms or prescribe any concrete implementation. +
+ ++ This document describes an abstract architecture design. + However, there is an + Implementation Report + that describes a set of concrete implementations based on the associated WoT Thing Description + specification. + These are implementations following the W3C Web of Things architecture. +
+The goals of the Web of Things (WoT) are to improve the interoperability + and usability of the Internet of Things (IoT). Through a collaboration + involving many stakeholders over many years, several building + blocks have been identified that help address these challenges. +
+This specification is focused on the scope of W3C WoT standardization, + which can be broken down into these building blocks as well as the abstract + architecture that defines how they are related. + The building blocks are defined and described in detail in separate specifications. + However, in addition to defining the abstract architecture and its terminology and + conceptual framework, + this specification also serves as an introduction to the WoT building blocks, + and explains their interworking:
+This specification also covers non-normative architectural aspects + and conditions for the deployment of WoT systems. + These guidelines are described in the context of example deployment scenarios, + although this specification does not normatively define specific concrete + implementations. +
+This specification serves as an umbrella for W3C WoT + specifications and defines the basics such as terminology + and the underlying abstract architecture of the W3C Web of + Things. In summary, the purpose of this specification is to + provide:
+Additional requirements, use cases, conceptual features and new building blocks will be + addressed in a future revision of this document. +
+This specification uses the following terms as defined here. + The WoT prefix is used to avoid ambiguity for terms that are + (re)defined specifically for Web of Things concepts.
++ This section presents the application domains and use cases + targeted by the W3C WoT and which are used to derive the + abstract architecture discussed in . +
+The Web of Things architecture does not put any + limitations on use cases and application domains. Various + application domains have been considered to collect common + patterns that have to be satisfied by the abstract + architecture.
+The following sections are not exhaustive. Rather they + serve as illustrations, where connected things can provide + additional benefit or enable new scenarios.
+In the consumer space there are multiple assets + that benefit from being connected. Lights and air + conditioners can be turned off based on room + occupancy. Window blinds can be closed automatically + based on weather conditions and presence. Energy and + other resource consumption can be optimized based on + usage patterns and predictions.
+The consumer use cases in this section includes + Smart Home use case.
++ shows an example of a + Smart Home. In this case, gateways are connected to + edge devices such as sensors, cameras and home + appliances through corresponding local communication + protocols such as KNX, ECHONET, ZigBee, DECT ULE and + Wi-SUN. Multiple gateways can exist in one home, + while each gateway can support multiple local + protocols. +
+Gateways can be connected to the cloud through + the internet, while some appliances can be connected + to the cloud directly. Services running in the cloud + collect data from edge devices and analyze the data, + then provide value to users through the edge devices + and other UX devices.
+ +Smart home provides consumer benefits such as + remote access and control, voice control and home + automation. Smart home also enables device + manufacturers to monitor and maintain devices + remotely. Smart home can realize value added + services such as energy management and security + surveillance.
+ The industrial use cases in this section are
+ applicable to different industry verticals.
+ Due to the nature of overlaps in the application
+ scenarios, different verticals have similar use
+ cases.
+
- This document describes an abstract architecture design. - However, there is an - Implementation Report - that describes a set of concrete implementations based on the associated WoT Thing Description specification. - These are implementations following the W3C Web of Things architecture. + shows an example + of a Smart Factory. In this case, field-level, + cell and line controllers automate different + factory equipment based on industrial + communication protocols such as PROFINET, + Modbus, OPC UA TSN, EtherCAT, or CAN. An + industrial edge device collects selected data + from various controllers and makes it available + to a cloud backend service, e.g., for remote + monitoring via a dashboard or analyzes it for + preventive maintenance.
+ +Smart factories require advanced monitoring of + the connected manufacturing equipment as well of the + manufactured products. They benefit from predictions + of machine failures and early discovery of anomalies + to prevent costly downtime and maintenance efforts.
+Additionally, monitoring of connected + manufacturing equipment and the environment at the + production facility for the presence of poisonous + gases, excessive noise or heat increases the safety + of the workers and reduces the risks of incidents or + accidents.
+Real-time monitoring and KPI calculations of + production equipment helps to detect productivity + problems and optimize the supply chain.
The goals of the Web of Things (WoT) are to improve the interoperability - and usability of the Internet of Things (IoT). Through a collaboration - involving many stakeholders over many years, several building - blocks have been identified that help address these challenges. -
-This specification is focused on the scope of W3C WoT standardization, - which can be broken down into these building blocks as well as the abstract - architecture that defines how they are related. - The building blocks are defined and described in detail in separate specifications. - However, in addition to defining the abstract architecture and its terminology and - conceptual framework, - this specification also serves as an introduction to the WoT building blocks, - and explains their interworking:
-This specification also covers non-normative architectural aspects - and conditions for the deployment of WoT systems. - These guidelines are described in the context of example deployment scenarios, - although this specification does not normatively define specific concrete - implementations. -
-This specification serves as an umbrella for W3C WoT - specifications and defines the basics such as terminology - and the underlying abstract architecture of the W3C Web of - Things. In summary, the purpose of this specification is to - provide:
-Additional requirements, use cases, conceptual features and new building blocks will be - addressed in a future revision of this document. -
+Monitoring of vehicles, fuel costs, maintenance + needs and assignments helps to optimize the full + utilization of the vehicle fleet.
+Shipments can be tracked to be en-route to ensure + consistent quality and condition of the transported + goods. This is especially useful to assert the + integrity of the cold-chain from warehouses to + refrigerated trucks to delivery.
+Centralized monitoring and management of stock in + warehouses and yards can prevent out of stock and + excessive stock situations.
This specification uses the following terms as defined here. - The WoT prefix is used to avoid ambiguity for terms that are - (re)defined specifically for Web of Things concepts.
-Automated reading of residential and C&I + (Commercial and Industrial) meters, and billing + offers continuous insights into resource consumption + and potential bottlenecks.
+Monitoring the condition and output of + distributed renewable energy generation equipment + enables optimization of distributed energy + resources.
+Monitoring and remote-controlling of distribution + equipment helps to automate the distribution + process.
+Continuous monitoring of generation and + distribution infrastructure is improving safety of + utilities crew in the field.
- This section presents the application domains and use cases - targeted by the W3C WoT and which are used to derive the - abstract architecture discussed in . -
-The Web of Things architecture does not put any - limitations on use cases and application domains. Various - application domains have been considered to collect common - patterns that have to be satisfied by the abstract - architecture.
-The following sections are not exhaustive. Rather they - serve as illustrations, where connected things can provide - additional benefit or enable new scenarios.
-In the consumer space there are multiple assets - that benefit from being connected. Lights and air - conditioners can be turned off based on room - occupancy. Window blinds can be closed automatically - based on weather conditions and presence. Energy and - other resource consumption can be optimized based on - usage patterns and predictions.
-The consumer use cases in this section includes - Smart Home use case.
-- shows an example of a - Smart Home. In this case, gateways are connected to - edge devices such as sensors, cameras and home - appliances through corresponding local communication - protocols such as KNX, ECHONET, ZigBee, DECT ULE and - Wi-SUN. Multiple gateways can exist in one home, - while each gateway can support multiple local - protocols. -
-Gateways can be connected to the cloud through - the internet, while some appliances can be connected - to the cloud directly. Services running in the cloud - collect data from edge devices and analyze the data, - then provide value to users through the edge devices - and other UX devices.
- -Smart home provides consumer benefits such as - remote access and control, voice control and home - automation. Smart home also enables device - manufacturers to monitor and maintain devices - remotely. Smart home can realize value added - services such as energy management and security - surveillance.
-
- The industrial use cases in this section are
- applicable to different industry verticals.
- Due to the nature of overlaps in the application
- scenarios, different verticals have similar use
- cases.
-
- shows an example - of a Smart Factory. In this case, field-level, - cell and line controllers automate different - factory equipment based on industrial - communication protocols such as PROFINET, - Modbus, OPC UA TSN, EtherCAT, or CAN. An - industrial edge device collects selected data - from various controllers and makes it available - to a cloud backend service, e.g., for remote - monitoring via a dashboard or analyzes it for - preventive maintenance. -
- -Smart factories require advanced monitoring of - the connected manufacturing equipment as well of the - manufactured products. They benefit from predictions - of machine failures and early discovery of anomalies - to prevent costly downtime and maintenance efforts.
-Additionally, monitoring of connected - manufacturing equipment and the environment at the - production facility for the presence of poisonous - gases, excessive noise or heat increases the safety - of the workers and reduces the risks of incidents or - accidents.
-Real-time monitoring and KPI calculations of - production equipment helps to detect productivity - problems and optimize the supply chain.
-Monitoring of vehicles, fuel costs, maintenance - needs and assignments helps to optimize the full - utilization of the vehicle fleet.
-Shipments can be tracked to be en-route to ensure - consistent quality and condition of the transported - goods. This is especially useful to assert the - integrity of the cold-chain from warehouses to - refrigerated trucks to delivery.
-Centralized monitoring and management of stock in - warehouses and yards can prevent out of stock and - excessive stock situations.
-Automated reading of residential and C&I - (Commercial and Industrial) meters, and billing - offers continuous insights into resource consumption - and potential bottlenecks.
-Monitoring the condition and output of - distributed renewable energy generation equipment - enables optimization of distributed energy - resources.
-Monitoring and remote-controlling of distribution - equipment helps to automate the distribution - process.
-Continuous monitoring of generation and - distribution infrastructure is improving safety of - utilities crew in the field.
-Offshore platform monitoring, leakage detection - and prediction of pipelines as well as monitoring - and controlling the levels in tanks and reservoirs - helps to improve the industrial safety for the - workforce as well as for the environment.
-Automated calculation of a distributed stock - through various storage tanks and delivery - pipes/trucks allows for improved planning and - resource optimization.
-Proactive Asset Monitoring of high value assets - such as connected structures, fleet vehicles, etc. - mitigates the risk of severe damage and high costs - due to predictions and early detection of incidents.
-Usage based insurance can be offered with usage - tracking and customized insurance policies.
-Predictive weather monitoring and re-routing - fleet vehicles to covered garages can limit loss due - to hail damage, tree damage.
-Monitoring for industrial safety reduces the - risks of security hazards. Monitoring of assets at - construction site can prevent damage and loss.
-Soil condition monitoring and creating optimal - plans for watering, fertilizing as well as - monitoring the produce conditions optimize the - quality and output of agricultural produce.
-Data collection and analytics of clinical trial - data helps to gain insights into new areas.
-Remote patient monitoring mitigates the risk of - undetected critical situations for elderly people - and patients after hospitalization.
-Environment monitoring typically relies on a lot - of distributed sensors that send their measurement - data to common gateways, edge devices and cloud - services.
-Monitoring of air pollution, water pollution and - other environmental risk factors such as fine dust, - ozone, volatile organic compound, radioactivity, - temperature, humidity to detect critical environment - conditions can prevent unrecoverable health or - environment damages.
-Monitoring of Bridges, Dams, Levees, Canals for - material condition, deterioration, vibrations - discovers maintenance repair work and prevents - significant damage. Monitoring of highways and - providing appropriate signage ensures optimized - traffic flow.
-Smart Parking is optimizing and tracking the - usage and availability of parking spaces and - automates billing/reservations.
-Smart control of street lights based on presence - detection, weather predictions, etc. reduces cost.
-Garbage containers can be monitored to optimize - the waste management and the trash collection route.
-Monitoring the energy usage throughout the - building helps to optimize resource consumption and - reduce waste.
-Monitoring the equipment in the buildings such as - HVAC, Elevators, etc. and fixing problems early - improves the satisfaction of occupants.
-Monitoring of operation status, prediction of - service needs optimizes maintenance needs and costs. - Driver safety is enhanced with notifications of an - early warning system for critical road and traffic - conditions.
-- shows an example - of a Connected Car. In this case, a gateway - connects to car components through CAN and to - the car navigation system through a proprietary - interface. Services running in the cloud collect - data pushed from car components and analyze the - data from multiple cars to determine traffic - patterns. The gateway can also consume cloud - services, in this case, to get traffic data and - show it to the driver through the car navigation - system. -
- -Offshore platform monitoring, leakage detection + and prediction of pipelines as well as monitoring + and controlling the levels in tanks and reservoirs + helps to improve the industrial safety for the + workforce as well as for the environment.
+Automated calculation of a distributed stock + through various storage tanks and delivery + pipes/trucks allows for improved planning and + resource optimization.
- This section introduces common deployment patterns that - illustrate how devices/things interact with controllers, - other devices, agents and servers. - In this section, we use the term client role as an - initiator of a transport protocol, and the term server role - as a passive component of a transport protocol. - This does not imply prescribing a specific role on any system component. - A device can be in a client and server role simultaneously. -
-- One example of this dual role is a sensor, that registers itself with a cloud service - and regularly sends sensor readings to the cloud. - In the response messages the cloud can adjust the transmission rate of the - sensor's messages or select specific sensor attributes, that are to be transmitted in future messages. - Since the sensor registers itself with the cloud and initiates connections, it is in the 'client' role. - However, since it also reacts to requests, that are transmitted in response messages, it also fulfills a 'server' role. -
-- The following sections illustrate the roles, tasks, and use case patterns with increasing complexity. - They are not exhaustive and are presented to motivate for the WoT architecture and building blocks - that are defined in later sections of this specification. -
- -- The first use case is a local device controlled by a - user-operated remote controller as depicted in . A remote - controller can access an electronic appliance - through the local home network directly. In this - case, the remote controller can be implemented by a - browser or native application. -
-In this pattern, at least one device like the - electronic appliance has a server role that can - accept a request from the other devices and responds - to them, and sometimes initiates a mechanical - action. The other device like the remote controller - has a client role that can send a message with a - request, like to read a sensor value or to turn on - the device. - Moreover, to emit a current state or event notification of a device, - the device may have a client role that can send a message - to another device, which has server roles. -
- -- shows an example of a - direct Thing-to-Thing interaction. The scenario is - as follows: a sensor detects a change of the room - condition, for example the temperature exceeding a - threshold, and issues a control message like "turn - on" to the electronic appliance. The sensor unit can - issue some trigger messages to other devices. -
-In this case, when two devices that have server - roles are connected, at least one device must have - also a client role that issues a message to the - other to actuate or notify.
- -- This use case contains a mobile remote controller - (e.g., on a smartphone) as shown in . The remote - controller can switch between different network - connections and protocols, e.g., between a cellular - network and a home network, which is using protocols - such as Wi-Fi and Bluetooth. When the controller is - in the home network it is a trusted device and no - additional security or access control is required. - When it is outside of the trusted network, - additional access control and security mechanisms - must be applied to ensure a trusted relationship. - Note that in this scenario the network connectivity - may change due to switching between different - network access points or cellular base stations. -
-- In this pattern, the remote controller and the - electronic appliance have a client and a server role - as in the related scenario in . -
- -- shows a use case - using a Smart Home Gateway. The gateway - is placed between a home network and the Internet. - It manages electronic appliances inside the - house and can receive commands from a remote - controller over the Internet, e.g., from a - smartphone as in the previous use case. It is also - is a virtual representation of a device. The Smart - Home Gateway typically offers proxy and firewall - functionality. -
-In this pattern, the home gateway has both a - client and a server role. When the remote controller actuates the electronic appliance, - it can connect to the - electronic appliance in the client role and to the - remote controller with the server role. - When the electronic appliance emits a message to the - remote controller, the gateway act as server roles - for the electric appliance, and it act as client roles - for the remote controller. -
- -- An Edge Device or Edge Gateway is similar to a Smart - Home Gateway. We use the term to indicate additional - tasks that are carried out by the edge gateway. - Whereas the home gateway in primarily just - bridges between the public and the trusted network, - the edge device has local compute capabilities and - typically bridges between different protocols. Edge - devices are typically used in industrial solutions, - where they can provide preprocessing, filtering and - aggregation of data provided by connected devices - and sensors. -
- -A digital twin is a virtual representation, i.e. - a model of a device or a group of devices that - resides on a cloud server or edge device. It can be - used to represent real-world devices which may not - be continuously online, or to run simulations of new - applications and services, before they get deployed - to the real devices.
- -Digital twins can model a single device, or they - can aggregate multiple devices in a virtual - representation of the combined devices.
- - -Digital twins can be realized in different ways, - depending on whether a device is already connected - to the cloud, or whether it is connected to a - gateway, which itself is connected to the cloud.
-- shows an - example where electronic appliances are - connected directly to the cloud. The cloud - mirrors the appliances and, acting as a digital - twin, can receive commands from remote - controllers (e.g., a smartphone). Authorized - controllers can be located anywhere, as the - digital twin is globally reachable. - -
- -- shows an - example where legacy electronic appliances - cannot directly connect to the cloud. Here, a - gateway is needed to relay the connection. The - gateway works as: -
-The cloud mirrors the gateway with all - connected appliances and acts as a digital twin - that manages them in the cloud in conjunction - with the gateway. Furthermore, the cloud can - receive commands from remote controllers (e.g., - a smartphone), which can be located anywhere.
- -Typical IoT deployments consist of multiple - (thousands) of devices. Without a standardized - mechanism, the management of firmware updates for - specific clouds require a lot of effort and hinders - wider scale IoT adoption.
-The primary benefit of a standardized mechanism - for describing devices and device types is the - capability of deploying devices to different cloud - environments without the need of doing customization - at device software / firmware level, i.e., installing - cloud specific code to a device. This implies that - the solution is flexible enough to describe devices - in a way that allows on-boarding and using devices - in multiple IoT cloud environments.
-This drives adoption of Web of Things devices, - since it enables easy usage of new devices in an - existing deployment, as well as migration of - existing devices from one cloud to the other.
-- show an example of a - cross-domain collaboration. In this case, each - system involves other systems in other domains, such - as Smart Factory with Smart City, Smart City with - Smart Home. This type of system is called - "Symbiotic" ecosystem, as shown in [[IEC-FOTF]]. - There are two collaboration models: direct - collaboration and indirect collaboration. In the - direct collaboration model, systems exchange - information directly with each other in a - peer-to-peer manner. In the indirect collaboration, - systems exchange information via some collaboration - platform. In order to maintain and continue this - collaboration, each system provides the metadata of - their capabilities and interfaces and adapts itself - to others. -
- -Proactive Asset Monitoring of high value assets + such as connected structures, fleet vehicles, etc. + mitigates the risk of severe damage and high costs + due to predictions and early detection of incidents.
+Usage based insurance can be offered with usage + tracking and customized insurance policies.
+Predictive weather monitoring and re-routing + fleet vehicles to covered garages can limit loss due + to hail damage, tree damage.
+Monitoring for industrial safety reduces the + risks of security hazards. Monitoring of assets at + construction site can prevent damage and loss.
- The previous section described various architecture - patterns. In these patterns, some functional entities - such as the devices including the legacy devices, - controllers, gateways and cloud servers are located at - physical locations such as inside building, outside - buildings, and data centers. - is an overview that shows the combinations and - communication paths of these entities. -
+Soil condition monitoring and creating optimal + plans for watering, fertilizing as well as + monitoring the produce conditions optimize the + quality and output of agricultural produce.
+Data collection and analytics of clinical trial + data helps to gain insights into new areas.
+Remote patient monitoring mitigates the risk of + undetected critical situations for elderly people + and patients after hospitalization.
+Environment monitoring typically relies on a lot + of distributed sensors that send their measurement + data to common gateways, edge devices and cloud + services.
+Monitoring of air pollution, water pollution and + other environmental risk factors such as fine dust, + ozone, volatile organic compound, radioactivity, + temperature, humidity to detect critical environment + conditions can prevent unrecoverable health or + environment damages.
+Monitoring of Bridges, Dams, Levees, Canals for + material condition, deterioration, vibrations + discovers maintenance repair work and prevents + significant damage. Monitoring of highways and + providing appropriate signage ensures optimized + traffic flow.
+Smart Parking is optimizing and tracking the + usage and availability of parking spaces and + automates billing/reservations.
+Smart control of street lights based on presence + detection, weather predictions, etc. reduces cost.
+Garbage containers can be monitored to optimize + the waste management and the trash collection route.
+Monitoring the energy usage throughout the + building helps to optimize resource consumption and + reduce waste.
+Monitoring the equipment in the buildings such as + HVAC, Elevators, etc. and fixing problems early + improves the satisfaction of occupants.
+Monitoring of operation status, prediction of + service needs optimizes maintenance needs and costs. + Driver safety is enhanced with notifications of an + early warning system for critical road and traffic + conditions.
+- In a transport protocol layer, each entity arbitrarily - selects a suitable role for communications. For example, - a device may act as a server when the device provides a service - to indefinite number of applications. On the other hand, - if a device has limited or intermittent network connectivity, - they may act as a client and actively send message to an application - when network is available. Regardless of this, - in application layer, an application sees that a device provides abstract - interfaces to interact and the application can interact with the device - using their abstract interfaces. + shows an example + of a Connected Car. In this case, a gateway + connects to car components through CAN and to + the car navigation system through a proprietary + interface. Services running in the cloud collect + data pushed from car components and analyze the + data from multiple cars to determine traffic + patterns. The gateway can also consume cloud + services, in this case, to get traffic data and + show it to the driver through the car navigation + system.
-- This section is normative. -
- -This section defines the properties required in an - abstract Web of Things (WoT) architecture.
- -There are a wide variety of physical - device configurations for WoT - implementations. The WoT abstract - architecture should be able to be mapped to - and cover all of the variations.
-There are already many existing IoT - solutions and ongoing IoT standardization - activities in many business fields. The WoT - should provide a bridge between these - existing and developing IoT solutions and - Web technology based on WoT concepts. The - WoT should be upwards compatible with - existing IoT solutions and current - standards.
-WoT must be able to scale for IoT - solutions that incorporate thousands to - millions of devices. These devices may offer - the same capabilities even though they are - created by different manufacturers.
-WoT must provide interoperability across - device and cloud manufacturers. It must be - possible to take a WoT enabled device and - connect it with a cloud service from - different manufacturers out of the box.
-- defines the - Web of Things abstract architecture by showing various - use cases and enumerating patterns for combining - architectural components. This section describes - technical requirements derived from the abstract - architecture. -
-The use cases help to identify basic components - such as devices and applications, that access and - control those devices, proxies (i.e., gateways and - edge devices) that are located between devices. - An additional component useful in some use cases - is the directory, which assists with discovery.
-Those components are connected to the internet or - field networks in offices, factories or other - facilities. Note that all components involved may be - connected to a single network in some cases, - however, in general components can be deployed - across multiple networks.
-- Access to devices is made using a description of - their functions and interfaces. This description is - called Thing Description (TD). A Thing - Description includes a general metadata about - the device, information models representing - functions, transport protocol description for - operating on information models, and security - information. -
-General metadata contains device identifiers - (URI), device information such as serial number, - production date, location and other human readable - information.
-Information models defines device attributes, and - represent device’s internal settings, control - functionality and notification functionality. - Devices that have the same functionality have the - same information model regardless of the transport - protocols used.
-Because many systems based on Web of Things - architecture are crossing system Domains, - vocabularies and meta data (e.g., ontologies) used in - information models should be commonly understood by - involved parties. In addition to REST transports, - PubSub transports are also supported.
-Security information includes descriptions about - authentication, authorization and secure - communications. Devices are required to put TDs - either inside them or at locations external to the - devices, and to make TDs accessible so that other - components can find and access them.
-Applications need to be able to generate and use network - and program interfaces based on metadata (descriptions).
-Applications have to be able to obtain these - descriptions through the network, - therefore, need to be able to conduct search - operations and acquire the necessary descriptions over the - network.
-Digital Twins need to generate program interfaces - internally based on metadata (descriptions), - and to represent virtual devices by using those - program interfaces. A twin has to produce a description for - the virtual device and make it externally available.
-Identifiers of virtual devices need to be newly - assigned, therefore, are different from the original - devices. This makes sure that virtual devices and - the original devices are clearly recognized as - separate entities. Transport and security mechanisms - and settings of the virtual devices can be different - from original devices if necessary. Virtual devices - are required to have descriptions provided either directly by - the twin or to have them available at external - locations. In either case it is required to make the - descriptions available so that other components can find and - use the devices associated with them.
-For TDs of devices and virtual devices to be - accessible from devices, applications and twins, - there needs to be a common way to share TDs. - Directories can serve this requirement by providing - functionalities to allow devices and twins - themselves automatically or the users to manually - register the descriptions.
-Descriptions of the devices and virtual devices - need to be searchable by external entities. - Directories have to be able to process search - operations with search keys such as keywords from - the general description in the device description or - information models.
-Security information related to devices and - virtual devices needs to be described in device - descriptions. This includes information for - authentication/authorization and payload - encryption.
-WoT architecture should support multiple security - mechanism commonly used in the web, such as Basic, - Digest, Bearer and OAuth2.0.
-The Web of Things primarily targets - machine-to-machine communication. The humans - involved are usually developers that integrate - Things into applications. End-users will be faced - with the front-ends of the applications or the - physical user interfaces provided by devices - themselves. Both are out of scope of the W3C WoT - specifications. Given the focus on IoT instead of - users, accessibility is not a direct requirement, - and hence is not addressed within this specification.
-There is, however, an interesting aspect on - accessibility: Fulfilling the requirements above - enables machines to understand the network-facing - API of devices. This can be utilized by - accessibility tools to provide user interfaces of - different modality, thereby removing barriers to - using physical devices and IoT-related applications.
-+ This section introduces common deployment patterns that + illustrate how devices/things interact with controllers, + other devices, agents and servers. + In this section, we use the term client role as an + initiator of a transport protocol, and the term server role + as a passive component of a transport protocol. + This does not imply prescribing a specific role on any system component. + A device can be in a client and server role simultaneously. +
++ One example of this dual role is a sensor, that registers itself with a cloud service + and regularly sends sensor readings to the cloud. + In the response messages the cloud can adjust the transmission rate of the + sensor's messages or select specific sensor attributes, that are to be transmitted in future messages. + Since the sensor registers itself with the cloud and initiates connections, it is in the 'client' role. + However, since it also reacts to requests, that are transmitted in response messages, it also fulfills a 'server' + role. +
++ The following sections illustrate the roles, tasks, and use case patterns with increasing complexity. + They are not exhaustive and are presented to motivate for the WoT architecture and building blocks + that are defined in later sections of this specification. +
+ ++ The first use case is a local device controlled by a + user-operated remote controller as depicted in . A remote + controller can access an electronic appliance + through the local home network directly. In this + case, the remote controller can be implemented by a + browser or native application. +
+In this pattern, at least one device like the + electronic appliance has a server role that can + accept a request from the other devices and responds + to them, and sometimes initiates a mechanical + action. The other device like the remote controller + has a client role that can send a message with a + request, like to read a sensor value or to turn on + the device. + Moreover, to emit a current state or event notification of a device, + the device may have a client role that can send a message + to another device, which has server roles. +
++ shows an example of a + direct Thing-to-Thing interaction. The scenario is + as follows: a sensor detects a change of the room + condition, for example the temperature exceeding a + threshold, and issues a control message like "turn + on" to the electronic appliance. The sensor unit can + issue some trigger messages to other devices. +
+In this case, when two devices that have server + roles are connected, at least one device must have + also a client role that issues a message to the + other to actuate or notify.
++ This use case contains a mobile remote controller + (e.g., on a smartphone) as shown in . The remote + controller can switch between different network + connections and protocols, e.g., between a cellular + network and a home network, which is using protocols + such as Wi-Fi and Bluetooth. When the controller is + in the home network it is a trusted device and no + additional security or access control is required. + When it is outside of the trusted network, + additional access control and security mechanisms + must be applied to ensure a trusted relationship. + Note that in this scenario the network connectivity + may change due to switching between different + network access points or cellular base stations. +
++ In this pattern, the remote controller and the + electronic appliance have a client and a server role + as in the related scenario in . +
++ shows a use case + using a Smart Home Gateway. The gateway + is placed between a home network and the Internet. + It manages electronic appliances inside the + house and can receive commands from a remote + controller over the Internet, e.g., from a + smartphone as in the previous use case. It is also + is a virtual representation of a device. The Smart + Home Gateway typically offers proxy and firewall + functionality. +
+In this pattern, the home gateway has both a + client and a server role. When the remote controller actuates the electronic appliance, + it can connect to the + electronic appliance in the client role and to the + remote controller with the server role. + When the electronic appliance emits a message to the + remote controller, the gateway act as server roles + for the electric appliance, and it act as client roles + for the remote controller. +
++ An Edge Device or Edge Gateway is similar to a Smart + Home Gateway. We use the term to indicate additional + tasks that are carried out by the edge gateway. + Whereas the home gateway in primarily just + bridges between the public and the trusted network, + the edge device has local compute capabilities and + typically bridges between different protocols. Edge + devices are typically used in industrial solutions, + where they can provide preprocessing, filtering and + aggregation of data provided by connected devices + and sensors. +
+A digital twin is a virtual representation, i.e. + a model of a device or a group of devices that + resides on a cloud server or edge device. It can be + used to represent real-world devices which may not + be continuously online, or to run simulations of new + applications and services, before they get deployed + to the real devices.
+Digital twins can model a single device, or they + can aggregate multiple devices in a virtual + representation of the combined devices.
+Digital twins can be realized in different ways, + depending on whether a device is already connected + to the cloud, or whether it is connected to a + gateway, which itself is connected to the cloud.
+- This section is normative. + shows an + example where electronic appliances are + connected directly to the cloud. The cloud + mirrors the appliances and, acting as a digital + twin, can receive commands from remote + controllers (e.g., a smartphone). Authorized + controllers can be located anywhere, as the + digital twin is globally reachable.
+- To address the use cases in Section 4 and fulfill the requirements in Section 5, - the Web of Things (WoT) builds on top of the concept of Web Things – usually simply called Things – that can be used by so-called Consumers. - This section provides the background and normative assertions to define the overall W3C Web of Things architecture. - As the Web of Things addresses stakeholders from different domains, certain aspects of Web technology are explained in more detail, in particular the concept of hypermedia. + shows an + example where legacy electronic appliances + cannot directly connect to the cloud. Here, a + gateway is needed to relay the connection. The + gateway works as:
-- A Thing is the abstraction of a physical or virtual entity (e.g., a device or a room) and is described by standardized metadata. - - In W3C WoT, the description metadata MUST be a WoT Thing Description (TD) [[?WOT-THING-DESCRIPTION]]. - - - Consumers MUST be able to parse and process the TD representation format, which is based on JSON [[!RFC8259]]. - - The format can be processed either through classic JSON libraries or a JSON-LD processor, - as the underlying information model is graph-based and its serialization compatible with JSON-LD 1.1 [[?JSON-LD11]]. - The use of a JSON-LD processor for processing a TD additionally enables semantic processing - including transformation to RDF triples, semantic inference and accomplishing tasks given - based on ontological terms, which would make Consumers behave more autonomous. - A TD is instance-specific (i.e., describes an individual Thing, not types of Things) - and is the default external, textual (Web) representation of a Thing. - - There MAY be other representations of a Thing such as an HTML-based user interface, - simply an image of the physical entity, - or even non-Web representations in closed systems. - -
-- - To be a Thing, however, at least one TD representation MUST be available. - - The WoT Thing Description is a standardized, machine-understandable representation format - that allows Consumers to discover and interpret the capabilities of a Thing (through semantic annotations) - and to adapt to different implementations (e.g., different protocols or data structures) when interacting with a Thing, - thereby enabling interoperability across different IoT platforms, i.e., different ecosystems and standards. -
-- A Thing can also be the abstraction of a virtual entity. - A virtual entity is the composition of one or more Things (e.g., a room consisting of several sensors and actuators). - One option for the composition is to provide a single, consolidated WoT Thing Description that contains the superset of capabilities for the virtual entity. - In cases where the composition is rather complex, its TD may link to hierarchical sub-Things within the composition. - The main TD acts as entry point and only contain general metadata and potentially overarching capabilities. - This allows grouping of certain aspects of more complex Things. -
- -- Linking does not only apply to hierarchical Things, but relations between Things and other resources in general. - Link relation types express how Things relate, for instance, a switch controlling a light or a room monitored by a motion sensor. - Other resources related to a Thing can be manuals, catalogs for spare parts, CAD files, a graphical UI, or any other document on the Web. - Overall, Web linking among Things makes the Web of Things navigable, for both humans and machines. - This can be further facilitated by providing Thing directories that manage a catalog of available Things, usually by caching their TD representation. - In summary, - WoT Thing Descriptions - MAY link to other Things and other resources on the Web to form a Web of Things. - -
-- Things must be hosted on networked system components with a software stack to realize interaction through a network-facing interface, the WoT Interface of a Thing. - One example of this is an HTTP server running on an embedded device with sensors and actuators interfacing the physical entity behind the Thing abstraction. - However, W3C WoT does not mandate where Things are hosted; it can be on the IoT device directly, an Edge device such as a gateway, or the cloud. -
-- A typical deployment challenge is a scenario, where local networks are not reachable from the Internet, - usually because of IPv4 Network Address Translation (NAT) or firewall devices. - To remedy this situation, W3C WoT allows for Intermediaries between Things and Consumers. -
+The cloud mirrors the gateway with all + connected appliances and acts as a digital twin + that manages them in the cloud in conjunction + with the gateway. Furthermore, the cloud can + receive commands from remote controllers (e.g., + a smartphone), which can be located anywhere.
+Typical IoT deployments consist of multiple + (thousands) of devices. Without a standardized + mechanism, the management of firmware updates for + specific clouds require a lot of effort and hinders + wider scale IoT adoption.
+The primary benefit of a standardized mechanism + for describing devices and device types is the + capability of deploying devices to different cloud + environments without the need of doing customization + at device software / firmware level, i.e., installing + cloud specific code to a device. This implies that + the solution is flexible enough to describe devices + in a way that allows on-boarding and using devices + in multiple IoT cloud environments.
+This drives adoption of Web of Things devices, + since it enables easy usage of new devices in an + existing deployment, as well as migration of + existing devices from one cloud to the other.
+- Intermediaries can act as proxies for Things, where the Intermediary has a WoT Thing Description similar to the original Thing, - but which points to the WoT Interface provided by the Intermediary. - Intermediaries may also augment existing Things with additional capabilities or compose a new Thing out of multiple available Things, - thereby forming a virtual entity. - To Consumers, Intermediaries look like Things, as they possess WoT Thing Descriptions and provide a WoT Interface, - and hence might be indistinguishable from Things in a layered system architecture like the Web [[?REST]]. - - An identifier in the WoT Thing Description MUST allow for the correlation of multiple TDs representing the same original Thing or ultimately unique physical entity. - -
-- Another remedy for restricted local networks is binding the WoT Interface to a protocol - that establishes the connection from the Thing within the local network to a publicly reachable Consumer. -
-- Things - MAY be bundled together with a Consumer to enable Thing-to-Thing interaction. - Usually, the Consumer behavior is embedded in the software component, - which is also implementing the behavior of the Thing. - The - configuration of the Consumer behavior MAY be exposed through the Thing. -
-- The concepts of W3C WoT are applicable to all levels relevant for IoT applications: the device level, edge level, and cloud level. - This fosters common interfaces and APIs across the different levels and enables various integration patterns - such as Thing-to-Thing, Thing-to-Gateway, Thing-to-Cloud, Gateway-to-Cloud, and even cloud federation, - i.e., interconnecting cloud computing environments of two or more service providers, for IoT applications. - gives an overview how the WoT concepts introduced above can be applied and combined to address the use cases summarized in . -
-- A central aspect in W3C WoT is the provision of machine-understandable metadata (i.e., WoT Thing Descriptions). - Ideally, such metadata is self-descriptive, so that Consumers are able to identify - what capabilities a Thing provides and how to use the provided capabilities. - A key to this self-descriptiveness lies in the concept of affordances. -
-- The term affordance originates in ecological - psychology, but was adopted in the field of - Human-Computer Interaction [[?HCI]] based on the - definition by Donald Norman: "'Affordance' refers to - the perceived and actual properties of the thing, - primarily those fundamental properties that - determine just how the thing could possibly be - used." [[?NORMAN]]
-- An example for this is a door with a handle. - The door handle is an affordance, which suggests that the door can be opened. - For humans, a door handle usually also suggests how the door can be opened; - an American knob suggests twisting, a European lever handle suggests pressing down. -
-- The hypermedia principle, which is one of the - core foundations of the REST architectural style [[?REST]], - demands that any piece of information available on - the Web be linked to other pieces of information so - that the consumer of the information gets explicit - knowledge about how to navigate the Web and control - Web applications. - Here, the simultaneous presentation of - information and control (provided in - the form of hyperlinks) is a mechanism that affords - Web clients the means to drive Web applications. In this - context, an affordance is the description of a - hyperlink (e.g., via a link relation type and link - target attributes) suggesting Web clients how to navigate - and possibly how to act on the linked resource. - Hence, links provide navigation affordances. -
-- Drawn from this hypermedia principle, - the Web of Things defines Interaction Affordances as metadata of a Thing - that shows and describes the possible choices to Consumers, thereby suggesting - how Consumers may interact with the Thing. - A general Interaction Affordance is navigation, which is activated by following a link, - thereby enabling Consumers to browse the Web of Things. - defines three more types of Interaction Affordances for W3C WoT: Properties, Actions, and Events. -
-- Overall, this W3C WoT definition is aligned with HCI and interaction designers, who create physical Things, - as well as the REST and microservice community, who is working on Web services in general. -
-- A Web Thing has four architectural aspects of interest: - its behavior, its Interaction Affordances, its security configuration, - and its Protocol Bindings, - as depicted in . - The behavior aspect of a Thing includes both the autonomous behavior and the handlers for the Interaction Affordances. - The Interaction Affordances provide a model of how Consumers can interact with the Thing through abstract operations, - but without reference to a specific network protocol or data encoding. - The protocol binding adds the additional detail needed to map each - Interaction Affordance to concrete messages of a certain protocol. - In general, different concrete protocols may be used to - support different subsets of Interaction Affordances, - even within a single Thing. The security configuration - aspect of a Thing represents the mechanisms used to - control access to the Interaction Affordances and the management of - related Public Security Metadata and Private Security Data. -
-+ show an example of a + cross-domain collaboration. In this case, each + system involves other systems in other domains, such + as Smart Factory with Smart City, Smart City with + Smart Home. This type of system is called + "Symbiotic" ecosystem, as shown in [[IEC-FOTF]]. + There are two collaboration models: direct + collaboration and indirect collaboration. In the + direct collaboration model, systems exchange + information directly with each other in a + peer-to-peer manner. In the indirect collaboration, + systems exchange information via some collaboration + platform. In order to maintain and continue this + collaboration, each system provides the metadata of + their capabilities and interfaces and adapts itself + to others. +
++ The previous section described various architecture + patterns. In these patterns, some functional entities + such as the devices including the legacy devices, + controllers, gateways and cloud servers are located at + physical locations such as inside building, outside + buildings, and data centers. + is an overview that shows the combinations and + communication paths of these entities. +
++ In a transport protocol layer, each entity arbitrarily + selects a suitable role for communications. For example, + a device may act as a server when the device provides a service + to indefinite number of applications. On the other hand, + if a device has limited or intermittent network connectivity, + they may act as a client and actively send message to an application + when network is available. Regardless of this, + in application layer, an application sees that a device provides abstract + interfaces to interact and the application can interact with the device + using their abstract interfaces. +
++ This section is normative. +
+ +This section defines the properties required in an + abstract Web of Things (WoT) architecture.
+ +There are a wide variety of physical + device configurations for WoT + implementations. The WoT abstract + architecture should be able to be mapped to + and cover all of the variations.
+There are already many existing IoT + solutions and ongoing IoT standardization + activities in many business fields. The WoT + should provide a bridge between these + existing and developing IoT solutions and + Web technology based on WoT concepts. The + WoT should be upwards compatible with + existing IoT solutions and current + standards.
+WoT must be able to scale for IoT + solutions that incorporate thousands to + millions of devices. These devices may offer + the same capabilities even though they are + created by different manufacturers.
+WoT must provide interoperability across + device and cloud manufacturers. It must be + possible to take a WoT enabled device and + connect it with a cloud service from + different manufacturers out of the box.
++ defines the + Web of Things abstract architecture by showing various + system topologies. This section describes + technical requirements derived from the abstract + architecture. +
+The use cases help to identify basic components + such as devices and applications, that access and + control those devices, proxies (i.e., gateways and + edge devices) that are located between devices. + An additional component useful in some use cases + is the directory, which assists with discovery.
+Those components are connected to the internet or + field networks in offices, factories or other + facilities. Note that all components involved may be + connected to a single network in some cases, + however, in general components can be deployed + across multiple networks.
++ Access to devices is made using a description of + their functions and interfaces. This description is + called Thing Description (TD). A Thing + Description includes a general metadata about + the device, information models representing + functions, transport protocol description for + operating on information models, and security + information. +
+General metadata contains device identifiers + (URI), device information such as serial number, + production date, location and other human readable + information.
+Information models defines device attributes, and + represent device’s internal settings, control + functionality and notification functionality. + Devices that have the same functionality have the + same information model regardless of the transport + protocols used.
+Because many systems based on Web of Things + architecture are crossing system Domains, + vocabularies and meta data (e.g., ontologies) used in + information models should be commonly understood by + involved parties. In addition to REST transports, + PubSub transports are also supported.
+Security information includes descriptions about + authentication, authorization and secure + communications. Devices are required to put TDs + either inside them or at locations external to the + devices, and to make TDs accessible so that other + components can find and access them.
+Applications need to be able to generate and use network + and program interfaces based on metadata (descriptions).
+Applications have to be able to obtain these + descriptions through the network, + therefore, need to be able to conduct search + operations and acquire the necessary descriptions over the + network.
+Digital Twins need to generate program interfaces + internally based on metadata (descriptions), + and to represent virtual devices by using those + program interfaces. A twin has to produce a description for + the virtual device and make it externally available.
+Identifiers of virtual devices need to be newly + assigned, therefore, are different from the original + devices. This makes sure that virtual devices and + the original devices are clearly recognized as + separate entities. Transport and security mechanisms + and settings of the virtual devices can be different + from original devices if necessary. Virtual devices + are required to have descriptions provided either directly by + the twin or to have them available at external + locations. In either case it is required to make the + descriptions available so that other components can find and + use the devices associated with them.
+For TDs of devices and virtual devices to be + accessible from devices, applications and twins, + there needs to be a common way to share TDs. + Directories can serve this requirement by providing + functionalities to allow devices and twins + themselves automatically or the users to manually + register the descriptions.
+Descriptions of the devices and virtual devices + need to be searchable by external entities. + Directories have to be able to process search + operations with search keys such as keywords from + the general description in the device description or + information models.
+Security information related to devices and + virtual devices needs to be described in device + descriptions. This includes information for + authentication/authorization and payload + encryption.
+WoT architecture should support multiple security + mechanism commonly used in the web, such as Basic, + Digest, Bearer and OAuth2.0.
+The Web of Things primarily targets + machine-to-machine communication. The humans + involved are usually developers that integrate + Things into applications. End-users will be faced + with the front-ends of the applications or the + physical user interfaces provided by devices + themselves. Both are out of scope of the W3C WoT + specifications. Given the focus on IoT instead of + users, accessibility is not a direct requirement, + and hence is not addressed within this specification.
+There is, however, an interesting aspect on + accessibility: Fulfilling the requirements above + enables machines to understand the network-facing + API of devices. This can be utilized by + accessibility tools to provide user interfaces of + different modality, thereby removing barriers to + using physical devices and IoT-related applications.
++ This section is normative. +
++ To address the use cases in Section 4 and fulfill the requirements in Section 5, + the Web of Things (WoT) builds on top of the concept of Web Things – usually simply called Things + – that can be used by so-called Consumers. + This section provides the background and normative assertions to define the overall W3C Web of Things + architecture. + As the Web of Things addresses stakeholders from different domains, certain aspects of Web technology are + explained in more detail, in particular the concept of hypermedia. +
++ A Thing is the abstraction of a physical or virtual entity (e.g., a device or a room) and is described by + standardized metadata. + + In W3C WoT, the description metadata MUST be a WoT Thing Description (TD) [[?WOT-THING-DESCRIPTION]]. + + + Consumers MUST be able to parse and process the TD representation format, which is based on JSON + [[!RFC8259]]. + + The format can be processed either through classic JSON libraries or a JSON-LD processor, + as the underlying information model is graph-based and its serialization compatible with JSON-LD 1.1 + [[?JSON-LD11]]. + The use of a JSON-LD processor for processing a TD additionally enables semantic processing + including transformation to RDF triples, semantic inference and accomplishing tasks given + based on ontological terms, which would make Consumers behave more autonomous. + A TD is instance-specific (i.e., describes an individual Thing, not types of Things) + and is the default external, textual (Web) representation of a Thing. + + There MAY be other representations of a Thing such as an HTML-based user interface, + simply an image of the physical entity, + or even non-Web representations in closed systems. + +
++ + To be a Thing, however, at least one TD representation MUST be available. + + The WoT Thing Description is a standardized, machine-understandable representation format + that allows Consumers to discover and interpret the capabilities of a Thing (through semantic + annotations) + and to adapt to different implementations (e.g., different protocols or data structures) when interacting with a + Thing, + thereby enabling interoperability across different IoT platforms, i.e., different ecosystems and + standards. +
++ A Thing can also be the abstraction of a virtual entity. + A virtual entity is the composition of one or more Things (e.g., a room consisting of several sensors and + actuators). + One option for the composition is to provide a single, consolidated WoT Thing Description that contains + the superset of capabilities for the virtual entity. + In cases where the composition is rather complex, its TD may link to hierarchical sub-Things + within the composition. + The main TD acts as entry point and only contain general metadata and potentially overarching + capabilities. + This allows grouping of certain aspects of more complex Things. +
+ ++ Linking does not only apply to hierarchical Things, but relations between Things and other resources in + general. + Link relation types express how Things relate, for instance, a switch controlling a light or a room monitored by + a motion sensor. + Other resources related to a Thing can be manuals, catalogs for spare parts, CAD files, a graphical UI, + or any other document on the Web. + Overall, Web linking among Things makes the Web of Things navigable, for both humans and machines. + This can be further facilitated by providing Thing directories that manage a catalog of available Things, + usually by caching their TD representation. + In summary, + WoT Thing Descriptions + MAY link to other Things and other resources on the Web to form a Web of Things. + +
++ Things must be hosted on networked system components with a software stack to realize interaction through a + network-facing interface, the WoT Interface of a Thing. + One example of this is an HTTP server running on an embedded device with sensors and actuators interfacing the + physical entity behind the Thing abstraction. + However, W3C WoT does not mandate where Things are hosted; it can be on the IoT device directly, an + Edge device such as a gateway, or the cloud. +
++ A typical deployment challenge is a scenario, where local networks are not reachable from the Internet, + usually because of IPv4 Network Address Translation (NAT) or firewall devices. + To remedy this situation, W3C WoT allows for Intermediaries between Things and Consumers. +
+ ++ Intermediaries can act as proxies for Things, where the Intermediary has a WoT Thing + Description similar to the original Thing, + but which points to the WoT Interface provided by the Intermediary. + Intermediaries may also augment existing Things with additional capabilities or compose a new + Thing out of multiple available Things, + thereby forming a virtual entity. + To Consumers, Intermediaries look like Things, as they possess WoT Thing + Descriptions and provide a WoT Interface, + and hence might be indistinguishable from Things in a layered system architecture like the Web [[?REST]]. + + An identifier in the WoT Thing Description MUST allow for the correlation of multiple TDs + representing the same original Thing or ultimately unique physical entity. + +
++ Another remedy for restricted local networks is binding the WoT Interface to a protocol + that establishes the connection from the Thing within the local network to a publicly reachable + Consumer. +
++ Things + MAY be bundled together with a Consumer to enable Thing-to-Thing interaction. + Usually, the Consumer behavior is embedded in the software component, + which is also implementing the behavior of the Thing. + The + configuration of the Consumer behavior MAY be exposed through the Thing. +
+
+ The concepts of W3C WoT are applicable to all levels relevant for IoT applications: the device level, edge
+ level, and cloud level.
+ This fosters common interfaces and APIs across the different levels and enables various integration patterns
+ such as Thing-to-Thing, Thing-to-Gateway, Thing-to-Cloud, Gateway-to-Cloud, and even cloud federation,
+ i.e., interconnecting cloud computing environments of two or more service providers, for IoT applications.
+ gives an overview how the WoT concepts introduced above can be applied and
+ combined to address the use cases described in the WoT Use Cases document.
+ TODO: add reference.
+
+
+ A central aspect in W3C WoT is the provision of machine-understandable metadata (i.e., WoT Thing + Descriptions). + Ideally, such metadata is self-descriptive, so that Consumers are able to identify + what capabilities a Thing provides and how to use the provided capabilities. + A key to this self-descriptiveness lies in the concept of affordances. +
++ The term affordance originates in ecological + psychology, but was adopted in the field of + Human-Computer Interaction [[?HCI]] based on the + definition by Donald Norman: "'Affordance' refers to + the perceived and actual properties of the thing, + primarily those fundamental properties that + determine just how the thing could possibly be + used." [[?NORMAN]]
++ An example for this is a door with a handle. + The door handle is an affordance, which suggests that the door can be opened. + For humans, a door handle usually also suggests how the door can be opened; + an American knob suggests twisting, a European lever handle suggests pressing down. +
++ The hypermedia principle, which is one of the + core foundations of the REST architectural style [[?REST]], + demands that any piece of information available on + the Web be linked to other pieces of information so + that the consumer of the information gets explicit + knowledge about how to navigate the Web and control + Web applications. + Here, the simultaneous presentation of + information and control (provided in + the form of hyperlinks) is a mechanism that affords + Web clients the means to drive Web applications. In this + context, an affordance is the description of a + hyperlink (e.g., via a link relation type and link + target attributes) suggesting Web clients how to navigate + and possibly how to act on the linked resource. + Hence, links provide navigation affordances. +
++ Drawn from this hypermedia principle, + the Web of Things defines Interaction Affordances as metadata of a Thing + that shows and describes the possible choices to Consumers, thereby suggesting + how Consumers may interact with the Thing. + A general Interaction Affordance is navigation, which is activated by following a link, + thereby enabling Consumers to browse the Web of Things. + defines three more types of Interaction Affordances for W3C WoT: + Properties, Actions, and Events. +
++ Overall, this W3C WoT definition is aligned with HCI and interaction designers, who create physical Things, + as well as the REST and microservice community, who is working on Web services in general. +
++ A Web Thing has four architectural aspects of interest: + its behavior, its Interaction Affordances, its security configuration, + and its Protocol Bindings, + as depicted in . + The behavior aspect of a Thing includes both the autonomous behavior and the handlers for the + Interaction Affordances. + The Interaction Affordances provide a model of how Consumers can interact with the Thing + through abstract operations, + but without reference to a specific network protocol or data encoding. + The protocol binding adds the additional detail needed to map each + Interaction Affordance to concrete messages of a certain protocol. + In general, different concrete protocols may be used to + support different subsets of Interaction Affordances, + even within a single Thing. The security configuration + aspect of a Thing represents the mechanisms used to + control access to the Interaction Affordances and the management of + related Public Security Metadata and Private Security Data. +
+- In a system that applies the WoT architecture principles different entities interact with each other and exchange information between them. - Each entity (consumer, thing, directory, ...) has its own (intrinsic) lifecycle. - For an application scenario, where things are combined into common operation flows, the entire system follows a lifecycle. - This lifecycle requires a certain flow of information and a sequence of operations that need to be carried out during the lifetime of the application. -
-- To give a practical example: - A thing has to go through some initial setup and configuration steps, before it can be used by others. - This may include the provisioning of keys, performing configuration operations, onboarding it to a consumer, - registering it with a thing directory and other actions. - When a thing has to be permanently removed from an application, the system has to undergo some state changes to decomission it from consumers, - remove security credentials, deregister it from directories etc. - These activities change the state of individual system components which impact the entire systen state. - For example a thing, that has been deregistered from a directory service can no longer be looked up. - It is dependent on the use case if the thing can still continue to be used. -
- -- We distinguish two fundamentally different application scenarios: -
- In the simple scenario the thing and the consumer have a direct relationship and gets onboarded to the consumer directly.
- In the alternative case, a thing is registered with a directory and the consumer has to discover/lookup the thing before it can be initially used.
+
+
+
+ In a system that applies the WoT architecture principles different entities interact with each other and
+ exchange information between them.
+ Each entity (consumer, thing, directory, ...) has its own (intrinsic) lifecycle.
+ For an application scenario, where things are combined into common operation flows, the entire system follows
+ a lifecycle.
+ This lifecycle requires a certain flow of information and a sequence of operations that need to be carried out
+ during the lifetime of the application.
+
+ To give a practical example:
+ A thing has to go through some initial setup and configuration steps, before it can be used by others.
+ This may include the provisioning of keys, performing configuration operations, onboarding it to a consumer,
+ registering it with a thing directory and other actions.
+ When a thing has to be permanently removed from an application, the system has to undergo some state changes
+ to decomission it from consumers,
+ remove security credentials, deregister it from directories etc.
+ These activities change the state of individual system components which impact the entire systen state.
+ For example a thing, that has been deregistered from a directory service can no longer be looked up.
+ It is dependent on the use case if the thing can still continue to be used.
+ Lifecycle
+ TODO:Create introductory text that introduces the succeeding chapters.
+ Explain the difference between
+ System Lifecycle
+ System Lifecycle
+
+ We distinguish two fundamentally different application scenarios: +
+
+ In the simple scenario the thing and the consumer have a direct relationship and gets onboarded to the
+ consumer directly.
+ In the alternative case, a thing is registered with a directory and the consumer has to discover/lookup the
+ thing before it can be initially used.
-
- This section is normative. -
-The Web of Things (WoT) building blocks allow the - implementation of systems that conform with the abstract WoT - Architecture. The specifics of these building blocks are - defined in separate specification; this section provides an - overview and a summary. -
-The WoT building blocks support each of the architectural - aspects of a Thing discussed in - and depicted in . The individual building - blocks are shown in the context of an abstract Thing in - . This is an abstract - view and does not represent any particular - implementation; instead it illustrates the - relationship between the building blocks and the main - architectural aspects of a Thing. - In this figure the WoT building blocks - are highlighted with black outlines. - Security, a cross-cutting concern, - is separated into public and protected private components. - The WoT Scripting API is optional and the - Binding Templates are informative. -
-In the following sections we will provide additional - information on each WoT building block: - the WoT Thing - Description, the WoT Binding Templates, - and the WoT Scripting API. - Security, although it is a cross-cutting concern, can - be considered a fourth building block. -
- -The WoT Thing Description (TD) specification - [[?WOT-THING-DESCRIPTION]] defines an information model - based on a semantic vocabulary and a serialized - representation based on JSON. TDs provide rich metadata - for Things in a way that is both human-readable and - machine-understandable. Both the information model and - the representation format of TDs are aligned with Linked - Data [[?LINKED-DATA]], so that besides raw JSON - processing, implementations may choose to make use of - JSON-LD [[?JSON-LD11]] and graph databases to enable - powerful semantic processing of the metadata. -
-A Thing Description (TD) describes Thing - instances with general metadata such as name, ID, - descriptions, and also can provide relation metadata - through links to related Things or other documents. TDs - also contain Interaction Affordance metadata based on - the interaction model defined in ; Public Security - Metadata; and communications metadata - defining Protocol Bindings. The TD can be seen as the index.html - for Things, as it provides the entry point to learn - about the provided services and related resources, both - of which are described using hypermedia controls. -
-Ideally, the TD is created and/or hosted by the Thing - itself and retrieved upon discovery. Yet it can also be - hosted externally when a Thing has resource restrictions - (e.g., limited memory space, limited power) or when an existing device - is retrofitted to become part of the Web of Things. A - common pattern to improve discovery (e.g., for constrained devices) and to - facilitate device management is to register TDs with a directory. - It is recommended that Consumers use a TD caching mechanism combined with - a notification mechanism, which will inform them when it is required to fetch - a new version of the TD, in case the Thing is updated. -
-For semantic interoperability, TDs may make use - of a domain-specific vocabulary, for which explicit - extension points are provided. However, development of - any particular domain-specific vocabulary is currently - out-of-scope of the W3C WoT standardization activity. -
-Three examples of potentially useful external IoT - vocabularies are SAREF [[?SAREF]], Schema Extensions for IoT - [[?IOT-SCHEMA-ORG]], and the W3C Semantic Sensor Network - ontology [[?VOCAB-SSN]]. Use of such external vocabularies in TDs is - optional. In the future additional domain-specific - vocabularies may be developed and used with TDs. -
-Overall, the WoT Thing Description building block - fosters interoperability in two ways: First, TDs - enable machine-to-machine communication in the Web of - Things. Second, TDs can serve as a common, - uniform format for developers to document and retrieve - all the details necessary to create applications that - can access IoT devices and make use of their data. -
-The IoT uses a variety of protocols for accessing - devices, since no single protocol is appropriate in all - contexts. Thus, a central challenge for the Web of - Things is to enable interactions with the plethora of - different IoT platforms (e.g., OCF, oneM2M, OMA - LWM2M, OPC UA) and devices that do not follow any - particular standard, but provide an eligible interface - over a suitable network protocol. WoT is tackling this - variety through Protocol Bindings, which must meet a - number of constraints (see ). -
-The non-normative WoT Binding Templates specification - [[?WOT-BINDING-TEMPLATES]] provides a collection of - communication metadata blueprints that give guidance on - how to interact with different IoT platforms. - When describing a particular IoT device or service, - the Binding Template for the corresponding IoT Platform - can be used to look up the communication metadata that - must be provided in the Thing Description to - support that platform. -
-shows how Binding - Templates are applied. A WoT Binding Template - is created only once for each IoT Platform and - can then be reused in all TDs for devices of that - platform. The Consumer that is processing a TD must implement - the required Protocol Binding by including a - corresponding protocol stack and by configuring the - stack (or its messages) according to the information - given in the TD. -
-- The communication metadata of - Protocol Bindings spans five dimensions: -
-- IoT Platforms often - introduce proprietary modifications at the - application layer such as platform-specific HTTP - header fields or CoAP options. Forms (see ) may contain the - necessary information to apply these tweaks in - additional form fields defined for the - application-layer protocol used. -
-
- IoT Platforms often differ in the representation formats
- (a.k.a. serializations) used for exchanging data.
- The media type [[!RFC2046]] identifies these formats,
- while media type parameters may specify them further.
- Forms may contain the media type and optional parameters in
- additional form fields such as a content type field known from HTTP,
- which combines media type and its potential parameters
- (e.g., text/plain; charset=utf-8
).
-
- The Web of Things uses the term transfer protocol for the underlying, standardized
- application-layer protocol without application-specific options or subprotocol mechanisms.
- The URI scheme of the form submission target contains the information required to
- identify the transfer protocol,
- e.g., HTTP, CoAPS, or WebSocket through http:
, coaps:
, or ws:
, resp.
-
- Transfer protocols may have extension mechanisms that must be known to interact successfully. - Such subprotocols cannot be identified from the URI scheme alone and must be declared explicitly. - Examples are the push notification workarounds for HTTP such as long polling [[?RFC6202]] or Server-Sent Events [[?HTML]]. - Forms may contain the necessary information to identify the subprotocol in additional form fields. -
-- Security mechanisms can be applied at different layers of the communication stack - and might be used together, often to complement each other. - Examples are (D)TLS [[?RFC8446]]/[[?RFC6347]], - IPSec [[?RFC4301]], - OAuth [[?RFC6749]], and - ACE [[?RFC7744]]. - Due to the cross-cutting nature of security, the necessary information to apply the right mechanism - may be given within the general metadata of the Thing - and/or specialized for each Interaction Affordance or form. -
-The WoT Scripting API is an optional "convenience" - building block of W3C WoT that eases IoT application - development by providing an ECMAScript-based API [[ECMAScript]] similar - to the Web browser APIs. - By integrating a scripting runtime system into the WoT Runtime, - the WoT Scripting API enables using portable application scripts - that define the behavior of Things, Consumers, - and Intermediaries. -
-Traditionally, IoT device logic is implemented in - firmware, which results in productivity constraints - similar to that of embedded development, including a - relatively complex update process. The WoT - Scripting API in contrast enables - implementing device logic by reusable scripts executed - in a runtime system for IoT applications not dissimilar - to that of a Web browser, and aims to improve - productivity and reduce integration costs. Furthermore, - standardized APIs enable portability for application - modules, for instance, to move compute-intense logic - from a device up to a local gateway, or to move - time-critical logic from the cloud down to a gateway or - edge node. -
-The non-normative WoT Scripting API specification [[?WOT-SCRIPTING-API]] defines - the structure and algorithms of the programming - interface that allows scripts to discover, fetch, consume, - produce, and expose WoT Thing Descriptions. The - runtime system of the WoT Scripting API instantiates local - objects that act as an interface to other Things and - their Interaction Affordances (Properties, - Actions, and Events). It also allows scripts to expose - Things, that is, to define and implement Interaction - Affordances and publish a Thing Description. -
-Security is a cross-cutting concern and should be - considered in all aspects of system design. In the WoT - architecture, security is supported by certain explicit - features, such as support for Public Security Metadata in TDs - and by separation of concerns in the design of the - WoT Scripting API. The specification for each building - block also includes a discussion of particular security - and privacy considerations of that building block. - Another non-normative specification, the - WoT Security and Privacy Guidelines [[?WOT-SECURITY]], - provides additional cross-cutting security and privacy guidance. -
-The WoT Scripting API is an optional "convenience" + building block of W3C WoT that eases IoT application + development by providing an ECMAScript-based API [[ECMAScript]] similar + to the Web browser APIs. + By integrating a scripting runtime system into the WoT Runtime, + the WoT Scripting API enables using portable application scripts + that define the behavior of Things, Consumers, + and Intermediaries. +
+Traditionally, IoT device logic is implemented in + firmware, which results in productivity constraints + similar to that of embedded development, including a + relatively complex update process. The WoT + Scripting API in contrast enables + implementing device logic by reusable scripts executed + in a runtime system for IoT applications not dissimilar + to that of a Web browser, and aims to improve + productivity and reduce integration costs. Furthermore, + standardized APIs enable portability for application + modules, for instance, to move compute-intense logic + from a device up to a local gateway, or to move + time-critical logic from the cloud down to a gateway or + edge node. +
+The non-normative WoT Scripting API specification [[?WOT-SCRIPTING-API]] defines + the structure and algorithms of the programming + interface that allows scripts to discover, fetch, consume, + produce, and expose WoT Thing Descriptions. The + runtime system of the WoT Scripting API instantiates local + objects that act as an interface to other Things and + their Interaction Affordances (Properties, + Actions, and Events). It also allows scripts to expose + Things, that is, to define and implement Interaction + Affordances and publish a Thing Description. +
Security is a cross-cutting concern and should be + considered in all aspects of system design. In the WoT + architecture, security is supported by certain explicit + features, such as support for Public Security Metadata in TDs + and by separation of concerns in the design of the + WoT Scripting API. The specification for each building + block also includes a discussion of particular security + and privacy considerations of that building block. + Another non-normative specification, the + WoT Security and Privacy Guidelines [[?WOT-SECURITY]], + provides additional cross-cutting security and privacy guidance. +
++ As defined in , + a Servient is a software stack that implements the WoT building blocks + presented in the previous section. + Servients can host and expose Things and/or consume Things + (i.e., host Consumers). + Depending on the Protocol Binding, + Servients can perform in both server and client role, + hence the portmanteau naming. +
++ The previous section describes how the WoT building blocks conceptually relate to each other + and how they correspond to the abstract WoT Architecture (see ). + When implementing these concepts, + a more detailed view is necessary that takes certain technical aspects into account. + This section describes the detailed architecture of a Servient implementation. +
++ shows a Servient implementation that is using the (optional) + WoT Scripting API building block. + Here, the WoT Runtime is also a Scripting Runtime system that, + in addition to managing the WoT-specific aspects, also interprets and executes the application scripts. + Servients that support the WoT Scripting API usually run on powerful devices, edge nodes, or in the + cloud. + The WoT Architecture does not limit the application-facing API of the WoT Runtime to JavaScript/ECMAScript. + Also other runtime systems can be used to implement a Servient. +
++ Section presents an alternative Servient implementation without the WoT + Scripting API building block. + The WoT Runtime may use any programming language for its application-facing API. + Usually, it is the native language of the Servient software stack, + for instance C/C++ for embedded Servients or Java for cloud-based Servients. + It may also be an alternative scripting language such as Lua to combine the benefits of application scripts with + low resource consumption. +
++ The role and functionality of each module shown + in is explained in + the following sections. +
++ The behavior defines the overall application logic of a Thing, + which has several aspects: +
++ It includes autonomous behavior of Things (e.g., sampling of sensors or control loops for + actuators), + the handlers for Interaction Affordances (i.e., the concrete actions taken when an affordance is + activated), + Consumer behavior (e.g., controlling a Thing or realizing mashups), and + Intermediary behavior (e.g., simply proxying a Thing or composing virtual entities). + The behavior implementation within a Servient defines which Things, Consumers, + and Intermediaries are hosted on this component. +
++ depicts Servients that are implementing the optional WoT + Scripting API building block, + where portable application scripts written in JavaScript [[ECMAScript]] define the behavior. + They are executed by a scripting runtime system that is part of the WoT Runtime + (when providing the WoT Scripting API or any other script-based API). + They are portable, as they are written against the common WoT Scripting API definitions, + and hence can be executed by any Servient featuring this building block. + This makes it possible to shift application logic between system components, + for instance moving a Consumer from the cloud to an edge node to meet networking requirements, + or to move an Intermediary to the cloud to fulfill growing resource demands. + Portable applications enable to 'install' additional behavior after the deployment of a Servient. +
++ In principle, any programming language and API can be used in order to define the behavior of a Thing, + as long as the Interaction Affordances are presented externally through a WoT Interface. + The adaption between application-facing API and the protocol stack is handled by the WoT Runtime. + See for behavior implementation without the WoT Scripting API building block. +
++ Technically, the Thing abstraction and its Interaction Model is implemented in a runtime system. + This WoT Runtime maintains the execution environment for the behavior implementation and is able to + expose and/or consume Things, + and hence must be able to fetch, process, serialize, and serve WoT Thing Descriptions. +
++ Every WoT Runtime has an application-facing interface (i.e., an API) for the behavior implementation. + The optional WoT Scripting API building block shown in + defines such an application-facing interface that follows the Thing abstraction + and enables the deployment of behavior implementations during runtime through application scripts. + See for alternative APIs, which can also only be available during compile time. + In general, application logic should be executed in isolated execution environments + to prevent unauthorized access to the management aspects of the WoT Runtime, + in particular the Private Security Data. + In multi-tenant Servients, additional execution environment isolation is required for the different + tenants. +
++ A WoT Runtime needs to provide certain operations to manage the lifecycle of Things, + or more precisely their software abstractions and descriptions. + A lifecycle management (LCM) system may encapsulate those lifecycle operations within a Servient + and use internal interfaces to realize the lifecycle management. + The details of such operations vary among different implementations. + The WoT Scripting API includes LCM functionality, and hence represents one possible + implementation of such a system. +
++ The WoT Runtime must interface with the protocol stack implementation of the Servient, + as it decouples the behavior implementation from the details of the Protocol Bindings. + The WoT Runtime usually also interfaces with the underlying system, + for instance, to access local hardware such as attached sensors and actuators or to access system services such + as storage. + Both interfaces are implementation-specific, + yet the WoT Runtime must provide the necessary adaption to the implemented Thing abstraction. +
++ The WoT Scripting API building block defines an ECMAScript API that closely follows the WoT Thing + Description specification [[?WOT-THING-DESCRIPTION]]. + It defines the interface between behavior implementations and a scripting-based WoT Runtime. + Other, simpler APIs may be implemented on top of it, + similar to, for instance, jQuery for the Web browser APIs. +
++ See [[?WOT-SCRIPTING-API]] for more details. +
++ The WoT Runtime instantiates software representations of Things based on their TDs. + These software representations provide the interface towards the behavior implementation. +
++ The Exposed Thing abstraction represents a Thing hosted locally + and accessible from the outside through the protocol stack implementation of the Servient. + The behavior implementation can fully control Exposed Things by defining their metadata and + Interaction Affordances, + and providing their autonomous behavior. +
+
+ The Consumed Thing abstraction represents a remotely hosted Thing for Consumers that needs
+ to be accessed using a communication protocol.
+ Consumed Things are proxy objects or stubs.
+ The behavior implementation is restricted to reading their metadata and activating their Interaction
+ Affordances as described in the corresponding TD.
+ Consumed Things can also represent system features such as local hardware or devices behind proprietary
+ or legacy communication protocols.
+ In this case, the WoT Runtime must provide the necessary adaptation between system API and Consumed
+ Thing.
+ Furthermore, it must provide corresponding TDs and make them available to the behavior implementation,
+ for instance, by extending whatever discovery mechanism is provided by the WoT Runtime through the
+ application-facing API
+ (e.g., the discover()
method defined in the WoT Scripting API [[?WOT-SCRIPTING-API]]).
+
+ When using the WoT Scripting API, Exposed Thing and Consumed Thing + are JavaScript objects, + which can be created, operated on, and destroyed by application scripts. + However, access may be restricted through a security mechanism, + for instance, in multi-tenant Servients. +
++ Private security data, such as a secret key for interacting with the Thing, + is also conceptually + managed by the WoT Runtime, + but is intentionally not made + directly accessible to the application. In fact, in the + most secure hardware implementations, such Private + Security Data is stored in a separate, isolated memory + (e.g., on a secure processing element or TPM) + and only an abstract set of operations (possibly even + implemented by an isolated processor and software stack) + is provided that limit the attack surface and prevent + external disclosure of this data. Private Security Data + is used transparently by the Protocol Binding to + authorize and protect the integrity and confidentiality + of interactions. +
++ The protocol stack of a Servient implements the WoT Interface of the Exposed Things + and is used by Consumers to access the WoT Interface of remote + Things (via Consumed Things). + It produces the concrete protocol messages to interact over the network. + Servients may implement multiple protocols, and hence support multiple + Protocol Bindings to enable interaction with different IoT Platforms. +
+In many cases, where standard protocols are used, + generic protocol stacks can be used to produce the + platform-specific messages (e.g., one for HTTP(S) + dialects, one for CoAP(S) dialects, and one for MQTT + solutions, etc.). In this case, the communication + metadata from the Thing Description is used to + select and configure the right stack (e.g., HTTP with + the right header fields or CoAP with the right options). + Parsers and serializers for the expected payload representation + format (JSON, CBOR, XML, etc.) + as identified by the media type [[RFC2046]] can also be + shared across these generic protocol stacks. +
++ See [[?WOT-BINDING-TEMPLATES]] for details. +
++ An implementation of a WoT Runtime + may provide local hardware or system services to + behavior implementations through the Thing + abstraction, as if they were accessible over a communication + protocol. In this case, the WoT Runtime should + enable the behavior implementation to instantiate Consumed Things + that internally interface with the system instead of the protocol stack. + This can be done by listing such system Things, + which are only available in the local WoT Runtime, + in the results of the discovery mechanism provided by the + application-facing WoT Runtime API. +
++ A device may also be physically external to a Servient, + but connected via a proprietary protocol or a protocol + not eligible as WoT Interface (see ). + In this case, the WoT Runtime may + access legacy devices with such protocols (e.g., ECHONET + Lite, BACnet, X10, I2C, SPI, etc.) through proprietary APIs, + but may again choose to expose them to the behavior implementation via + a Thing abstraction. A Servient can then act + as gateway to the legacy devices. This should only be + done if the legacy device cannot be described directly + using a WoT Thing Description. +
++ The behavior implementation may also access local + hardware or system services (e.g., storage) through a + proprietary API or other means. This is, however, out of + scope of the W3C WoT standardization, as it hinders portability. +
++ The WoT Scripting API building block is optional. + Alternative Servient implementations are possible, + where the WoT Runtime offers an alternative API for the application logic, + which may be written in any programming language. +
++ Furthermore, devices or services unaware of W3C WoT can still be consumed, + when it is possible to provide a well-formed WoT Thing Description for them. + In this case, the TD describes a WoT Interface of a Thing that has a black-box + implementation. +
+- As defined in , - a Servient is a software stack that implements the WoT building blocks - presented in the previous section. - Servients can host and expose Things and/or consume Things - (i.e., host Consumers). - Depending on the Protocol Binding, - Servients can perform in both server and client role, - hence the portmanteau naming. + There are various reasons why a developer may choose + to implement a Servient without using the WoT + Scripting API. This may be due to insufficient + memory or computing resources, so the developer cannot use + the required software stack or a fully-featured scripting + engine. Alternatively, to support their use case (for + example, a proprietary communications protocol) + the developer may have to use + specific functions or libraries only available + through a particular programming environment or + language.
- The previous section describes how the WoT building blocks conceptually relate to each other - and how they correspond to the abstract WoT Architecture (see ). - When implementing these concepts, - a more detailed view is necessary that takes certain technical aspects into account. - This section describes the detailed architecture of a Servient implementation. + In this case, a WoT Runtime can still be + used, but with an equivalent abstraction and functionality + exposed using an alternative application-facing interface instead of + the WoT Scripting API. + Except for the latter, all block descriptions in + are also valid for .
+- shows a Servient implementation that is using the (optional) WoT Scripting API building block. - Here, the WoT Runtime is also a Scripting Runtime system that, - in addition to managing the WoT-specific aspects, also interprets and executes the application scripts. - Servients that support the WoT Scripting API usually run on powerful devices, edge nodes, or in the cloud. - The WoT Architecture does not limit the application-facing API of the WoT Runtime to JavaScript/ECMAScript. - Also other runtime systems can be used to implement a Servient. + It is also possible to integrate existing IoT devices + or services into the W3C Web of Things and to use them as Things + by creating a Thing Description for these devices or services. + Such a TD can either be created manually or via a tool or service. + For example, a TD could be generated by a service that provides + automatic translation of metadata provided by another, + ecosystem-dependent machine-readable format. + This can only be done, however, if the target device + is using protocols that can be described using a Protocol Binding. + The requirements for this are given in . + Much of the previous discussion also implies that a Thing + provides its own Thing Description. While this + is a useful pattern it is not mandatory. + In particular, it may not be possible to modify + existing devices to provide their + own Thing Description directly. In this case the + Thing Description will have to be provided + separately using a service such as a directory + or some other external and separate distribution mechanism.
-
- Section presents an alternative Servient implementation without the WoT Scripting API building block.
- The WoT Runtime may use any programming language for its application-facing API.
- Usually, it is the native language of the Servient software stack,
- for instance C/C++ for embedded Servients or Java for cloud-based Servients.
- It may also be an alternative scripting language such as Lua to combine the benefits of application scripts with low resource consumption.
+
This section provides various examples of how the Web of Things (WoT) + abstract architecture may be instantiated + when devices and services that implement the Thing and Consumer roles are + connected together in various concrete topologies and deployment scenarios. + These topologies and scenarios are not normative, but are permitted and supported + by the WoT abstract architecture. +
++ Before discussing specific topologies, we will + first review the roles that Things and Consumers can + play in a WoT network and the relationships they have with the + Exposed Thing and Consumed Thing software abstractions. + Exposed Thing and Consumed Thing are internally available + to the behavior implementations of Servients + in the roles of Things and Consumers, respectively. +
+ +A Servient in the role of a Thing creates an + Exposed Thing based on a Thing Description (TD). + TDs are published and made available to other Servients + that are in the roles of Consumers or Intermediaries. + TDs may be published in various different ways: the TD + might be registered with a management system such as + a Thing Directory service, or a Thing + may provide the requesters with a TD upon receiving a request for a TD. + It is even possible to statically associate a TD with Thing + in certain application scenarios. +
+A Servient in the role of a Consumer obtains the TD of a Thing + using a discovery mechanism and creates a Consumed Thing based on the obtained TD. + The concrete discovery mechanism depends on the individual deployment scenario: + It could be provided by a management system such as a Thing Directory, + a discovery protocol, through static assignment, etc. +
+However, it should be noted that TDs describing + devices associated with an identifiable person may potentially + be used to infer privacy-sensitive information. + Constraints on the distribution of such TDs must therefore be + incorporated into any concrete TD discovery mechanism. If possible, + steps to limit the information exposed in a TD may also have to + be taken, such as filtering out IDs or human-readable information + if this is not strictly necessary for a particular use case. + Privacy issues are discussed + at a high level in + and a more detailed discussion is given in the + [[?WOT-THING-DESCRIPTION]] + specification. +
+Internal system functions of a device, such as interacting with attached sensors and actuators, + can also optionally be represented as Consumed Thing abstractions. +
+The functions supported by the Consumed Thing are provided + to the Consumer's behavior implementation through a programming language + interface. In the WoT Scripting API, Consumed Things + are represented by objects. + The behavior implementation (that is, the application logic) running in + a Thing can engage through Interaction Affordances with + Consumers by using + the programming language interface provided by the Exposed Thing. +
+A Thing does not necessarily represent a physical device. + Things can also represent a collection of devices, or virtual services + running in a gateway or in the cloud. + Likewise, a Consumer may represent an application or service running on a gateway or cloud. + Consumers can also be implemented on edge devices. + In Intermediaries, a single Servient + performs both the roles of a Thing and a Consumer simultaneously which are + sharing a single WoT Runtime. +
+Various topologies and deployment scenarios of WoT systems are discussed in this section. + These are only example patterns and other interconnection topologies are also possible. + The topologies described here are derived from the Web of Things Use Cases + + as well as the technical requirements extracted from them + (). +
+In the simplest interconnection topology, illustrated by , + the Consumer and Thing are on the same network and can communicate + directly with each other without any intermediaries. + One use case where this topology arises is when the Consumer is an orchestration + service or some other IoT application running on a gateway and the Thing is a device interfacing to + a sensor or an actuator. However, the client/server relationship could easily be reversed; + the client could be a device in the Consumer role accessing + a service running as a Thing on a gateway or in the cloud.
-- The role and functionality of each module shown - in is explained in - the following sections. +
If the Thing is in the cloud and the Consumer is on a local network + (see for an example in a Smart Home use case) + the actual network topology may be more complex, + for example requiring NAT traversal and disallowing certain forms of discovery. + In such cases one of the more complex + topologies discussed later may be more appropriate.
-- The behavior defines the overall application logic of a Thing, - which has several aspects: -
-- It includes autonomous behavior of Things (e.g., sampling of sensors or control loops for actuators), - the handlers for Interaction Affordances (i.e., the concrete actions taken when an affordance is activated), - Consumer behavior (e.g., controlling a Thing or realizing mashups), and - Intermediary behavior (e.g., simply proxying a Thing or composing virtual entities). - The behavior implementation within a Servient defines which Things, Consumers, - and Intermediaries are hosted on this component. -
-- depicts Servients that are implementing the optional WoT Scripting API building block, - where portable application scripts written in JavaScript [[ECMAScript]] define the behavior. - They are executed by a scripting runtime system that is part of the WoT Runtime - (when providing the WoT Scripting API or any other script-based API). - They are portable, as they are written against the common WoT Scripting API definitions, - and hence can be executed by any Servient featuring this building block. - This makes it possible to shift application logic between system components, - for instance moving a Consumer from the cloud to an edge node to meet networking requirements, - or to move an Intermediary to the cloud to fulfill growing resource demands. - Portable applications enable to 'install' additional behavior after the deployment of a Servient. -
-- In principle, any programming language and API can be used in order to define the behavior of a Thing, - as long as the Interaction Affordances are presented externally through a WoT Interface. - The adaption between application-facing API and the protocol stack is handled by the WoT Runtime. - See for behavior implementation without the WoT Scripting API building block. -
-- Technically, the Thing abstraction and its Interaction Model is implemented in a runtime system. - This WoT Runtime maintains the execution environment for the behavior implementation and is able to expose and/or consume Things, - and hence must be able to fetch, process, serialize, and serve WoT Thing Descriptions. -
-- Every WoT Runtime has an application-facing interface (i.e., an API) for the behavior implementation. - The optional WoT Scripting API building block shown in - defines such an application-facing interface that follows the Thing abstraction - and enables the deployment of behavior implementations during runtime through application scripts. - See for alternative APIs, which can also only be available during compile time. - In general, application logic should be executed in isolated execution environments - to prevent unauthorized access to the management aspects of the WoT Runtime, - in particular the Private Security Data. - In multi-tenant Servients, additional execution environment isolation is required for the different tenants. -
-- A WoT Runtime needs to provide certain operations to manage the lifecycle of Things, - or more precisely their software abstractions and descriptions. - A lifecycle management (LCM) system may encapsulate those lifecycle operations within a Servient - and use internal interfaces to realize the lifecycle management. - The details of such operations vary among different implementations. - The WoT Scripting API includes LCM functionality, and hence represents one possible - implementation of such a system. -
-- The WoT Runtime must interface with the protocol stack implementation of the Servient, - as it decouples the behavior implementation from the details of the Protocol Bindings. - The WoT Runtime usually also interfaces with the underlying system, - for instance, to access local hardware such as attached sensors and actuators or to access system services such as storage. - Both interfaces are implementation-specific, - yet the WoT Runtime must provide the necessary adaption to the implemented Thing abstraction. -
-- The WoT Scripting API building block defines an ECMAScript API that closely follows the WoT Thing Description specification [[?WOT-THING-DESCRIPTION]]. - It defines the interface between behavior implementations and a scripting-based WoT Runtime. - Other, simpler APIs may be implemented on top of it, - similar to, for instance, jQuery for the Web browser APIs. -
-- See [[?WOT-SCRIPTING-API]] for more details. -
-- The WoT Runtime instantiates software representations of Things based on their TDs. - These software representations provide the interface towards the behavior implementation. -
-- The Exposed Thing abstraction represents a Thing hosted locally - and accessible from the outside through the protocol stack implementation of the Servient. - The behavior implementation can fully control Exposed Things by defining their metadata and Interaction Affordances, - and providing their autonomous behavior. -
-
- The Consumed Thing abstraction represents a remotely hosted Thing for Consumers that needs to be accessed using a communication protocol.
- Consumed Things are proxy objects or stubs.
- The behavior implementation is restricted to reading their metadata and activating their Interaction Affordances as described in the corresponding TD.
- Consumed Things can also represent system features such as local hardware or devices behind proprietary or legacy communication protocols.
- In this case, the WoT Runtime must provide the necessary adaptation between system API and Consumed Thing.
- Furthermore, it must provide corresponding TDs and make them available to the behavior implementation,
- for instance, by extending whatever discovery mechanism is provided by the WoT Runtime through the application-facing API
- (e.g., the discover()
method defined in the WoT Scripting API [[?WOT-SCRIPTING-API]]).
-
- When using the WoT Scripting API, Exposed Thing and Consumed Thing - are JavaScript objects, - which can be created, operated on, and destroyed by application scripts. - However, access may be restricted through a security mechanism, - for instance, in multi-tenant Servients. -
-- Private security data, such as a secret key for interacting with the Thing, - is also conceptually - managed by the WoT Runtime, - but is intentionally not made - directly accessible to the application. In fact, in the - most secure hardware implementations, such Private - Security Data is stored in a separate, isolated memory - (e.g., on a secure processing element or TPM) - and only an abstract set of operations (possibly even - implemented by an isolated processor and software stack) - is provided that limit the attack surface and prevent - external disclosure of this data. Private Security Data - is used transparently by the Protocol Binding to - authorize and protect the integrity and confidentiality - of interactions. -
-- The protocol stack of a Servient implements the WoT Interface of the Exposed Things - and is used by Consumers to access the WoT Interface of remote - Things (via Consumed Things). - It produces the concrete protocol messages to interact over the network. - Servients may implement multiple protocols, and hence support multiple - Protocol Bindings to enable interaction with different IoT Platforms. -
-In many cases, where standard protocols are used, - generic protocol stacks can be used to produce the - platform-specific messages (e.g., one for HTTP(S) - dialects, one for CoAP(S) dialects, and one for MQTT - solutions, etc.). In this case, the communication - metadata from the Thing Description is used to - select and configure the right stack (e.g., HTTP with - the right header fields or CoAP with the right options). - Parsers and serializers for the expected payload representation - format (JSON, CBOR, XML, etc.) - as identified by the media type [[RFC2046]] can also be - shared across these generic protocol stacks. -
-- See [[?WOT-BINDING-TEMPLATES]] for details. -
-- An implementation of a WoT Runtime - may provide local hardware or system services to - behavior implementations through the Thing - abstraction, as if they were accessible over a communication - protocol. In this case, the WoT Runtime should - enable the behavior implementation to instantiate Consumed Things - that internally interface with the system instead of the protocol stack. - This can be done by listing such system Things, - which are only available in the local WoT Runtime, - in the results of the discovery mechanism provided by the - application-facing WoT Runtime API. -
-- A device may also be physically external to a Servient, - but connected via a proprietary protocol or a protocol - not eligible as WoT Interface (see ). - In this case, the WoT Runtime may - access legacy devices with such protocols (e.g., ECHONET - Lite, BACnet, X10, I2C, SPI, etc.) through proprietary APIs, - but may again choose to expose them to the behavior implementation via - a Thing abstraction. A Servient can then act - as gateway to the legacy devices. This should only be - done if the legacy device cannot be described directly - using a WoT Thing Description. -
-- The behavior implementation may also access local - hardware or system services (e.g., storage) through a - proprietary API or other means. This is, however, out of - scope of the W3C WoT standardization, as it hinders portability. -
+An Intermediary plays both Thing and + Consumer roles on the network and supports + both the Exposed Thing and Consumed Thing + software abstractions within its WoT Runtime. + Intermediaries can be used for proxying between devices and + networks or for Digital Twins. +
+One simple application of an Intermediary is a proxy for a Thing. + When the Intermediary acts as a proxy, + it has interfaces with two separate + networks or protocols. This may involve + the implementation of additional security mechanisms + such as providing TLS endpoints. Generally proxies + do not modify the set of interactions, so the TD exposed + by the Intermediary will have the same interactions + as the consumed TD, however the connection metadata is modified. +
+To implement this proxy pattern, the Intermediary obtains a TD + of a Thing and creates a Consumed Thing. + It creates a proxy object of the Thing as a software + implementation that has the same Interaction Affordances. + It then creates a TD for the proxy object with a new identifier + and possibly with new communications metadata (Protocol Bindings) + and/or new Public Security Metadata. + Finally, an Exposed Thing is + created based on this TD, and the Intermediary notifies other + Consumers or Intermediaries of the TD via + an appropriate publication mechanism. +
+- The WoT Scripting API building block is optional. - Alternative Servient implementations are possible, - where the WoT Runtime offers an alternative API for the application logic, - which may be written in any programming language. -
-- Furthermore, devices or services unaware of W3C WoT can still be consumed, - when it is possible to provide a well-formed WoT Thing Description for them. - In this case, the TD describes a WoT Interface of a Thing that has a black-box implementation. -
-- There are various reasons why a developer may choose - to implement a Servient without using the WoT - Scripting API. This may be due to insufficient - memory or computing resources, so the developer cannot use - the required software stack or a fully-featured scripting - engine. Alternatively, to support their use case (for - example, a proprietary communications protocol) - the developer may have to use - specific functions or libraries only available - through a particular programming environment or - language. -
-- In this case, a WoT Runtime can still be - used, but with an equivalent abstraction and functionality - exposed using an alternative application-facing interface instead of - the WoT Scripting API. - Except for the latter, all block descriptions in - are also valid for . -
-- It is also possible to integrate existing IoT devices - or services into the W3C Web of Things and to use them as Things - by creating a Thing Description for these devices or services. - Such a TD can either be created manually or via a tool or service. - For example, a TD could be generated by a service that provides - automatic translation of metadata provided by another, - ecosystem-dependent machine-readable format. - This can only be done, however, if the target device - is using protocols that can be described using a Protocol Binding. - The requirements for this are given in . - Much of the previous discussion also implies that a Thing - provides its own Thing Description. While this - is a useful pattern it is not mandatory. - In particular, it may not be possible to modify - existing devices to provide their - own Thing Description directly. In this case the - Thing Description will have to be provided - separately using a service such as a directory - or some other external and separate distribution mechanism. -
-More complex Intermediaries may be known as Digital Twins. + A Digital Twin may or may not modify the protocols or + translate between networks, but they provide additional + services, such as state caching, deferred updates, + or even predictive simulation of the behavior of the target device. + For example, if an IoT device has limited power, it + may choose to wake up relatively infrequently, synchronize + with a digital twin, and then immediately go to sleep again. + In this case, typically the Digital Twins runs on a less power-constrained + device (such as in the cloud or on a gateway) + and is able to respond to interactions on the + constrained device's behalf. + Requests for the current state of properties + may also be satisfied by the Digital Twins using cached state. + Requests that arrive when the target IoT device is sleeping + may be queued and sent to it when it wakes up. + To implement this pattern, the Intermediary, + i.e., the digital twin needs to know when the device is awake. + The device implementation as a Thing may need to include a notification mechanism for that. + This could be implemented using a separate Consumer/Thing pair, + or by using Event interactions for this purpose. +
This section provides various examples of how the Web of Things (WoT) - abstract architecture may be instantiated - when devices and services that implement the Thing and Consumer roles are - connected together in various concrete topologies and deployment scenarios. - These topologies and scenarios are not normative, but are permitted and supported - by the WoT abstract architecture. +
In Smart Home use cases, devices (sensors and home appliances) + connected to a home network are often + monitored and, in some cases, also controlled by cloud + services. There is usually a NAT device between the home + network to which the devices are connected and the cloud. + The NAT device translates IP addresses as well as often providing + firewall services, which block connections selectively. + The local devices and cloud services can only communicate + with each other if the communication can successfully + traverse the gateway.
-- Before discussing specific topologies, we will - first review the roles that Things and Consumers can - play in a WoT network and the relationships they have with the - Exposed Thing and Consumed Thing software abstractions. - Exposed Thing and Consumed Thing are internally available - to the behavior implementations of Servients - in the roles of Things and Consumers, respectively. +
A typical structure, + adopted in ITU-T Recommendation Y.4409/Y.2070 [[?Y.4409-Y.2070]] , + is shown in . + In this structure there is both a local and a remote Intermediary. + The local Intermediary aggregates the Interaction Affordances from multiple + Thing into a (set of) Exposed Things, + which can all be mapped onto a common protocol + (for example, HTTP, with all interactions mapped to a single + URL namespace with a common base server and using a single port). + This provides the remote Intermediary with a simple way to + access all the Things behind the NAT device, + assuming the local Intermediary + has used a converged protocol that can traverse the NAT device + and has some way to expose this service to the Internet (STUN, TURN, DyDNS, etc.). + In addition, the local Intermediary can function as a Thing proxy, so + even when the connected Things each use a different + protocol (HTTP, MQTT, CoAP, etc.) and/or a different set of + ecosystem conventions, the + Exposed Thing can converge them into a single protocol so + that Consumers do not need to be aware of the various + protocols the Things use.
- -A Servient in the role of a Thing creates an - Exposed Thing based on a Thing Description (TD). - TDs are published and made available to other Servients - that are in the roles of Consumers or Intermediaries. - TDs may be published in various different ways: the TD - might be registered with a management system such as - a Thing Directory service, or a Thing - may provide the requesters with a TD upon receiving a request for a TD. - It is even possible to statically associate a TD with Thing - in certain application scenarios. -
-A Servient in the role of a Consumer obtains the TD of a Thing - using a discovery mechanism and creates a Consumed Thing based on the obtained TD. - The concrete discovery mechanism depends on the individual deployment scenario: - It could be provided by a management system such as a Thing Directory, - a discovery protocol, through static assignment, etc. -
-However, it should be noted that TDs describing - devices associated with an identifiable person may potentially - be used to infer privacy-sensitive information. - Constraints on the distribution of such TDs must therefore be - incorporated into any concrete TD discovery mechanism. If possible, - steps to limit the information exposed in a TD may also have to - be taken, such as filtering out IDs or human-readable information - if this is not strictly necessary for a particular use case. - Privacy issues are discussed - at a high level in - and a more detailed discussion is given in the - [[?WOT-THING-DESCRIPTION]] - specification. -
-Internal system functions of a device, such as interacting with attached sensors and actuators, - can also optionally be represented as Consumed Thing abstractions. -
-The functions supported by the Consumed Thing are provided - to the Consumer's behavior implementation through a programming language - interface. In the WoT Scripting API, Consumed Things - are represented by objects. - The behavior implementation (that is, the application logic) running in - a Thing can engage through Interaction Affordances with - Consumers by using - the programming language interface provided by the Exposed Thing. -
-A Thing does not necessarily represent a physical device. - Things can also represent a collection of devices, or virtual services - running in a gateway or in the cloud. - Likewise, a Consumer may represent an application or service running on a gateway or cloud. - Consumers can also be implemented on edge devices. - In Intermediaries, a single Servient - performs both the roles of a Thing and a Consumer simultaneously which are - sharing a single WoT Runtime. -
-Various topologies and deployment scenarios of WoT systems are discussed in this section. - These are only example patterns and other interconnection topologies are also possible. - The topologies described here are derived from the Web of Things use cases - () - as well as the technical requirements extracted from them - (). -
-In the simplest interconnection topology, illustrated by , - the Consumer and Thing are on the same network and can communicate - directly with each other without any intermediaries. - One use case where this topology arises is when the Consumer is an orchestration - service or some other IoT application running on a gateway and the Thing is a device interfacing to - a sensor or an actuator. However, the client/server relationship could easily be reversed; - the client could be a device in the Consumer role accessing - a service running as a Thing on a gateway or in the cloud. -
-If the Thing is in the cloud and the Consumer is on a local network - (see for an example in a Smart Home use case) - the actual network topology may be more complex, - for example requiring NAT traversal and disallowing certain forms of discovery. - In such cases one of the more complex - topologies discussed later may be more appropriate. -
-An Intermediary plays both Thing and - Consumer roles on the network and supports - both the Exposed Thing and Consumed Thing - software abstractions within its WoT Runtime. - Intermediaries can be used for proxying between devices and - networks or for Digital Twins. -
-One simple application of an Intermediary is a proxy for a Thing. - When the Intermediary acts as a proxy, - it has interfaces with two separate - networks or protocols. This may involve - the implementation of additional security mechanisms - such as providing TLS endpoints. Generally proxies - do not modify the set of interactions, so the TD exposed - by the Intermediary will have the same interactions - as the consumed TD, however the connection metadata is modified. -
-To implement this proxy pattern, the Intermediary obtains a TD - of a Thing and creates a Consumed Thing. - It creates a proxy object of the Thing as a software - implementation that has the same Interaction Affordances. - It then creates a TD for the proxy object with a new identifier - and possibly with new communications metadata (Protocol Bindings) - and/or new Public Security Metadata. - Finally, an Exposed Thing is - created based on this TD, and the Intermediary notifies other - Consumers or Intermediaries of the TD via - an appropriate publication mechanism. -
-More complex Intermediaries may be known as Digital Twins. - A Digital Twin may or may not modify the protocols or - translate between networks, but they provide additional - services, such as state caching, deferred updates, - or even predictive simulation of the behavior of the target device. - For example, if an IoT device has limited power, it - may choose to wake up relatively infrequently, synchronize - with a digital twin, and then immediately go to sleep again. - In this case, typically the Digital Twins runs on a less power-constrained - device (such as in the cloud or on a gateway) - and is able to respond to interactions on the - constrained device's behalf. - Requests for the current state of properties - may also be satisfied by the Digital Twins using cached state. - Requests that arrive when the target IoT device is sleeping - may be queued and sent to it when it wakes up. - To implement this pattern, the Intermediary, - i.e., the digital twin needs to know when the device is awake. - The device implementation as a Thing may need to include a notification mechanism for that. - This could be implemented using a separate Consumer/Thing pair, - or by using Event interactions for this purpose. -
-In Smart Home use cases, devices (sensors and home appliances) - connected to a home network are often - monitored and, in some cases, also controlled by cloud - services. There is usually a NAT device between the home - network to which the devices are connected and the cloud. - The NAT device translates IP addresses as well as often providing - firewall services, which block connections selectively. - The local devices and cloud services can only communicate - with each other if the communication can successfully - traverse the gateway. -
-A typical structure, - adopted in ITU-T Recommendation Y.4409/Y.2070 [[?Y.4409-Y.2070]] , - is shown in . - In this structure there is both a local and a remote Intermediary. - The local Intermediary aggregates the Interaction Affordances from multiple - Thing into a (set of) Exposed Things, - which can all be mapped onto a common protocol - (for example, HTTP, with all interactions mapped to a single - URL namespace with a common base server and using a single port). - This provides the remote Intermediary with a simple way to - access all the Things behind the NAT device, - assuming the local Intermediary - has used a converged protocol that can traverse the NAT device - and has some way to expose this service to the Internet (STUN, TURN, DyDNS, etc.). - In addition, the local Intermediary can function as a Thing proxy, so - even when the connected Things each use a different - protocol (HTTP, MQTT, CoAP, etc.) and/or a different set of - ecosystem conventions, the - Exposed Thing can converge them into a single protocol so - that Consumers do not need to be aware of the various - protocols the Things use. -
-In , there are two - clients connected to the remote Intermediary, which - has aggregated the services that reside behind the NAT border and may - provide additional protocol translation or security services. - In particular, the local Intermediary may be on a network - with limited capacity and making that service directly available to all - users may not be feasible. In this case access to the local - Intermediary is only provided to the remote Intermediary. - The remote Intermediary then implements a more general access - control mechanism and may also perform caching or throttling to - protect the consumer from excess traffic. - Those consumers also will use a - single protocol suitable for the open Internet (e.g., HTTPS) to communicate with the - Intermediary, which makes the development of clients much - simpler. -
-In this topology there is NAT and firewall functionality between the consumers and things, - but the local and remote Intermediaries work together to tunnel all communications - through the firewall, so the consumers and things need to know - nothing about the firewall. - The paired Intermediaries also protect the home devices by providing - access control and traffic management. -
-In more difficult cases the NAT and firewall traversal may not work exactly as - shown. In particular, an ISP may not support publicly accessible addresses, - or STUN/TURN and/or DyDNS may not be supported or available. - In this case the Intermediaries - may alternative reverse the client/server roles between them to set up an initial - connection (with the local Intermediary first connecting to the remote Intermediary - in the cloud), then the pair of Intermediaries - may establish a tunnel (using for example, a Secure WebSocket, which uses TLS - to protect the connection). - The tunnel can then be used to encode all communications between the - Intermediaries using a custom protocol. - In this case the initial connection can still be made over HTTPS using standard - ports, and from the local Intermediary to the remote Intermediary identically - to a normal browser/web server interaction. - This should be able to traverse most home firewalls, and since the connection - is outgoing, network address translation will not cause any problems. - However, even though a custom tunneling protocol is needed, the - remote Intermediary can still translate this custom protocol back into - standard external protocols. The connected Consumers and Things - do not need to know about it. - It is also possible to extend this example to use cases where both Things - and Consumers can connect on either side of the NAT boundary. - This however also requires a bidirectional tunnel to be established between - the two Intermediaries. -
-Once local devices (and possibly services) - can be monitored or controlled by services - on cloud, a variety of additional services can be built on top. - For example, a cloud application could change a device's - operating condition based on an analysis of collected data. -
-However when the remote Intermediary is a part of a cloud platform - servicing client applications, the clients need to be able to find - device information by, for example, accessing a - directory of connected devices. For simplicity in the figure below - we have assumed all local devices are implemented as Things and - all cloud applications as Consumers. - To make the metadata of local devices implemented as Things - available to the cloud applications, - their metadata - can be registered with a Thing Directory service. - This metadata is specifically the TDs of the local devices modified to - reflect the Public Security Metadata and communication metadata - (Protocol Bindings) - provided by the remote Intermediary. - A client application then can obtain the metadata - it needs to communicate with local devices to - achieve its functionality by querying the Thing Directory. -
-In more complex situations, not shown in the figure, there - may also be cloud services that act as Things. - These can also register themselves with a Thing Directory. - Since a Thing Directory is a Web service, it should be visible - to the local devices through the NAT or firewall device - and its interface can even be provided with its own TD. - Local devices acting as Consumers can then - discover the Things in the cloud via a Thing Directory - and connect to the Things directly or via the local - Intermediary if, for instance, protocol translation is needed. -
+Once local devices (and possibly services) + can be monitored or controlled by services + on cloud, a variety of additional services can be built on top. + For example, a cloud application could change a device's + operating condition based on an analysis of collected data. +
+However when the remote Intermediary is a part of a cloud platform + servicing client applications, the clients need to be able to find + device information by, for example, accessing a + directory of connected devices. For simplicity in the figure below + we have assumed all local devices are implemented as Things and + all cloud applications as Consumers. + To make the metadata of local devices implemented as Things + available to the cloud applications, + their metadata + can be registered with a Thing Directory service. + This metadata is specifically the TDs of the local devices modified to + reflect the Public Security Metadata and communication metadata + (Protocol Bindings) + provided by the remote Intermediary. + A client application then can obtain the metadata + it needs to communicate with local devices to + achieve its functionality by querying the Thing Directory. +
+In more complex situations, not shown in the figure, there + may also be cloud services that act as Things. + These can also register themselves with a Thing Directory. + Since a Thing Directory is a Web service, it should be visible + to the local devices through the NAT or firewall device + and its interface can even be provided with its own TD. + Local devices acting as Consumers can then + discover the Things in the cloud via a Thing Directory + and connect to the Things directly or via the local + Intermediary if, for instance, protocol translation is needed. +
+Multiple cloud eco-systems each based on different + IoT platforms can work together to make a larger, + system-of-systems eco-system. Building on the previously + discussed structure of a cloud application eco-system, + the figure below shows two eco-systems connected to each + other to make a system-of-systems. Consider the case in + which a client in one eco-system (i.e., Consumer A + below) needs to use a server in another eco-system + (i.e., Thing B below). + There is more than one mechanism to + achieve this cross eco-systems application-device + integration. + Below, two mechanisms are + explained, each using a figure, to show how this can be achieved.
+In , + two Thing Directories + synchronize information, which makes it possible + for Consumer A to obtain the information of + Thing B through Thing Directory A. As described in + previous sections, remote Intermediary B maintains a shadow + implementation of Thing B. + By obtaining the TD of this shadow + device, Consumer A is able to use Thing B through the + remote Intermediary B. +
+Multiple cloud eco-systems each based on different - IoT platforms can work together to make a larger, - system-of-systems eco-system. Building on the previously - discussed structure of a cloud application eco-system, - the figure below shows two eco-systems connected to each - other to make a system-of-systems. Consider the case in - which a client in one eco-system (i.e., Consumer A - below) needs to use a server in another eco-system - (i.e., Thing B below). - There is more than one mechanism to - achieve this cross eco-systems application-device - integration. - Below, two mechanisms are - explained, each using a figure, to show how this can be achieved.
-In , - two Thing Directories - synchronize information, which makes it possible - for Consumer A to obtain the information of - Thing B through Thing Directory A. As described in - previous sections, remote Intermediary B maintains a shadow - implementation of Thing B. - By obtaining the TD of this shadow - device, Consumer A is able to use Thing B through the - remote Intermediary B. -
-In , two remote Intermediaries - synchronize device information. When a shadow of Thing - B is created in remote Intermediary B, the shadow’s TD is - simultaneously synchronized into remote Intermediary A. - Remote Intermediary A in turn creates its own shadow of - Thing B, and registers the TD with Thing Directory - A. With this mechanism, synchronization between - Thing Directories is not necessary. -
-In , two remote Intermediaries + synchronize device information. When a shadow of Thing + B is created in remote Intermediary B, the shadow’s TD is + simultaneously synchronized into remote Intermediary A. + Remote Intermediary A in turn creates its own shadow of + Thing B, and registers the TD with Thing Directory + A. With this mechanism, synchronization between + Thing Directories is not necessary. +
++ Security and privacy are a cross-cutting issues that need to be considered + in all WoT + building blocks and WoT implementations. This chapter + summarizes some general issues and guidelines to help + preserve the security and privacy of concrete WoT implementations. + However, these are only general guidelines and an abstract architecture + such as described in this document cannot, itself, guarantee security and + privacy. + Instead the details of a concrete implementation need to be considered. + For a more detailed and complete analysis of security and + privacy issues, see the WoT Security and Privacy Guidelines + specification [[?WOT-SECURITY]]. +
+Overall, the goal of the WoT is to describe the existing + access mechanisms and properties of IoT devices and + services, including security. In general, W3C WoT is + designed to describe what exists rather than to prescribe + what to implement. A description of an existing system + should accurately describe that system, even if it has + less than ideal security behavior. A clear understanding of + the security vulnerabilities of a system supports + security mitigations—although of course such data need + not be distributed to those who might maliciously exploit it. +
++ However, especially for new systems, + the WoT architecture should enable the use + of best practices in security and privacy. + In general, the WoT security + architecture must support the goals and mechanisms of the + IoT protocols and systems it connects to. These systems vary + in their security requirements and risk tolerance, so + security mechanisms will also vary based on these factors. +
+Security and privacy are especially important in the IoT + domain since IoT devices need to operate autonomously and, in + many cases, have access to both personal data and/or can be + in control of safety-critical systems. + IoT devices are subject to different and in some + cases higher risks than IT systems. It is also important to + protect IoT systems so that they cannot be used to launch + attacks on other computer systems. +
+In general, security and privacy cannot be guaranteed. It + is not possible for the WoT to turn an insecure system into + a secure one. However, the WoT architecture needs to do + no harm: it should support security and privacy at least as + well as the systems it describes and supports. +
++ The metadata contained in a WoT Thing Description + (TD) is potentially sensitive. As a best practice, TDs + should be used together with integrity protection + mechanisms and access control policies, and should be + provided only to authorized users. +
+Please refer to the Security and Privacy + Consideration section of the WoT Thing Description + specification for additional details and discussion of + these points.
+- Security and privacy are a cross-cutting issues that need to be considered - in all WoT - building blocks and WoT implementations. This chapter - summarizes some general issues and guidelines to help - preserve the security and privacy of concrete WoT implementations. - However, these are only general guidelines and an abstract architecture - such as described in this document cannot, itself, guarantee security and - privacy. - Instead the details of a concrete implementation need to be considered. - For a more detailed and complete analysis of security and - privacy issues, see the WoT Security and Privacy Guidelines - specification [[?WOT-SECURITY]]. + TDs are designed to carry only Public Security Metadata. + Producers of TDs must ensure that no Private + Security Data is included in TDs. + There should be a strict separation of + Public Security Metadata and Private Security Data. + A TD should contain only + Public Security Metadata, letting Consumers know what + they need to do to access as system if and only if + they have authorization. Authorization in turn + should be based on separately managed private + information.
-Overall, the goal of the WoT is to describe the existing - access mechanisms and properties of IoT devices and - services, including security. In general, W3C WoT is - designed to describe what exists rather than to prescribe - what to implement. A description of an existing system - should accurately describe that system, even if it has - less than ideal security behavior. A clear understanding of - the security vulnerabilities of a system supports - security mitigations—although of course such data need - not be distributed to those who might maliciously exploit it. +
The built-in TD security schemes defined in the + TD specification intentionally do not support the encoding of + Private Security Data. However, there is a risk that + other fields such as + human-readable descriptions might be misused + to encode this information, or new + security schemes might be defined and deployed via + the extension mechanism that encode such + information. +
+Thing descriptions can potentially contain + Personally Identifiable Information of various + types. Even if it is not explicit, + a TD and its association with an identifiable person + can be used to infer information about + that person. For example, the association of + fingerprintable TDs exposed by mobile devices + whose location can be determined can be a tracking + risk. Even if a particular device instance cannot + be identified, the type of device represented + by a TD, when associated with a person, may constitute + personal information. For example, a medical device + may be used to infer that the user has a medical condition.
+Generally, Personally Identifiable Information in + a TD should be limited as much as possible. In some + cases, however, it cannot be avoided. The potential + presence of both direct and inferencable + PII in a TD means that TD should be + treated like other forms of PII. They should be + stored and transmitted in a secure fashion, should + only be provided to authorized users, should + only be cached for limited times, should be deleted + upon request, should only be used for the purpose + for which they were provided with user consent, and + they should otherwise satisfy all requirements + (including any legal requirements) for + the use of PII.
+- However, especially for new systems, - the WoT architecture should enable the use - of best practices in security and privacy. - In general, the WoT security - architecture must support the goals and mechanisms of the - IoT protocols and systems it connects to. These systems vary - in their security requirements and risk tolerance, so - security mechanisms will also vary based on these factors. + The WoT Binding Templates must correctly + support the security mechanisms employed by the + underlying IoT Platform for that platform to + be considered eligible for use with WoT. Due to the + automation of network interactions necessary to + deploy IoT at scale, operators need to ensure that Things + are exposed and consumed in a way that is compliant + with their security policies.
-Security and privacy are especially important in the IoT - domain since IoT devices need to operate autonomously and, in - many cases, have access to both personal data and/or can be - in control of safety-critical systems. - IoT devices are subject to different and in some - cases higher risks than IT systems. It is also important to - protect IoT systems so that they cannot be used to launch - attacks on other computer systems. +
+ The WoT Runtime implementation and the WoT + Scripting API should have mechanisms to prevent + malicious access to the system and isolate scripts in + multi-tenant Servients . More specifically the WoT + Runtime implementation when used with the WoT + Scripting API should consider the following + security and privacy risks and implement the recommended + mitigations. +
++ In basic WoT setups, all scripts running inside the + WoT Runtime are considered trusted, + distributed by the manufacturer, and therefore there + is no strong need to perform strict isolation + between each running script instance. However, + depending on device capabilities, deployment use + case scenarios, and risk level it might be desirable + to do so. For example, if one script handles + sensitive privacy-related PII data and is + well-audited, it might be desirable to separate it + from the rest of the script instances to minimize + the risk of data exposure in case some other script + inside the same system gets compromised during runtime. Another + example is mutual co-existence of different tenants + on a single WoT device. In this case each WoT + runtime instance will be hosting a different tenant, + and isolation between them is required.
-In general, security and privacy cannot be guaranteed. It - is not possible for the WoT to turn an insecure system into - a secure one. However, the WoT architecture needs to do - no harm: it should support security and privacy at least as - well as the systems it describes and supports. +
In case a script is compromised or malfunctions + the underlying physical device (and potentially + surrounded environment) can be damaged if a script + can use directly exposed native device interfaces. + If such interfaces lack safety checks on their + inputs, they might bring the underlying physical + device (or environment) to an unsafe state.
-- The metadata contained in a WoT Thing Description - (TD) is potentially sensitive. As a best practice, TDs - should be used together with integrity protection - mechanisms and access control policies, and should be - provided only to authorized users. -
-Please refer to the Security and Privacy - Consideration section of the WoT Thing Description - specification for additional details and discussion of - these points.
-- TDs are designed to carry only Public Security Metadata. - Producers of TDs must ensure that no Private - Security Data is included in TDs. - There should be a strict separation of - Public Security Metadata and Private Security Data. - A TD should contain only - Public Security Metadata, letting Consumers know what - they need to do to access as system if and only if - they have authorization. Authorization in turn - should be based on separately managed private - information. -
-The built-in TD security schemes defined in the - TD specification intentionally do not support the encoding of - Private Security Data. However, there is a risk that - other fields such as - human-readable descriptions might be misused - to encode this information, or new - security schemes might be defined and deployed via - the extension mechanism that encode such - information. -
-Thing descriptions can potentially contain - Personally Identifiable Information of various - types. Even if it is not explicit, - a TD and its association with an identifiable person - can be used to infer information about - that person. For example, the association of - fingerprintable TDs exposed by mobile devices - whose location can be determined can be a tracking - risk. Even if a particular device instance cannot - be identified, the type of device represented - by a TD, when associated with a person, may constitute - personal information. For example, a medical device - may be used to infer that the user has a medical condition. -
-Generally, Personally Identifiable Information in - a TD should be limited as much as possible. In some - cases, however, it cannot be avoided. The potential - presence of both direct and inferencable - PII in a TD means that TD should be - treated like other forms of PII. They should be - stored and transmitted in a secure fashion, should - only be provided to authorized users, should - only be cached for limited times, should be deleted - upon request, should only be used for the purpose - for which they were provided with user consent, and - they should otherwise satisfy all requirements - (including any legal requirements) for - the use of PII.
-- The WoT Binding Templates must correctly - support the security mechanisms employed by the - underlying IoT Platform for that platform to - be considered eligible for use with WoT. Due to the - automation of network interactions necessary to - deploy IoT at scale, operators need to ensure that Things - are exposed and consumed in a way that is compliant - with their security policies. -
-- The WoT Runtime implementation and the WoT - Scripting API should have mechanisms to prevent - malicious access to the system and isolate scripts in - multi-tenant Servients . More specifically the WoT - Runtime implementation when used with the WoT - Scripting API should consider the following - security and privacy risks and implement the recommended - mitigations. -
-- In basic WoT setups, all scripts running inside the - WoT Runtime are considered trusted, - distributed by the manufacturer, and therefore there - is no strong need to perform strict isolation - between each running script instance. However, - depending on device capabilities, deployment use - case scenarios, and risk level it might be desirable - to do so. For example, if one script handles - sensitive privacy-related PII data and is - well-audited, it might be desirable to separate it - from the rest of the script instances to minimize - the risk of data exposure in case some other script - inside the same system gets compromised during runtime. Another - example is mutual co-existence of different tenants - on a single WoT device. In this case each WoT - runtime instance will be hosting a different tenant, - and isolation between them is required. -
-In case a script is compromised or malfunctions - the underlying physical device (and potentially - surrounded environment) can be damaged if a script - can use directly exposed native device interfaces. - If such interfaces lack safety checks on their - inputs, they might bring the underlying physical - device (or environment) to an unsafe state. -
-- If the WoT Runtime implementation supports - post-manufacturing provisioning or updates of - itself, scripts, or any related data (including - security credentials), it can be a major attack - vector. An attacker can try to modify any above - described element during the update or provisioning - process or simply provision attacker's code and data - directly. -
-- Typically the WoT Runtime needs to store the - security credentials that are provisioned to a WoT - device to operate in a network. If an attacker can - compromise the confidentiality or integrity of these - credentials, then it can obtain access to - assets, impersonate other WoT Things, devices, or services, - or launch - Denial-Of-Service (DoS) attacks. -
-+ If the WoT Runtime implementation supports + post-manufacturing provisioning or updates of + itself, scripts, or any related data (including + security credentials), it can be a major attack + vector. An attacker can try to modify any above + described element during the update or provisioning + process or simply provision attacker's code and data + directly. +
++ Typically the WoT Runtime needs to store the + security credentials that are provisioned to a WoT + device to operate in a network. If an attacker can + compromise the confidentiality or integrity of these + credentials, then it can obtain access to + assets, impersonate other WoT Things, devices, or services, + or launch + Denial-Of-Service (DoS) attacks. +
+Special thanks to Matthias Kovatsch for co-editing and many significant contributions - to the initial version of the WoT architecture specification. - Special thanks to Michael McCool, Takuki Kamiya, Kazuyuki Ashimura, - Sebastian Käbisch, Zoltan Kis, Elena Reshetova, Klaus Hartke, Ari Keränen, Kazuaki Nimura, and - Philippe Le Hegaret for their contributions to this document. -
-- Many thanks to the W3C staff and all other active Participants of the W3C Web - of Things Interest Group (WoT IG) and Working Group (WoT WG) for their - support, technical input and suggestions that led to improvements to - this document. -
-The WoT WG also would like to appreciate the pioneering efforts - regarding the concept of "Web of Things" that started as an academic - initiative in the form of publications such as [[?WOT-PIONEERS-1]] [[?WOT-PIONEERS-2]] - [[?WOT-PIONEERS-3]] [[?WOT-PIONEERS-4]] and, starting - in 2010, a yearly - International Workshop on the Web of Things.
-Finally, special thanks to Joerg Heuer for leading the WoT IG for 2 years - from its inception and guiding the group to come up with the concept of - WoT building blocks including the Thing Description.
-Special thanks to Matthias Kovatsch for co-editing and many significant contributions + to the initial version of the WoT architecture specification. + Special thanks to Michael McCool, Takuki Kamiya, Kazuyuki Ashimura, + Sebastian Käbisch, Zoltan Kis, Elena Reshetova, Klaus Hartke, Ari Keränen, Kazuaki Nimura, and + Philippe Le Hegaret for their contributions to this document. +
++ Many thanks to the W3C staff and all other active Participants of the W3C Web + of Things Interest Group (WoT IG) and Working Group (WoT WG) for their + support, technical input and suggestions that led to improvements to + this document. +
+The WoT WG also would like to appreciate the pioneering efforts + regarding the concept of "Web of Things" that started as an academic + initiative in the form of publications such as [[?WOT-PIONEERS-1]] [[?WOT-PIONEERS-2]] + [[?WOT-PIONEERS-3]] [[?WOT-PIONEERS-4]] and, starting + in 2010, a yearly + International Workshop on the Web of Things.
+Finally, special thanks to Joerg Heuer for leading the WoT IG for 2 years + from its inception and guiding the group to come up with the concept of + WoT building blocks including the Thing Description.
+