Chapter 13

WoX: Model-Driven Development of Web of Things Applications

Adriana Caione,; Alessandro Fiore,; Luca Mainetti,; Luigi Manco,; Roberto Vergallo,    Department of Innovation Engineering, University of Salento, Lecce, Italy
VidyaSoft s.r.l., Spin-off company of Salento University, Lecce, Italy

Abstract

Nodes of the Internet of Things (IoT) are heterogeneous: Bluetooth Low Energy (BLE), Radio Frequency Identification (RFID), Near Field Communication (NFC), Wireless Sensors Networks (WSN), Konnex (KNX), just to name the most popular. IoT clients are heterogeneous too: mobile apps, laptops, enterprise applications, business processes instances, not to mention that even IoT nodes can be clients for other nodes. In this many-to-many relationship scenario, developing a seamless IoT system is arduous even for a specialized developer. All the more so, enable non-technical people to autonomously define innovative IoT-based scenarios is far from being trivial. This calls for the definition of a common design model shared by all the IoT stakeholder: device manufacturers, developers, stakeholders, business entities, end users. The Web of Things (WoT) paradigm has brought the IoT a step closer to the people perception, because it allows treating a networked thing as a Web resource. Nevertheless, sharing a common application layer protocol on top of the physical “things” does not guarantee that IoT application will be fast-developed, robust and easily evolvable. REST APIs definition for the IoT objects is left to the individual developer. Technological needs may vary along the application lifecycle. Stakeholders are often interested in virtual or aggregated environment features, rather than the single networked thing. To overcome these open issues, we think that it is needed an additional abstraction level between the WoT and the application layer. This should be model-driven – in order this to be adequately agreed by all the IoT stakeholders – and topic-based – because of the event-driven nature of the IoT. In this work we propose Web of Topics (WoX), a Cloud platform for the Internet of (every)Thing (IoE). WoX APIs allows companies and organisations to realise robust and high-maintainable IoT-based services, while minimising deployment costs and the time-to-market. Its model-driven approach guarantees a great end-user experience and a seamless integration among the heterogeneous IoT entities. In this book chapter we present the WoX model and the concrete architecture supporting it. As a proof of concept, in this work we also show how we implemented an original IoT scenarios using the WoX concepts, APIs and architecture: the airport short-stay parking service.

Keywords

Internet of things; Internet of everything; Web of topics; Model-driven; Cloud platforms

Chapter Points
• Web of Topics (WoX) is a Cloud platform for the Internet of (every) Thing.
• WoX APIs allows companies and organisations to realise robust and high-maintainable IoT-based services, while minimising deployment costs and the time-to-market.
• Its model-driven approach guarantees a great end-user experience and a seamless integration among the heterogeneous IoT entities.

Acknowledgements

The work was partially supported by Vidyasoft S.r.l. Spin-off company of University of Salento.

13.1 Introduction

During the last few years we have witnessed the Internet of Things reaching the market level, so that it is definitely entering our homes, cars, offices, and cities. Gartner, Inc. forecasts that 6.4 billion connected things will be in use worldwide in 2016, up 30 percent from 2015, and will reach 20.8 billion by 2020. In 2016, 5.5 million new things will get connected every day [1]. Unfortunately, most IoT vendors attempt to lock the users onto their platforms, keeping their solutions siloed and not interoperable. This approach clashes with the smart city evolution fundament: for a connected community to succeed there needs to be a mix of large corporations, startups, community groups and government agencies working together. The smart citizen is becoming aware of the siloed IoT, especially when comparing the IoT experience with the Web experience. Free Web-based services like “If This Then That” (IFTTT) allows users to create chains of simple conditional statements involving heterogeneous Web services such as Gmail, Facebook, Instagram, Pinterest, and Dropbox. In the IoT instead, when crossing the borders of silos, users must open a new app, talk a new language, pay with a new wallet. IFTTT is a benchmark for the future IoT. The IoT looking at IFTTT is called Internet of Everything (IoE) and will be supported by XaaS (anything/everything as a Service) infrastructures. In the IoE, not only physical devices but also “virtual” data streams are available. The Web of Things (WoT) paradigm plays a key role in the IoE: everything is a Web resource. But it is not enough. Sharing a common application layer protocol on top of the physical “things” does not guarantee interoperability. Defining REST APIs for the IoT objects remains in charge of the system integrator, whose aim is to develop the best fitting APIs for the specific use case. Other related issues are: technological needs may vary as long as new sensing technologies gain popularity; IoT applications should be fast-developed, robust and easily evolvable; stakeholders are often interested in aggregated environment features, rather than the specific networked or virtual thing. To overcome these open issues, we think that it is needed an additional abstraction level between the WoT and the application layer. This should be model-driven – in order this to be adequately agreed by all the IoT stakeholders – and topic-based – because of the event-driven nature of the IoT. In this work we propose Web of Topics (WoX), a Cloud platform for the IoE. WoX APIs allows companies and organisations to develop robust and high-maintainable IoT-based services, while minimising deployment costs and the time-to-market. The WoX model-driven approach guarantees a great end-user experience and a seamless integration among the heterogeneous IoT entities. In WoX, the key entity between who needs and who offers IoT capabilities is the WoX Topic, which wraps the value of a Feature of interest (taken from a discrete taxonomy, e.g. presence, temperature, or even higher concepts such as crowd or power saving), in a URI-identified Location. A WoX entity declares its Role within a Topic by specifying its technological (source/executor/function) and collaborative (capability/need) dimensions. We built the WoX architecture on top of an EPCglobal implementation. We published the WoX APIs on the WSO2 Enterprise Service Bus (ESB) in order to exploit the key benefits of an enterprise architecture: security, scalability, interoperability, etc. WoX brings two main advantages:

• WoX defines a standard, effective and efficient way of connecting the real world to the applications: not only concrete things but also ‘virtual’ things can be easily wired to develop innovative scenarios. WoX concepts are close to the people: anyone can design and deploy custom scenarios;

• WoX accelerates the development of the applications, by taking care of the communication with the heterogeneous WoT things. It hides the protocol details, while letting designers/developers concentrate on their business.

This chapter is organized as follows. Section 13.2 reports on the existing standards, guidelines and initiatives currently esteemed in the IoT, as well as a scientific literature in the matter of IoE. Section 13.3 outlines the open issues and challenges. Section 13.4 describes the WoX model. Section 13.5 describes the design and implementation of the Cloud architecture supporting the WoX model. As a proof of concept, Section 13.6 shows how we implemented an original IoT scenario using the WoX concepts, APIs and architecture. Section 13.7 sketches the conclusions as well as the future work.

