## 2 Related Work
### Contribution of the Web of Things
#### 3.2.1 Overview of the Avatar Concept  
The purpose of an Avatar is to provide device vendors, software developers and end-users with a comprehensible abstraction that makes physical objects accessible on the Web and that extends their status and capabilities (processing, acting, sensing, etc.) into homogeneous and user-understandable functionalities. An Avatar can be viewed as a \"Web-based cyber-physical object\" that defines and embodies high-level behaviors for physical devices. An Avatar is composed of seven modules (see Figure 4). The interoperability module makes it possible to configure and to manage the physical object linked to the Avatar. It acts as an adaptation layer that hides objects' own protocols. The communication module provides Avatar-to-Avatar and Avatar-to-Web-browser communications. Different kinds of applicative protocols (e.g., HTTP and CoAP) and transport protocols (UDP, TCP, and the disruption-tolerant protocol provided by the opportunistic communication support presented previously in this section) are supported to communicate with the Avatars. Moreover, different wireless technologies are currently supported to achieve communications with physical objects, such as Bluetooth, Wi-Fi, Wi-Fi Direct and XBee. The functionality module manages the capabilities and the functionalities of an Avatar. Similar to functionalities, capabilities are pieces of code that make it possible to exploit the resources offered by the physical objects. However, unlike functionalities--which are device independent--capabilities depend on the physical objects. They can be viewed as implementations of elementary functionalities. Thanks to this approach, an agribot can for instance exposes a higher-level of abstraction for the navigation functionality that exploits lower-level functionalities, such as GPS positioning and steering capabilities. Both capabilities and functionalities are described semantically. Reasoning about semantic descriptions of the capabilities and of the functionalities help inferring complex functionalities involving sub-functionalities, thus allowing to define high-level representations that better match the users' needs than the low-level capabilities. Based on the inferences made by the semantic reasoner, the functionality manager can incrementally deploy new functionalities. These functionalities are filtered by the context manager according to the information it processes continuously, thus allowing to select the implementations of the functionalities that are the most suited to the running conditions of the physical object, as well as to perform dynamic adaptations. Various contextual properties can be taken into account, such as the location of the object, its processing and memory capacities and its power budget. Functionalities are exposed as REST services by the WoT module, and therefore can be invoked remotely by WoT applications (WoTApps) or by other Avatars for collaboration purposes. The WoT application container deploys and manages the life-cycle of WoTApps. WoTApps can fully run server-side (i.e., on the Avatar), be distributed and executed both on the Avatar and in a Web browser, or be exclusively run in a Web browser. Finally, Avatars implement a collaboration module relying on an agent-based approach. This module aims at endowing an autonomous behavior to the Avatar and physical object, so that they can discover the functionalities they can partially achieve and that require the help of other Avatars to be performed. After discovering the missing functionality in another avatar, they can enrol this Avatar to provide the functionality.