13.2 State of the Art

13.2.1 IoT and WoT Standards

In the IoT domain, anyone can propose an own architecture and an own communication protocol, due to a wide variety of requirements to which each architecture should be compliant. Then, each solution could propose a reference model and encourage clients to use it. Some consortium of universities and companies working in IoT have proposed the birth of few common reference models. A common reference model for the IoT domain and the identification of reference architectures can help to a faster, more focused development and an exponential increase of IoT-related solutions. WoX architectural model is developed looking at two IoT standards IoT-A and ITU-T, which we present in the next sections. Moreover we will also analyze two data representation formats: SensorML and Observation&Measurement.

The IoT-A Reference Model

The European Lighthouse Integrated Project has addressed for three years the Internet-of-Things Architecture (IoT-A) [2] and created an architectural reference model together with the definition of an initial set of key building blocks. It wants to promote a common ground between architectures so that they can interoperate even a more levels. IoT-A has achieved that thanks to two steps:

• Establishing a Reference Model;

• Providing a Reference Architecture.

The IoT-A ARM (Architecture Reference Model) (Fig. 13.1) consists of four parts:

• Vision: summarizes the rationale for providing an architectural reference model for the IoT;

• Business scenarios: define requirements provided by stakeholders that are the drivers of the architecture. They allow the architecture to be validated;

• The IoT Reference Model, which provides the highest abstraction level for the definition of the IoT-A Architectural Reference Model. It promotes a common understanding of the IoT domain. It includes the description of domain, communication and information model;

• The IoT Reference Architecture, which is the reference for building compliant IoT architectures. It provides views and perspectives on different architectural aspects that are of concern to stakeholders of the IoT.

Image
Figure 13.1 IoT-A ARM. Source: IoT-A project

An important aspect is the compliance of their technologies with standards and best practices, so that interoperability across organizations is ensured. If such compliance is given, the ecosystem allow every stakeholder to create new businesses entities that “interoperate” with already existing entities. Fig. 13.2 shows a high level information model derived by the IoT-A architecture. This model is so abstract that can represent any generic IoT solution. In particular, the device layer represents each device that interacts with the architecture and the communication layer represents mechanism to do it.

Image
Figure 13.2 IOT-A Information Model. Source: IOT-A project

ITU-T

The ITU Telecommunication Standardization Sector (ITU-T) [3] is one of the three sectors of the International Telecommunication Union (ITU). It coordinates standards for telecommunications. The main products of ITU-T are Recommendations (ITU-T Recs) standards defining how telecommunication networks operate and interwork. ITU-T Recs have non-mandatory status until they are adopted in national laws. ITU-T recommendations are guidelines to develop IoT application. They have a deeply impact both for implementation phase and for validation stage in IoT software architectures. Fig. 13.3 shows the IoT reference model. It is composed of four layers as well as management capabilities and security capabilities which are associated with the four layers: the application layer, the service support and application support layer, the network layer, and device layer.

Image
Figure 13.3 ITU-T Reference Model. Source: ITU-T project

In particular, the device layer capabilities can be logically categorized into two kinds of capabilities:

• Device capabilities, which include but are not limited to:

∘ Direct interaction with the communication network: Devices are able to gather and upload information directly (i.e., without using gateway capabilities) to the communication network and can directly receive information (e.g., commands) from the communication network.

∘ Indirect interaction with the communication network: Devices are able to gather and upload information to the communication network indirectly, i.e., through gateway capabilities. On the other side, devices can indirectly receive information (e.g., commands) from the communication network.

• Gateway capabilities, which include but are not limited to:

∘ Multiple interfaces support: At the device layer, the gateway capabilities support devices connected through different kinds of wired or wireless technologies, such as a controller area network (CAN) bus, ZigBee, Bluetooth or Wi-Fi. At the network layer, the gateway capabilities may communicate through various technologies, such as the public switched telephone network (PSTN), second generation or third generation (2G or 3G) networks, long-term evolution networks (LTE), Ethernet or digital subscriber lines (DSL).

∘ Protocol conversion: There are two situations where gateway capabilities are needed. One situation is when communications at the device layer use different device layer protocols, e.g., ZigBee technology protocols and Bluetooth technology protocols, the other one is when communications involving both the device layer and network layer use different protocols e.g., a ZigBee technology protocol at the device layer and a 3G technology protocol at the network layer.

SensorML

The SensorML standard is originated from the work of Sensor Web Enablement (SWE) activity. Its primary focus is to provide a framework for defining processes and components associated with the measurement processes for sensors. The standard specifies models and an XML implementation, and provides a common framework for describing any process. Processes are entities that take one or more inputs and through the application of well defined methods and configurable parameters, they produce one or more outputs. SensorML can be used to describe a wide variety of processes, not only sensors, but also actuators and generic data transformation processes. SensorML also supports explicit linking between processes and thus supports the concept of process chains, networks, or workflows, which are themselves defined as processes using a composite pattern. Interoperability within and between various sensor communities is greatly improved through the definition of shared community-specific semantics (within online dictionaries or ontologies) that can be utilized within the framework.

Observation & Measurement

O&M (OGC Observation and Measurement) is a standard model of SWE for encoding observations and measurements from sensors. This model provides guidelines for accessing and exchanging observations without the need of supporting specific data formats. O&M propose also an implementation of the aforementioned standard. It was firstly proposed the use of an XML encoding, but a JSON encoding has been recently adopted. It guarantees a lightweight format to exchange data with web services and optimized memory resource thanks to the compact encoding. The OGC defines an Observation as the act of observe a property of a feature at a certain instant of time. The output of this action is a result that reports a value describing some phenomenon. Therefore, the observation is modeled as an object with a set of properties:

• Feature of interest: the property to classify;

• Observed property: a description of the observed property;

• Result: a value (numerical or not) that describes the result of the observation;

• Procedure: the process that make possible to do the observation;

• Phenomenon time: the timestamp associated to the observation;

• Result time: the timestamp associated to the instant the phenomenon happened;

• Validity time: the timestamp during which the result is valid.

13.2.2 IoT and WoT Research Works

In the literature, the interest in design and development of WoT software architectures, using different approaches, is very deep. Several Web platforms are emerging with the aim to abstract the heterogeneity of the physical embedded devices in order to facilitate their integration and interoperability. Most of the existing architectures belong to two main categories:

• Architectures based on international standards. They enjoy several benefits arising from compliance with international standards, but they are very close to the physical layer. Therefore, using these architectures requires expert knowledge of physical technologies and significant familiarity with programming languages. Furthermore, they are generally focused on a specific use cases and are not horizontal enough to support the integration of heterogeneous technologies.

• Horizontal architectures, which are explicitly designed to integrate heterogeneous protocols and standards. Semantic architectures, for example, belong to this category. Generally, these architectures are not compliant with international standards, but have the considerable advantage of being closer to the developer's mental model, who is not required to know about the involved physical technologies nor specific programming languages.

Regarding the first category, in [8] authors propose an IoT framework, based on the EPCglobal [4] architecture, which is able to integrate the transducer capability of IEEE 1451 standards [9]. As the original EPCglobal definition only supports C-1 Gen-2 RFID tag identification, authors propose to extend the framework to support more readers, tags, and transducers in versatile IoT applications. EPCglobal Application Level Events (ALE) middleware is provided with transducer capability of IEEE 1451. Regarding the second category, the Semantic Web of Things (SWoT) is an emerging activity in Information and Communication Technology (ICT), joining together the Semantic Web and the Internet of Things. Its goal is to associate semantically rich and easily accessible information to real-world objects, locations and events, by means of a service infrastructure that makes easy the deployment and use of semantic applications involving Internet of Things devices, as described in [10].

A widely used tool for the development of semantic architectures is Smart-M3 [11]. It is a content-based, semantic subscribe-notify, and open-source middleware able to provide a Semantic Web information-sharing infrastructure among software entities and devices. The main goals of Smart-M3 is the sharing interoperable information in smart environment applications and making information in the physical world available for smart services. Authors in [12] describe their own vision a middleware for the Internet of Things, with the aims of creating a new generation middleware platform which will enable self-managed complex systems, in particular industrial ones, consisting of distributed, heterogeneous, shared and reusable components of different nature. Grounding on semantic and Multi-Agent System technologies and methodologies, they analyze and design such middleware and demonstrate how it is possible to enable various components to automatically discover each other and to configure a system with complex functionalities based on the atomic functions of the components. Another interesting horizontal approach is presented in [13], where authors propose a software architecture to easily mash-up CoAP resources. The architecture is able to discover the available devices and to virtualize them outside the physical network. These virtualizations are then exposed to the upper layers by a RESTful interface, so that the physical devices interact only with their own virtualization. The architecture is designed to establish a bidirectional communication channel, allowing not only to monitor but also to control the devices. The achieved platform, also, provides simplified tools allowing the development of mash-up applications to different-skilled users. Relating to Enterprise Service Bus for IoT, the study in [14] proposes an architecture for an effective integration of the Internet of Things in enterprise services: the architecture exposes real-world devices with embedded software to standard IT systems by making them accessible in a service-oriented way. The author in [15] shows a new IoT sensing service system based on EDSOA (Event Driven SOA) architecture to support real-time, event-driven, and active service execution. The study also provides a new IoT browser that uses augmented reality technology to display IoT resource, obtaining the superposition presentation of the physical world and abstract information. Despite these interesting approaches, in literature there is a lack of integrated platforms that can provide a cloud access to IoT resources along with a semantic management of them. There is the need of IoT architecture that can manage smart devices with the support of knowledge processing tools and, at the same time, that allow end-users to interact with them as Web resources, adopting a model-driven approach typical of the Web engineering sector. Moreover, WoX approach differs from existing solutions thanks to its independence from specific hardware constraints, since it grounds on a software architecture enabling the inter-connection of any kind of IoT real and virtual devices, as described later in the chapter. The WoX architecture tries to satisfy both the requirements.

13.3 Open Issues and Challenges

As we observed in the state of the art section, several service platforms propose standardized and integrated architectures for IoT, but their complexity and, above all, the lack of well-known tools makes them usable only by a small group of expert developers and, hence, their usage in applications is rather limited. Current IoT implementations, when standard-based, are well-performing and scalable, but lack in configuration simplicity. On the other hand, semantic-based implementations are highly flexible and close to human language, but the compatibility with the IoT technologies is poor and must be implemented on a per-use basis. Existing solutions are too strictly focused on specific concepts such as “sensors” and “actuators”, so requiring developers to bridge several technological gaps. The WoT model has shortened the distance between the IoT and humans (both developers and users) and it has ensured the compatibility with the existing IoT technologies through the design and implementation of specific adaptors. Even using RESTful architectures, the informative unit is often the IoT device, not the topic (i.e. information item) of interest. It is reasonable instead that talking the human language is the key for the IoT to get closer to the stakeholders, hence satisfying diverse users needs by the means of the same tools. The need for a novel IoT model, compatible with the existing one, also comes out when analyzing the possibility for an IoT node not only to provide data but also to request data to other peers, including peers of heterogeneous technologies. In fact, it is plausible to think at the IoT devices of the future not as super-equipped nodes with extreme processing capabilities, but as entities with different and shareable functionalities, that can autonomously cooperate and self-organize to accomplish both pre-determined and completely new tasks. The extreme heterogeneity of such nodes requires a powerful and flexible model to wrap their blended nature. As an immediate consequence of such perspective, every thing can be considered a sensor: a crawler in a Web site or even an “onclick” trigger in an HTML page. An IoT application can be seen as an IoT entity with no environmental capabilities but with computation capabilities, e.g. the possibility to perform an energy-consuming algorithm on behalf of passive IoT nodes. On the basis of these considerations, a new IoT model is needed to bridge the gap between the design domain and the solution domain: customers talk in terms of features; engineers talk in terms of sensors and actuators. Developing IoT scenarios should be as fast as drawing its sketches instead. Research challenges can be summarized as follows:

• To provide an IoT modeling technique that can abstract all the complexity and the diversity of the IoT data and service provider;

• Such modeling technique should be adapt to express not only the human–machine interaction, but also the machine–machine interaction;

• The IoT modeling technique should let IoT stakeholders concentrate on the innovative experience to be delivered, not on the physical details;

• Heterogeneous smart environments should be compliant with the novel IoT model: smart cities, smart education, smart grid, smart building, smart metering, etc.;

• Diverse kinds of stakeholders should take advantage of the novel IoT model: experience designer, developers, end users, policy makers.

13.4 The Web of Topics (WoX) Model

Web of Topics (WoX) is the model-driven approach for the IoE we propose. In WoX, the key entity between who needs and who offers IoT capabilities is the Topic, wrapping the value of a Feature of interest (e.g. presence, temperature, light, or even higher concepts such as crowd or coffee-making), in a URI-identified Location. IoT entities declare their Roles for Topics of interest by specifying their technological (source/executor/function) and collaborative (capability/need) dimensions. WoX brings two main advantages:

• Not only concrete things but also virtual things can be easily wired up to develop innovative scenarios. WoX concepts are close to the people: anyone can design and deploy custom IoE scenarios.

• WoX accelerates the development of applications, by taking care of the communication toward the heterogeneous IoT things. It hides the communication protocol details, letting designers/developers concentrate on their business.

WoX can be seen as an abstraction layer put between the WoT and the user applications (Fig. 13.4). WoX provides ready-to-use IoE Business Objects (BO) and Data Objects (DO), while leaving to the developer the only duty to display or handle the upcoming data. In the next section we describe the WoX analytical model. The reader could deepen the WoX concepts in [16].

Image
Figure 13.4 WoX reference model. WoX simplifies the application layer: the specific Presentation Objects (PO), Business Objects (BO) and Data Objects (DO) for each (OBServable) resource are wrapped in WoX, hence significantly reducing the application volume

13.4.1 Analytical Formulation

WoX refers to both IoT hardware nodes and IoT applications generically as IoT entities. In WoX, the “sensor” and “actuator” concepts are hidden. The main concept is the Topic. A WoX Topic is about an information of interest – called feature – in a certain location. More rigorously, a feature is any characteristic or entity of the environment that can be perceivable, definable, measurable and/or controllable. Some bare examples of feature are: temperature, humidity, presence. A crowd of people can be a feature too, as well as an alarm. Also a mathematical function – e.g. sum, min, max – can be a feature. The set of WoX features is the following:

F={fi}

Image (13.1)

The location is expressed hierarchically following the URN (Uniform Resource Name) scheme, e.g. “urn:italy:salento:highschool:firstfloor:phylab:desk1” or “urn:usa:california:la:westwood:overlandavenue:2801”. The set of WoX locations is the following:

L={li}ULOCANY,LOCSELF

Image (13.2)

where L also includes two special locations:

1. LOC_ANY, i.e. a wildcard for any location;

2. LOC_SELF, i.e. a reference to the current location.

Hence WoX define T as the set of couples feature-in-location:

T={ti,j=(fi,lj)F×L}

Image (13.3)

As we said, in WoX the topic is the key between who asks for services and who provides services. Separating the twos, WoX reaches the maximum abstraction possible. In fact, IoT designers can focus on concepts (features) rather than on hardware. An IoT entity will link itself to a topic in different ways, depending on its nature. In WoX, such nature is captured in two dimensions:

1. Collaborative dimension. It includes two aspects: (i) the capability to perform a service within the topic, and (ii) the need for other entities who can perform a service.

2. Technological dimension. It includes the legacy (i) sensor and (ii) actuator distinction, as well as a generic (iii) function service.

Hence WoX defines the following two dimensions sets:

DC={Capability,Need}

Image (13.4)

DTECH={Source,Executor,Function}

Image (13.5)

Then, WoX defines the set of WoX roles R included in the following Cartesian product:

R=DC×DTECH={SN,EN,FN,SC,EC,FC}

Image (13.6)

The items in the curly brackets respectively state for: sensor capability, actuator capability, function capability, sensor need, actuator need, function need. The generic IoT entity z can be modeled as a set of couples role-topic belonging to the following Cartesian product:

Ez={(rk,ti,j)R×T}

Image (13.7)

By this way, WoX is able to model any device or app in the IoE, even the most complex or abstract. An example of IoE node implementing the WoX model is a personal enhanced RFID tag which need to know the temperature in the current room, is capable to perform a comparison between float numbers and can activate a LED alarm.

13.4.2 The Information Architecture

End-users applications as well as core architectural components (e.g. data analysis) need to aggregate information that will not be directly available from the IoT physical layer. This is because the physical layer generates raw sensor data that need to be compared, intersected, cross checked, reasoned before being available for the upper layers. Particularly, we can distinguish the following information types, as depicted in Fig. 13.5:

• Raw data coming from the specific IoT technology (sensor). This is wrapped in the specific technology protocol message, and may vary in format (int, float, Boolean, binary, string), semantics and timing of availability/update;

• Event, described by a unified information schema that encapsulates the raw data and specifies meta-data such as: time, location, (technological) source. Event messages mask the inherent technology complexity. Such events are typically fired by middleware. Despite the uniformity of the event definition among different IoT technologies, events still wrap technology-specific information. Moreover, different events could describe the same situation (e.g. more events incoming from different IoT technologies could say that someone is entering a place);

• Topics, updated by events. A topic wraps a value and it is identified by providing its Feature and Location. We can distinguish in:

∘ Low level topics, for example, an application may be interested in someone entering a place, no matter which technology originates this event;

∘ High level topics, which retain the information inferred by interpreting the relations among more topics and data sources. Such relations can be statically foreseen;

• Facts and Patterns. The topic is a synchronous entity (its value continuously changes at every event incoming from the lower layers or from low level topics). A Fact is the snapshot of a topic at a certain time. Facts for one or more topics can be stored for future analysis. Such analysis can use heuristics in order to find recurring Patterns. That is, we can find “a-posteriori” topic relations. Domain experts can decide what to do with the elicited patterns: print reports, define new high level topics, send alerts, etc.

Image
Figure 13.5 WoX information architecture

13.4.3 Expected Benefits

A number of stakeholders will benefit from the WoX model's abstraction power:

• The end-user does not want to waste money in buying non-interoperable hardware that delivers few pre-defined scenarios. For instance, the end-user expects that when s/he is going back home, the air conditioner will automatically turn on, no matter how the user location is picked, no matter what the air conditioner manufacturer is.

• IoT inventors (e.g. developers and makers) want to shorten the distance between the idea and the solution. Unfortunately, currently they spend most of their time in focusing on the implementation details (often reinventing the wheel) rather than the core concepts of their ideas.

• Business organizations want to minimize the cost of their solutions as well as the time-to-market. They want to concentrate on the business models and on the business logic rather than burning their efforts on study different protocols and deal with implementation details.

13.5 Design and Implementation

WoX adopts a fractal architecture, that is every WoX entity is a broker for other WoX entities (Fig. 13.6). We group WoX topics in three domains: the WoX Cloud, the Local WoX (L-WoX, e.g. mobile devices), and eMbedded WoX (M-WoX, e.g. embedded devices). Every entity talk about WoX topics. Being a topic a feature of the environment in a specific location holding the current value of information anyone having data about a topic will perform the update hence sharing its knowledge. According to the deployed scenarios, every entity decides if forwarding topic updates to the parent entities or not. As a consequence, WoX entities at the edge of the architecture talk about few very specific topics, while entities near the core retain the master knowledge. Entity types include: apps, devices (sensors/actuators), knowledge processors (KP), business processes (BP), any piece of software in general. WoX delegates to the entities the responsibility of interacting with the topics, whether they have “capabilities” toward the specific topic (i.e. providing services) or “needs” (i.e. requesting services). Such interaction is performed using APIs. Different APIs exist for different entity types. Apps use iOS/Android APIs. IoT devices use C/C++ APIs. Software in general uses Java/Python/.NET APIs. Entities of any kind always talk about the same concepts: capabilities or needs towards one or more topics. Such model-driven approach brings two main advantages: (i) minimizes the language distance between people and technology, and (ii) abstracts the many-to-many complexity in a hierarchical publish-subscribe architecture. As a side benefit, different topics can be combined together, or with external data sources, in order to provide new knowledge, that is new “high-level” topics. KPs accomplish this task. When end-users create a new scenario, they choose the topics they are interested in, connect them and publish the scenario in the cloud. Behind the scene, the WoX app and the WoX core will work in symbiosis for running the scenario. In the next sections we show how we practically implemented the WoX information model on top on an EPCglobal instance and over the WSO2 Enterprise Service Bus.

Image
Figure 13.6 WoX is supported by a fractal architecture spearing the WoX Topics Domain. We detected three kind of topics domain: Ccloud, Llocal (e.g. topic living in the smartphone), and eMmbedded (topics living in embedded systems). Each can choose whether to forward topic information the upper hierarchical level, or retaining it for itself

13.5.1 Reference Architecture

The WoX model requires a robust ICT architecture capable of facing the extremely high number of IoT entities and Topics, the intense exchange of messages, and the heterogeneity of the IoT technologies. WoX architecture is built as instance of the publish-subscribe (pub/sub) software design pattern. Pub/sub is an enterprise integration pattern where senders of messages, called publishers, do not know a priori what are the specific receivers of messages, called subscribers. Instead, published messages are characterized into classes, without knowledge of subscribers identity. Similarly, subscribers express interest in one or more classes, and only receive messages that are in their scope, without knowledge of publishers' identity. The modelling of the pub/sub architecture starts from the Topic class. In Fig. 13.7 the UML dependence diagram is shown. The Observer software design pattern implements the main WoX idea. The Topic class has the Feature and Location member variables, as well as two other member variables, to hold respectively the topic's actual value and preferred value: the actual value contains the most recent value for the feature in the location; the preferred value is used to send and receive requests about the desired topic value (e.g. the desired temperature in a room).

Image
Figure 13.7 WoX UML dependency diagram

Every time an IoT node shows up, it handshakes with the WoX architecture, i.e. it declares its roles according to the formula (13.7). The corresponding subscriber classes are instanced and get attached to the Topic instance. When the Topic's actual value gets updated, SN subscribers (i.e. information consumers) get notified. Vice versa, when the Topic preferred value is modified, AC subscribers are notified so they can absolve their tasks. If the Topic's feature is a function, the topic's preferred value is ignored and the actual value is used both to pass function parameters as well as to obtain the function result. In the first case, FC subscribers get notified; in the second case, FN subscribers get notified. The pub/sub architectural pattern centralizes the core information separating who provides data from who consumes it. IoT-based apps perform a one-time subscription to the topic(s) of interests, without perceiving the hardware layer. Subscribing to topics is easy also for “stupid” IoT nodes (e.g. RFID tags). Moreover, the total number of exchanged messages is drastically reduced because of dropping all the point-to-point connections between IoT entities. The whole enterprise architecture depends on the WoX model, as presented in the previous section. The platform receives the raw data from sensors and it elaborates them in order to extract complex information. The workflow of data within the application is basically depicted in Fig. 13.8. The WoX logical architecture introduces two kinds of topics, both compliant with the definition of Topic, but referring to different levels of abstraction:

1. Low-Level Topic: it is related to data belonging to observable/controllable IoT entities without any semantic connotation;

2. High-Level Topic: it represents a refined information semantically characterized and interpreted.

The other components in the logical architecture are:

1. Enterprise Service Bus (ESB): it is the solution adopted to connect the various component of the application. It is compliant to Service-Oriented Applications (SOA) architectural pattern and it guarantees the interoperability among heterogeneous technologies.

2. Business Rules Web Service: it is a middleware component with the specific function of Knowledge Processor (KP). The module subscribes to the Low-Level Topic and applies the business rules on row data deriving information from it, in order to draw events of interest and to update the corresponding High-Level Topic;

3. User Application: high abstraction level module. Its role is to subscribe the High-Level Topic and to notify the user when an event of interest occurs.

Image
Figure 13.8 Enterprise System Logic Workflow

The Low Level Topic is used to catch data provided by sensors, to control actuators and, generally, to process row data in an IoT network. The High Level Topic is used to treat elaborate information mined from raw data according to the logic rules imposed by the KP. Once a High-Level Topic changes its own internal state, that is some event of interest has occurred, it notifies the User Application component as any other topic too.

13.5.2 Physical Architecture

WoX uses an EPCglobal middleware (ETH Zurich's Fosstrak [5] implementation) and WSO2 ESB [6]. Fig. 13.9 shows the WoX technical architecture. A pub/sub architecture alone cannot satisfy the requirements of hardware abstraction, event filtering, and standard-compliant persistence of an IoT middleware. To this aim, the pub/sub architecture is put on the top of an EPCglobal middleware. Such design choice guarantees quality and performance to the whole architecture. As aforementioned, the WoX architecture grounds on the Fosstrak. It is made up of four main layers:

1. Environment Level: it comprises the physical layer as well as any virtual environment that can generate events. Social networks chats or other virtual data generators can be source of events too.

2. ALE middleware: it is responsible of querying/piloting the Environment Level and packing event reports for the upper layers. It also normalizes the events and filters duplicated data. On the bottom side, a series of adaptor is present for each IoT technology, both physical (e.g. RFID, WSN, KNX, etc.) and virtual (social networks, virtual environments, etc.). On the top level, three SOAP (Simple Object Access Protocol) Web services are needed to send hardware configuration (when needed), receive event reports formatted with the ECSpec (Event Cycle Specification) schema, and to send data to the technologies using the respective technology formats.

3. WoX Capturing Application: it is the architectural level implementing the WoX model. It instances the topics, updates them, updates the topic map, and makes such data available to the end-user apps by a set of REST interfaces.

4. End users applications use the WoX APIs to subscribe topics; they can run on any kind of device. For testing purposes, in the current work, Java and Android APIs have been used, but APIs in other programming language will be developed in the next steps. An additional element, the EPCIS (EPC Information System), persists IoT events for asynchronous usage.

Fig. 13.9 evidences the two possible flows of information: (i) node-to-node, the curved arrow, i.e. any IoT node can request services to other nodes (even of different technology), and (ii) node-to-app, the straight arrow, i.e. any app can receive data from any node, and vice-versa. The cornerstone of each information exchange is the WoX Capturing application, where the WoX model is implemented and the topics are instanced.

Image
Figure 13.9 The WoX technical architecture, based on the EPCglobal standard and its open source implementation (Fosstrak). The arrows indicate the possible flows of information in WoX: node-to-node and node-to-app

Referring to Fig. 13.10, most part of the architecture is implemented using WSO2 technologies. Particularly, WSO2 implements the following components: Enterprise Service Bus, Business Rules Server and Web Service Application Server. The module for managing topics is implemented on the top of Fosstrak EPCGlobal implementation and is deployed on a dedicated server. The different modules in the architecture communicate by way of RESTful interfaces, in accordance with WSO2 guidelines. The sensor component sends the data describing the state of the environment to the Enterprise Service Bus. The ESB sends the data from sensors to the Fosstrak Capturing Application component, where a specific instance of Low-Level Topic encapsulates the data from the sensor. The Application Server implemented on the WSO2 Web Service Application Server subscribes all the topic instances in the Capturing Application, firing different actions depending on the type of topic. In case of Low-Level Topic subscription, the Application Server receives notifications from it in conjunction with sensor updates and it forwards the information included in the topic to the Business Rule Server. In the latter component there is a Web service equipped with a Knowledge Processing Engine. It acts as Knowledge Processor and computes the received data. f an event of interest has occurred, the Business Rule Server updates the corresponding High-Level Topic. The business logic rules are implemented by means of Drools tool [7]. Since the Application Server can perform subscriptions also to High-Level Topic, an event of interest occurrence is seamless notified to it and, so, to the end users. The Business Rules Server exposes the logic rules as Web services. Therefore, it is possible adding new rules or modifying existing ones by means of http requests, without the need of redeploy the application.

Image
Figure 13.10 The WoX physical architecture

13.5.3 L-WoX and M-WoX

As we said at the beginning of Section 13.5.1, three WoX topics domains exist: (i) the Cloud domain, more general and horizontal with respect to the WoX applications, (ii) the Local WoX (L-WoX) domain, which lives in intelligent user devices such as smartphones and tablets, and (iii) the Embedded WoX (M-WoX) domain, related to embedded devices. In this section we describe the last two WoX declinations.

L-WoX

The Local WoX (L-WoX) is a subset of the whole architecture running on the personal user device (smartphones and tablets). In L-WoX, the personal device works as an aggregator towards local WoT entities. Allowing to retain and manage some topics locally on the device is more efficient in some circumstances. For example, multiple mobile apps on the same device may be interested to the same topic, and its value is updated by an onboard sensor (e.g. the accelerometer). Another example consists in two mobile apps interested in two different topics, updated using the same onboard sensor. As an example, the accelerometer can feed both the “ATHLET_TRAINING” topic and “ELDERLY_PERSON_FALL” topic. In L-WoX we have the following components:

1. The L-WoX service, instanced as a singleton in the mobile operating system, retaining the topic instances;

2. The mobile apps, subscribing to the local topics after binding to the L-WoX service;

3. The native sensors APIs, offered by the mobile operating system to access the available sensors;

4. A set of WoX adaptors, which use the values incoming from the sensors to update specific topics.

Notice that the Location values for the local topics is often LOCATION_SELF. As for the Cloud case, the mobile app developer decides what to do with each local topic value. In addition, s/he decides if updating a Cloud topic (hence acting as a capability entity) or not.

Fig. 13.11 reports the L-WoX architecture. It is evidenced how to connect both existing and new App to the WoX Cloud.

Image
Figure 13.11 Local WoX integration with WoX apps

The legacy app talks directly to the physical layer, using its own application layer protocol. In order for the legacy app to share its existing services, it should use the WoX APIs in order to translate the proprietary event to the common WoX topic. If necessary, the app forwards the new topic information to the global WoX architecture, else the information will remain in the specific app context. New IoT apps (not legacy) can directly uses all the L-WoX advantages.

M-WoX

No matter which IoT technique/technology – even passive – is considered, the specific IoT entity should be able to tell peers, gateways and apps its WoX profile, according to formula (13.7). The WoX profile exchange message format is called M-WoX. When possible, implementing the M-WoX data format protocol allows a seamless dialogue between different kind of devices, in a P2P fashion. The M-WoX application protocol is independent from the specific IoT device nature/brand, because its purpose to format the message payload rather than defining how the devices are networked. It can be used to format the payloads of BLE beacons/connections, QR codes, NFC tags, and so on. Given the constrained – even self-powered – of IoT nodes, it is obvious that such message should be composed bit by bit. M-WoX is based on and expands the user memory mapping proposal presented in the BRIDGE Project1 Actually, if we consider the passive RFID as the most constrained IoT technology, we can use the WORD variable as the atomic piece of information. A WORD is composed of 4 HEX digits, i.e. 16 bit (e.g. AAAA, 0123, BCFF). In Fig. 13.12 the high level WoX message format is depicted.

Image
Figure 13.12 The M-WoX message format

The message starts with a Special Function Code (SFC) (1 WORD), by which the entity memory can be fixed, reset or initialized. The entity itself can also tell that it is not available in a certain moment. After the SFC, there is a succession of 236 WORDs blocks. The blocks division is foreseen in order to face the constraints of some IoT technologies, which does not allow to read all the retained information at once. Every block is self-consistent (i.e., it is not mandatory to read all the blocks in order to understand the single block content). In Fig. 13.13 the single block details is depicted.

Image
Figure 13.13 The M-WoX single block

Each block contains the serialized version of the WoX entity profile, as defined in formula (13.7). Here we describe the block format in detail. The first field is the NoR (Number of Roles).

Table 13.1

The Number of Roles (NoR) Field

FIELD LENGTH
NoRa 1 word

a NoR: Number of Roles, i.e. the number of roles wrapped in the block.

Table 13.2

The roleAddress and roleRange Fields Details

FIELD LENGTH
roleAddressa 1 word
roleRangeb 2 word

a roleAddress: hex address (in WORDs) of the role inside the whole message.

b roleRange: length of the role, in number of WORDs.

Table 13.3

The Capability Case Fields

FIELD LENGTH
DATA 1 word
NUM_INTERVAL 1 word
LIMIT_HI 1 word
LIMIT_LO 1 word
NEGATIVE_OFFSET 1 word
INTERVAL 1 word
COUNT 1 word
TIMESTAMP 2 words
STARTTIME 2 words
LOGCTRL 1 word
LOGSTAT 1 word
ROLE_TYPE 1 word
FEATURE_ID 1 word
TOTAL 15 words

The NoR (Number of Roles) is the number of roles wrapped in the block. A role can be: (i) source capability; (ii) source need; (iii) executor capability; (iv) executor need, (v) function capability, (vi) function need. Then, the block contains the role map, which is a field having NoR couples roleAddress-roleRange, i.e. the memory address (expressed in WORDs) and the role size for each role.

The roleAddress is the hex address (in WORDs) of the role inside the whole message. The roleRange is length of the role, in number of WORDs. Then, each role must be described (serialized). Such serialization varies if it is a capability or a need.

In Table 13.3 there are shown the capability case fields. The fields meanings:

• FEATURE_ID: it is the unique identification number of the WoX feature (temperature, light, fall, ...)

• ROLE_TYPE: defines the role type. The value is one of the following:

Table 13.4

The LOGSTAT Register Details

Image

Table 13.5

The LOGCTRL Register Detail

Image

SOURCE_CAPABILITY_ROLE = 0;

SOURCE_NEED_ROLE = 1;

EXECUTOR_CAPABILITY_ROLE = 2;

EXECUTOR_NEED_ROLE = 3;

FUNCTION_CAPABILITY_ROLE = 4;

FUNCTION_NEED_ROLE = 5;

• LOGSTAT: a register containing the status flags (memory_full, upper_limit_violation, lower_limit_violation) as well as information about the feature data type.

The Type field contains the data type, which could be one of the following:

∘ 0000 = signed 16-bit integer

∘ 0001 = unsigned 16-bit integer

∘ 0010 = signed 32-bit integer

∘ 0011 = unsigned 32-bit integer

∘ 0100 = float, IEEE 754 Single-precision (32 bit)

∘ 0101 = fixed point Q10.6

∘ 1111 = Bitwise presentation (manufacturer specific)

The other LOGSTAT fields are:

∘ F = Memory Full flag

∘ LLV = Limit Low Violation flag

∘ LHV = Limit High Violation flag

• LOGCTRL: a configuration register defining the behavior of the specific feature.

In Table 13.5 there are shown the LOGCTRL fields details.

∘ RST = Reset

∘ L = Sensor monitoring activated

∘ D = Data logging activated

∘ TL = Timestamp activated

∘ M = Mode

– 0 = Continuous logging

– 1 = Event logging

∘ LHM = Limit High Monitoring (on/off)

∘ LLM = Limit Low Monitoring (on/off)

• STARTTIME: UNIX timestamp holding the beginning of logging (if the technology supports logging)

• TIMESTAMP: timestamp (UNIX time).

• COUNT: quantity of data record in memory. If data logging is not active, the value of COUNT is 1.

• INTERVAL: interval of sampling, in seconds (not needed if logging)

• NEGATIVE_OFFSET: the negative offset to be added to LIMIT_LO or LIMIT_HI to obtain the real limits (avoiding to face negative values).

Example. If: NEGATIVE_OFFSET = 20, LIMIT_LO = 0, LIMIT_HI = 30, then the real limits are:

(real) LIMIT_LO = −20 (i.e. LIMIT_LO + (−NEGATIVE_OFFSET))

(real) LIMIT_HI = 10 (i.e. LIMIT_HI + (−NEGATIVE_OFFSET))

• LIMIT_LO: the lower measure limit range

• LIMIT_HI: the upper measure limit range

• NUM_INTERVAL: defines the number of steps in which the interval (LIMIT_HI – LIMIT_LO) is sampled.

• DATA: data generated by the source (sensor) or to be forwarded to the executor (actuator)

The “need” case is reported in Table 13.6.

Table 13.6

The Need Case Fields

FIELD LENGTH
DATA 1 word
locationMD5 1 or 8 words
NUM_INTERVAL 1 word
LIMIT_HI 1 word
LIMIT_LO 1 word
NEGATIVE_OFFSET 1 word
LOGCTRL 1 word
LOGSTAT 1 word
ROLE_TYPE 1 word
FEATURE_ID 1 word
TOTAL 10 or 17 words

The common fields have the same meaning as for the capability case. A specific comment is needed for the following field:

• locationMD5: The location URN in which the entity wants its need to be satisfied. When the URN is the same location where the entity resides (LOC_SELF), or any location (LOC_ANY), then the location URN field is 1 WORD long. Else, 8 WORDS.

13.6 Proof of Concepts

In this section, we describe how the WoX model-driven approach and implementation helped us developing the airport's Kiss&Fly parking service.

13.6.1 The Kiss&Fly Scenario

The Kiss&Fly zone is a short-stay parking area located near the airports' terminals. Tipically, the total time of free pass and/or stay in this area is 10 minutes. For a stay of over 10 minutes users are charged for some price. The innovative scenario we want to develop includes the use of a smartphone to detect the entrance/exit of the user in the parking lot. Considered sensing technologies are:

• NFC. The user will tap its device to the entrance and exit gates;

• A mobile app. The user will tap manually the “I'm entering” and “I'm exiting” buttons.

The use of two different sensing technologies (very different from each other, the first one is physical, the second one is virtual) demonstrates the independence of the scenario from the specific hardware involved. We developed a unique physical gate for both entering and exiting the parking lot. We implemented it using an Arduino Mega 5360, expanded with a Seed Studio NFC Shield. The Arduino also has a relay which is needed to lift up and bring down the park barrier. Besides the mobile device and the Arduino, another IoT entity is needed: the billing system. It listens for users entering and exiting the parking lot, takes the event times, decides whether to charge or not the user, and settle the transaction if needed. In order to simulate the user status (inside or outside the parking lot), we use a light bulb connected to the Arduino relays instead if a real barrier. For this scenario we used the following topic: feature BARRIER, location: “it:apulia:brindisi:casale:parking:kissFly”. The value of the topic is formatted with a JSON String like this: {“user” : “user_id”, “lifted” : true}. Then, for each IoT entity (node or app) involved, we defined its role(s):

• The mobile app has an executor need role, because of both the “I'm entering” and “I'm exiting” buttons and the NFC tap possibility;

• The billing system has a source need role, because it want to know about the status of the barrier topic;

• The Arduino has both an executor capability (because it can lift up the barrier) and a source capability (because it can say that the barrier is lifted up or not after the execution).

In Fig. 13.14 it is shown the mobile app code we wrote for the Android platform. As readers can see, most code is about UI and variables updates. WoX needs only three instructions. L-WoX takes care of the NFC interaction.

Image
Figure 13.14 The Android mobile app code. WoX needs only 3 lines of code

Fig. 13.15 shows the Arduino firmware code. We used the M-WoX.h library we developed for embedded systems. Even here it is noticeable how short is the development effort. The smartphone's L-WoX instance and the Arduino's M-WoX instance silently uses the M-WoX application protocol to exchange data over the NFC link. The developer's only duty is to specify the callback function for each WoX role.

Image
Figure 13.15 The Arduino firmware code snippet

Generally, a billing system is already present at the business location. In this case, system integrators can use WoX APIs to add IoT functions to the system. For the considered scenario, we developed a sample billing system as a Java stand-alone application. In Fig. 13.16 we show a couple of code snippets of the billing system.

Image
Figure 13.16 A snippet of the WoX code we written for the billing system

In Fig. 13.17 we show the prototyped barrier, whose status is simulated by a light bulb turning on and off. The reader can see the presence of the NFC shield and antenna, mounted on top of the Arduino, as well as the relays.

Image
Figure 13.17 The entrance/exit gate for the Kiss&Fly scenario. The user status (inside or outside the parking lot) is simulated by a light bulb

The light turns on/off in two cases: the user taps the button in the mobile app (hence the WoX Cloud is dragged in), or the user moves close the smartphone to the NFC antenna (direct M-WoX interaction, then the Arduino updates the WoX Cloud).

13.7 Conclusions and Future Work

In this section we sketch our conclusions as well as future research directions.

13.7.1 Conclusions

In this work we have presented the Web of Topics (WoX) approach, a novel design model that facilitates the design and development of innovative IoT scenarios. Despite the great spread of IoT devices in different context, nowadays IoT stakeholders face considerable difficulties in designing IoT applications without running into significant gaps with the solution domains. Moreover, there is a need to ease the access to the IoT nodes services also among physical nodes, particularly when they are technologically heterogeneous. The proposed model is based on the concept of Topic. Just like humans, IoT nodes and applications can talk and exchange information about a certain topic of interest. This kind of abstraction level ensures a lightweight configuration for physical nodes, and an intuitive metaphor for the IoT stakeholders, including the developers. The WoX model has been implemented on top of the EPCglobal architecture, which gives scalability, efficiency and robustness. The WoX reference model fills the gap between the Web of Things paradigm and the IoT apps. WoX aggregates data and events incoming from the WoT, providing ready-to-use information and concepts. This simplifies the mechanics behind the upper application levels as well as all the levels of knowledge base, ontology and knowledge discovery enriching the IoT and making it valuable for the people. WoX puts the basis for the definition of an interactive dialogue model between people and smart environments.

13.7.2 Open Issues and Future Challenges

WoX is inspired by the standard architectures proposed in the state of the art section, but it is not fully compliant yet. The main future work in this direction is the adoption of the O&M standard to describe the topics payload. Indeed, current topic payloads are primitive values (integer, float, string, boolean, etc.). Currently we are working on the development of the L-WoX app and process for the Android and iOS platforms. We are using the reflective architecture paradigm to let services dynamically downloading and installing adaptors from the repository. From the non-technical stakeholders' side, it is needed a WoX dialogue model intuitive notation allowing anyone to design their own IoT-based experience by the means of a simple authoring tool. we will build the WoX Author Web interface to let the users draw their scenarios and deploying them onto the Cloud. Another research direction will be the release of more programming languages WoX interfaces with an enhanced set of exposed APIs, as demanded by the developers involved in the experimentation.

References

[1] Osservatori.net – digital innovation, http://www.osservatori.net Accessed: 2016-09-01.

[2] Internet of things architecture, http://www.iot-a.eu/ Accessed: 2016-09-01.

[3] Internet of things global standards initiative, http://www.itu.int/en/ITU-T/gsi/iot/Pages/default.aspx Accessed: 2016-09-01.

[4] EPCGlobal, http://www.gs1.org/epcglobal Accessed: 2016-09-01.

[5] Fosstrak, Open source RFID platform, https://code.google.com/p/fosstrak/ Accessed: 2016-09-01.

[6] WSO2, Open source, SOA, web services, cloud computing, Java PaaS, middleware projects for developers/architects, http://www.wso2.com Accessed: 2016-09-01.

[7] Drools – business rules management system (JavaTM, open source), http://www.drools.org/ Accessed: 2016-09-01.

[8] C.W. Tseng, Y.S. Lin, W.H. Lu, C.H. Huang, Extending EPCglobal ALE middleware to integrate transducer capability of IEEE 1451 standards, In: Proceedings of the 6th international conference on ubiquitous and future networks (ICUFN 2014). Shanghai, China, July 8–11. 2014:289–294.

[9] E.Y. Song, K. Lee, Understanding IEEE 1451-networked smart transducer interface standard – what is a smart transducer? IEEE Instrum Meas Mag 2008;11(2):11–17.

[10] D. Pfisterer, K. Romer, D. Bimschas, O. Kleine, R. Mietz, C. Truong, H. Hasemann, A. Kröller, M. Pagel, M. Hauswirth, et al., SPITFIRE: toward a semantic web of things, IEEE Commun Mag 2011;49(11):40–48.

[11] J. Honkola, H. Laine, R. Brown, O. Tyrkko, Smart-M3 information sharing platform, In: Proceedings on the IEEE symposium on computers and communications (ISCC). Riccione, Italy, June 22–25. 2010:1041–1046.

[12] A. Katasonov, O. Kaykova, O. Khriyenko, S. Nikitin, V.Y. Terziyan, Smart semantic middleware for the internet of things, In: Proceedings of the fifth international conference on informatics in control, automation and robotics, intelligent control systems and optimization (ICINCO). Funchal, Madeira, Portugal, May 11–15. 2008:169–178.

[13] L. Mainetti, V. Mighali, L. Patrono, A software architecture enabling the web of things, IEEE Int Things J 2014;2(6):445–454.

[14] P. Spiess, S. Karnouskos, D. Guinard, D. Savio, O. Baecker, L.M.S. de Souza, V. Trifa, SOA-based integration of the internet of things in enterprise services, In: Proceedings of the IEEE international conference on web services. Los Angeles, California, July 6–10. 2009:968–975.

[15] L. Lan, F. Li, B. Wang, L. Zhang, R. Shi, An event-driven service-oriented architecture for the internet of things, In: IEEE Asia-Pacific services computing conference. Fuzhou, Fu Jian, China, December 4–6. 2014:68–73.

[16] L. Mainetti, L. Manco, L. Patrono, I. Sergi, R. Vergallo, Web of topics: an IoT-aware model-driven designing approach, In: 2015 IEEE 2nd world forum on Internet of things (WF-IoT). Milan, Italy, December 14–16. 2015:46–51.


1  “BRIDGE Project, http://bridge-project.eu/.”

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset