An architecture for the Web of Things

Dave Raggett W3C/ERCIM 2004, route des Lucioles Sophia Antipolis - France [email protected]

ABSTRACT end servers that handle the HTTP client requests can spread the The real World consists of physical things that computer software computational load across multiple back-end servers. can interact with through sensors and actuators. This can be com- Cloud computing refers to the means to fulfil compute or storage bined with rich descriptions, e.g. of devices, people, places and requirements by connecting a large number of computers. These events. There is a huge potential for services, and most of the work computers are often hosted by third parties as a service at a lower to date has focused on communication technologies for the Internet cost that it would be to provision these yourself. Virtualization of Things. It is now timely for an increased focus on how to create allows a single physical computer to be shared as a number of services, and the importance of standards for realizing the potential. virtual computers. This gives users the ability to install and configure The Web of Things extends the Semantic Web into the real World their own software as needed. Scalable solutions for data storage for an open ecosystem of value added services based upon physi- involve mechanisms for replication and synchronization. If most cal sensors, actuators and tags, together with rich descriptions of data queries are read-only, the mechanisms can be designed to speed physical and abstract things. This paper presents an architecture for up read-only access at the cost of slower update queries. a scalable services platform for the Web of Things with for Graphics processing units (GPUs) are very efficient for matrix services layered on top of HTTP and Representational State Transfer and vector operations compared to traditional computer processing (REST). units (CPUs). Cloud based GPUs [7] are expected to be increas- ingly important for speech and image processing, machine learning, Categories and Subject Descriptors translation, and emulation of neural networks [8]. For highly distributed solutions, some form of peer to peer com- X.4 [Insert]: ACM Categories puting is appropriate. This can be made more efficient if the number of peer connections per node follows a power law [9], so that any Keywords arbitrary pair of nodes can be connected to each other through a Internet of Things, Services, Cloud computing, REST, Semantic relatively small number of intermediaries [10]. Distributed hash Web, Web Security, Privacy, Open Standards tables (DHTs) allow you to distribute tasks across a large number of nodes through a mechanism that maps the task description to an index in an array. A related technique is to use Bloom filters which 1. WEB ARCHITECTURE have the property of constant time to add items or to check whether The Web is based upon open standards for addressing resources an item is in the set, independent of the size of the set. (URIs [1]), protocols for accessing resources (HTTP [2]), and for- mats such as HTML [3], CSS [4] and JavaScript [5], for more details, see W3C Web Architecture [6]. The Web has evolved from brows- 2. THE WEB OF THINGS ing static web pages to applications and services, with the browser Bar codes have made it easy to scan identifiers for physical items. hosting the user interface. The application processing is distributed: This has had a huge impact on tracking items through the supply some occurs in the web page scripts executed in the browser, other chain or assembly line, or as they are transported across the World, processing occurs in the server. as well as speeding checkout at a retail point of sales terminal. The HTTP protocol is designed to support caching of resources The year on year improvements in electronic circuits has made to reduce the load on servers for static or infrequently changing it practical to provide inexpensive radio frequency identification content. Applications often involve dynamically generated pages (RFID) tags. These are often more convenient than barcodes, e.g. tailored to a specific user’s needs. This is typically data driven, not requiring direct line of sight to the scanner. RFID has evolved to involving database queries, and sourcing information from third support integrated storage, computation, and even simple sensors. party servers. At the same time the communications technologies for sensors The distributed nature of clients and servers provides a degree and actuators have evolved at a rapid pace. Low cost battery powered of scalability compared to centralized approaches. Scaling to fulfil sensors are now available that operate for several years. Falling increases in demand for a given web site can be accomplished in costs are making it practical to integrate sensors in all kinds of a number of ways. The DNS servers can be configured to map a environments. Application areas include: given domain name to multiple servers to spread the load. Front- • Smart cities – transport, power, water, planning, . . . Copyright is held by the author/owner(s). • Smart homes – home automation, extended warranties & WS-REST 2014, Seoul, Korea proactive maintenance, security, entertainment, . . . ACM (to be determined). • Home healthcare – improved outcomes and reduced costs Value-Added Services A cloud-based platform can be designed to support both scalability • Retail – stock taking, and richer shopping experiences and easy registration of services. The starting point is a description of the service as a REST API. The platform also provides a basis • Smart factories and distribution for value added services that build upon other services:

Work on the Internet of Things [11] has mainly focused on com- • By combining multiple services in some useful way munications technologies and much less so on how to create services. • By combining services with rich descriptions and other sources There are plenty of challenges: scalability, security, interoperability, of information coping with continuing change in communications technologies, a lack of clarity in respect to business models, privacy, personal • By transforming service data into the same, higher or lower control and threats to individual freedoms. level of abstraction The Web of Things is a term coined in 2007 [12] for applying Data fusion combines multiple sources of information, e.g. anonymised web technologies to blend the Internet of Things with the Semantic data on the locations of cars with map data to generate traffic density Web [13] to enable value added services. maps. An example of a transformation at the same level of abstrac- tion is a conversion of data units such as temperatures from Celsius • Interaction with the physical world through tags, sensors and to Farenheight. Another example is a conversion of data formats, e.g. actuators (the Internet of Things), from XML to JSON. Biological metaphors for pipelined perception and actuation are applicable to tranformations at different levels of • Machine interpretable descriptions and context (i.e. the Se- abstraction: mantic Web and linked data) and • Extracting meaning from progressive interpretation of am- • Open markets and ecosystems for services using scalable biguous or noisy data distributed cloud-based platforms. • Mapping high level intent to coordinated & synchronized control of actuators The basic idea is to expose sensors and actuators via HTTP. The server involved hides the details of how the sensors and actuators Examples of perception include: speech recognition, face detec- are connected to it. This allows you to use whatever communication tion, tracking of pedestrians and cars in street scenes. Examples technologies make the most sense for the given environment. The of actuation include: coordinating traffic lights based upon current sensors and actuators in many cases won’t be using HTTP due to the traffic conditions, and signalling smart appliances to reduce the load need to conserve battery life. Some examples of communications on a electrical grid in response to peaks in demand. technologies: Biological insights are also relevant to creating intelligent agents that act on their user’s behalf, e.g. based upon a representation of goals, the ability to construct and execute plans, and to learn from • WiFi, Weightless, ZigBee, CoAP & 6LoWPAN, NFC, Blue- experience. This is something where an interdisciplinary approach Tooth & BLE, ANT, Infrared, USB, IEEE 1394, DASH7, is likely to pay dividends, e.g. computational linguistics, cognitive KNX for buildings, EnOcean, GPRS/3G/4G, WiMAX, etc. science and artificial intelligence. All this suggests the value of a service platform with support Web applications can directly access services exposed by HTTP, for a heterogenous mix of programming languages, e.g. simple subject to the same origin security restriction. This limits web page expressions for data conversions, scripting languages for flexibil- scripts to accessing HTTP on the same server that provided the ity, rule-based languages for logical inferences, and specialized HTML web page. This is not a problem if the web applications languages for exploiting GPUs for efficient operations on numeric are installed onto the same server as the server side scripts for ac- data. cessing the sensors and actuators. Several companies have recently Markets of services involve people in a variety of different roles. announced plans for open standards for services running on home Some people design and sell services. Others purchase services gateways [14] and apply them to their personal or business needs. The former is There are work arounds for the same origin restriction. One analogous to selling native apps through app stores for use on iOS approach is to use the HTML script element to load data into the and Android devices. As an example Peter sells a service for home page’s scripting execution environment. A related approach uses security webcams. Mary purchases this as a packaged service, and document.write to dynamically extend the web page. More recently, applies it to her webcam in her garden. She needs to bind the service W3C has defined cross origin resource sharing (CORS [15]) where to her webcam via some kind of discovery/peering mechanism. She services use an HTTP header to indicate from which web page also needs an app to access the service to control the webcam and origins they are willing to accept requests. to view the images and video sequences it captures. She further has to decide whether to share the data with others, e.g. her friends, or 3. OPEN MARKETS OF SERVICES FOR THE even to make it publicly accessible. Looking at this example in a little more detail, Mary’s webcam WEB OF THINGS supports taking video clips triggered by a motion detector. The Small HTTP servers hosting services are at risk of being over- video clips are uploaded to the cloud for storage. Mary can use loaded if a given service becomes very popular. A work around is the app to view a history of the video clips. She can register for to treat the server as a back-end server, and to publish the service notifications of activity, and request a direct live video feed together using cloud-based proxy servers which are provisioned to match the with the means to pan and zoom the webcam for a better view. What demand. This is the approach being taken by the European project this shows, is that the webcam is a device with an API and is not named Compose [16]. just a simple data feed. Figure 1: A Web of Value-Added Services Figure 3: Personal Zones

HTTP POST request. The client-side script library that wraps this needs to be able to recover from inevitable closed connections. A cleaner solution is for the script in the home gateway to estab- lish a Web Socket [22] connection to the cloud and use JSON-RPC [20] as a basis for remote method invocation. Web Sockets pro- vides a flexible solution for asynchronous bidirectional messaging over a TCP connection, and like HTTP can be used with transport layer security (TLS) to hide communications from scrutiny by third parties. JSON-RPC defines conventions for expressing method in- vocations, method responses and notifications as JSON messages. Figure 2: A Web of Services coupled to the IoT A lightweight scripting library can be used at both end points of the connection to map APIs to the corresponding message handling. Another solution is for the home gateway to expose an HTTP server outside of the firewall so that cloud based services can directly Service Clouds connect to the gateway as needed. This could involve configuring A service can be defined by scripts for the behaviour together with port forwarding on the firewall to pass TCP connections requests metadata that includes details on the developer, the owner, the API to the home gateway. With current devices, this is cumbersome for exposed by the service, and access control policies. end users to set up. Alternatively, the home gateway could integrate Figure 1 illustrates the idea of a service where the behaviour is the function of the firewall, e.g. as a new class of device that acts as defined in JavaScript. The metadata is defined in JSON-LD [19]. both a WiFi router, firewall and gateway. The service consumes and produces data expressed in JSON [18]. Further complications arise when services behind different fire- The service is executed in a security sandbox by a cloud-based walls need to communicate. This generally involves the need for a platform. third party to either relay messages, or to help set up peer to peer Figure 2 illustrates how a cloud based service can build upon connections between a pair of services. W3C’s Web RTC Working a service running on a server behind a firewall. In this case, the Group [23] is developing a standard means for scripts to set up such server is a home gateway and runs local scripts that interface to connections using NAT-traversal technologies such as ICE, STUN, sensors and actuators in the home. The firewall blocks incoming and TURN. connections, so the scripts running in the home gateway make client A different approach has been studied by the European project requests to URIs exposed by by the cloud-based platform. This is named Webinos [17]. The starting point is the observation that fine for delivering data or notifications into the cloud, but awkward increasingly people have many different personal devices from dif- when the service running in the cloud wants to invoke a method ferent vendors. A unified approach is needed to help people manage exposed by the service running in the home gateway. This doesn’t their personal devices, apps and services. The proposed solution is fit naturally into the REST framework, and motivates a layered the idea of a Personal Zone. Each of your devices, apps and services abstraction architecture that hides the complexity. are enrolled as part of this zone, which safeguards security, and also One approach involves polling the server for notifications and exposes zone APIs for inter-zone applications between different method invocations. Additional HTTP requests are needed to deliver people1. The external interfaces for the Personal Zone are provided method responses. This can be made more efficient if the server on servers that are directly accessible on the Internet, and as such maintains a queue so that multiple notifications and method invo- exist outside of the firewall. This is illustrated in Figure 3. cations can be delivered in a single HTTP response. If the queue is Figure 4 illustrates how independent service clouds could work to- empty the server could keep the connection open in the expectation gether based upon open standards as a basis for connecting services of a notification or method invocation. hosted by different clouds. A closely related approach uses long lived HTTP connections [21], where the server pushes a stream of messages as the content 1Webinos implements personal zones with a Node.js based proxy of an extended HTTP response. The client can stream notifications, server in each device. This exposes a rich suite of intra-zone APIs method invocations and method responses as the content of the to trusted web applications, and facilitates cross device applications. The Web IDL specification suggests the use of extended attributes for language specific extensions, but this is aimed at the needs of the programming languages the IDL will be compiled into. A better approach might be to introduce a namespace prefix for identifiers and a means to bind these prefixes to URIs. This is possible as Web IDL grammar excludes the colon character from appearing within identifiers. Here is an example which assumes a hypothetical namespace for physical units:

@prefix phys http://example.com/ns/physical-units#

[extended-attributes] interface phys:Celsius { attribute float temperature; };

Figure 4: A Federation of Service Clouds The above example declares Celsius as part of a given namespace. The namespace prefix syntax would also be usuable with interface names for attribute types, other than the types predefined in the Web IDL specification. There needs to be a way to retrieve external definitions of interfaces and Web IDL currently lacks an import Service Platform statement. More far reaching extensions would address the ability to annotate interfaces in a variety of ways. You might, for example, Given the complexity of communicating with services behind fire- want to indicate that a valid temperature reading is within the range walls, it makes sense for the service platform to hide the imple- from -40 to 100. String values could be constrained by regular mentation details from service scripts, and to support a variety of expressions. Validity constraints could span multiple attributes. solutions as described in the previous section. Web IDL is just one example of interface definition languages. An analogy can be made between services and software packages Another is the Description Language (WADL [25]), on operating systems like Linux. Each package has a name and which uses XML for describing REST-based web applications. For version number, and details of the names and version numbers for the reasons stated earlier in this paper, it seems preferable to express the packages it depends upon. This allows the package manager to service APIs at a level decoupled from the underlying use of HTTP, identify and load the dependent packages when the user asks for a so WADL is unlikely to be a good solution for the requirements for given package to be installed. a cloud services platform. The Web Services Description Language A similar approach can be used for the Web of Services. Each (WSDL [26]) is another XML based IDL language and targets service needs to provide a name and version number, together with interfaces based upon the Simple Object Access Protocol (SOAP). the details for the services it depends upon. This is expressed as The service platform executes scripts in a sand box that hides part of the service’s metadata. Rather than binding services by their the details of how APIs for dependent services are mapped into name, a more general solution is to bind them based upon their type. the underlying transport protocols. This makes it easy to scale for This is a better fit for an open market of services, where competition increased demand by replicating services across cloud provisioned is an integral aspect of the process of fulfilling evolving market hardware. The platform needs to take care of service specific storage needs. requirements, and synchronization across different instances of the What are the requirements for expressing the service type? It same service. This is analogous to the requirements for client- seems reasonable to try to make use of an existing interface defini- side storage for web applications. In the Compose project, we are tion language. This needs to support named interfaces and preferably planning on using a NoSQL database for data represented in JSON, some form of interface version numbers. The interface name needs together with the SPARQL query language, [28] for data and meta to signify a functional behavior and semantics. A temperature sensor data expressed as triples. JSONiq [29] could be useful as a query could report the temperature as a number, but we need to know that language for large amounts of JSON data. the corresponding interface is for a temperature in say, the Celcius scale. We could just call the interface Celsius, but this doesn’t allow Privacy and Security us to compare the semantics of different interfaces. First of all, we need globally unique names to avoid the risk of people indepen- Privacy is a very important topic for the Web of Things. Transport dently using the same name for different things. Secondly, we need layer security (TLS) can be used to hide communications from third a framework for rich descriptions of services, including the means parties. Service owners can set policies for who can access the APIs to distinguish different versions of a service. The Semantic Web exposed by the services they own. This is based upon a uniform [13] provides a solution to these requirements. treatment of identities together with strong authentication. A popupular interface definition language for defining Web stan- In the earlier example, Mary can set an access control policy that dards is the Web Interface Definition Language (Web IDL [24]). limits who can access her webcam. The starting point is to secure This currently lacks support for globally unique identifiers for inter- the connection between her webcam and the cloud based service face names, however, this could be added with a minor change to she wants to use. This involves mutual authentication between the the syntax. The basic syntax for Web IDL looks like: service in her home, and the one in the cloud. This can be based upon a secure exchange of public keys when the two services are [extended-attributes] bound together. interface identifier { If Mary wants to provide her friend John access, she now needs member definitions to learn the public key that his software will used to identify him. }; There are a number of ways in which that could happen. She could ask a mutually trusted service, e.g. a social network in which they is related to the services it depends upon. There is also a need for are both registered as friends. If she knows John’s email address, it descriptions relating to the confidentiality of the associated data may be possible to use the Web Finger framework, or John could sources, and the relationships between the people involved. This pass her his public key using an out of band mechanism, e.g. as a points to the utility of rich descriptions and a framework for reason- QRCode on a business card, or through an NFC based exchange ing over them. between their smart phones. People may want to set data usage policies for data derived from Apps and Services their services. This may take the form of restrictions on the purposes It is worth distinguishing between apps and services, where apps that data can be used for, how long it can be retained, and who it include a user interface that runs in a web browser, whereas services can be shared with. Such policies could be attached to the data just expose an API. Web page scripts can access this API directly in some way that is preserved as the data flows through a web of using a library that maps the API to the corresponding messages over services. Access control could also be sensitive to the context of HTTP or Web Sockets. This library can be generated automatically use, for instance, I might grant you detailed access to my location from the service’s metadata. Packaged services can include apps only during my working hours. There is a need for exceptions in and libraries for use with that service. This could be a complete web emergencies, so that people can be rescued and brought to safety. page, or a module for inclusion as part of a web page. Such modules One framework for handling access control decisions is XACML could be based upon Web Components [33]. Other possibilities [30]. This is an XML format for access control rules together include scripts that dynamically generate the markup as part of a with a processing model that separates policy decisions from pol- web page, or even PHP modules for server side inclusion. icy enforcement. According to Andras Cser at Forester Research, XACML is fading away [31]. This is in contrast to OAuth [32] Platform Tools and APIs which is steadily gaining in popularity. OAuth enables clients to The service platform needs to provide a means for end users and access server resources on behalf of a resource owner, and was developers to interact with the platform. The starting point is to introduced to allow end-users to authorize a website to access their register an account with the service cloud. End users could then resources on a separate website without needing to disclose the use web applications provided by the service cloud to search for credentials they use to authenticate to that site. services, to read reviews, to add comments and ratings, to purchase It is likely that the Web of Things will motivate the development and install services, and to bind them to match their specific needs. of an approach that is designed to work with a web of services. It Developers will want tools to create and maintain the services should be simple to make the service public, private to the owner, or they develop. These could run within web browsers using syntax accessible to closed set of people. This could involve named access colouring for document editors, and graphical tools for constructing control lists that are maintained by the owner or by a trusted third a web of services. Yahoo! Pipes provides a precedent [34]. You party. A further possibility would be to use public key certificates would need a tool for searching and browsing through services, and as an alternative to explicit access control lists – the certificate a graphical means for connecting them together. There is also a attests that someone is in a given set. A simple expression language need for analytic tools for monitoring the use of the services you could be used to attach conditions acting over an extensible set of provide. properties, e.g. the time of day. Privacy is dependent on the security of the platform and this is best done in depth so that attackers have to breach multiple layers of se- A Worked Example curity to achieve their objectives. The scripting environment should This section provides a sketch of a service for a networked security preclude the use of insecure language features, e.g. JavaScript’s camera, e.g. as shown in Figure 5. These are available at low cost eval. Services could specify what capabilities they need in advance, and feature motion detection, and pan, tilt and zoom control. Such as in the Android operating system. Robust execution of scripts is devices commonly include an HTTP server and can be controlled via likely to depend on valid data being passed to them. This is why it a web page accessed from this server. The number of simultaneous is important to consider how to include validity constraints as part users is limited to 5 visitors. The camera can be panned through 355 of the service API definition language, and for the service platform degrees and tilted through 120 degrees. to apply them and signal errors to the service scripts. A simplified API would allow for panning and tilting the camera, The platform could monitor services to detect irregular patterns viewing the video stream, and receiving notifications when a moving of behaviour. Specialized services could be used to examine newly object is detected in the field of view. Here is the WebIDL: installed or upgraded services for signatures of malware in much the same way that we are used to with the Microsoft Windows and enum Quality { "high", "medium", "low" }; Android operating systems. The Compose project is also looking at the potential for tracking interface WebCam { attribute float azimuth; provenance of data for controlling access based upon people’s trust attribute float elevation; relationships and the need to preserve confidentiality agreements. attribute Quality resolution; If company A and company B are direct competitors, then leaking readonly attribute DOMString videoURL; information from company A to company B will give the latter a po- callback motionDetectedCallback = void (); tential commercial advantage. If you have a consultancy agreement }; with company A, and I have a consultancy agreement with company B, then I should not be given access to services you provide which This definition lacks validity constraints on values, e.g. limiting are based upon confidential data from company A, even if you and I elevation to be between plus and minus 60 degrees. The camera can work for the same consultancy company, as otherwise I will be able be controlled from JavaScript by assigning values for the azimuth to share this data with company B to their commercial advantage. and elevation. These assignments map into HTTP POST requests, Reasoning about provenance requires some form of machine in- where the request payload is expressed as JSON, e.g. terpretable descriptions about how the data exposed by a service If it did, there would need to be a Dependency field with a list of dependencies. When Mary sets up the service, it needs to be bound to her webcam. This could be based upon a static IP address and port, or using a domain name and relying on dynamic DNS to work around dynamically assigned external IP addresses. For services that build upon other services, the binding process likewise needs to link to specific service instances. The service platform needs to provide an API for the binding process. This example needs extension to cover access control preferences. By default, the service is only accessible by its owner. If Mary wants to make it available to anyone, she needs to include the field Access with the value public. She could instead list the people she wants to give access to. The IDL example likewise needs extension to support namespaces for globally unique vocabularies, as explained earlier in this paper. Further work is needed to explore the potential for using JSON-LD for semantically rich descriptions of services that complement the API definition in an interface definition language. One possibility would be to use the ontology developed by the W3C Semantic Sensor Network Incubator Group [35]. 4. CONCLUSION This paper outlines an architecture for the Web of Things that blends the Internet of Things and the Semantic Web for distributed Figure 5: Remotely controllable camera from Shenzhen EasyN service platforms as a basis for open markets of services. The Technology Company. platform simplifies the effort needed for creating services by hiding details best handled at a different level of abstraction. This applies in particular to the use of HTTP for passing data between services. A range of programming languages will be needed, e.g. simple expressions for data conversions, scripting languages for flexibility, rule-based languages for logical inferences, and specialized lan- POST settings HTTP/1.1 guages for exploiting GPUs for efficient operations on numeric data. Host: example.com JavaScript is expected to be a popular choice given its existing use in User-Agent: Mozilla/5.0 (X11; Linux x86_64) web applications. It makes sense for the service platform to re-use Keep-Alive: 300 APIs that developers are familiar with from client-side scripts. Connection: keep-alive Content-Type: application/json Content-Length: 49 5. ACKNOWLEDGMENTS This work was supported by the European Commission through {"azimuth":180,"elevation":0,"resolution":"high"} funding for the FP7 Compose project (FP7-317862) [16]. The videoURL is a readonly property that can be used to display the video, e.g. in an HTML5 video element. The motionDetected- 6. REFERENCES Callback property can be set to a method that you want called when [1] Uniform Resource Identifiers. the camera detects something moving in its field of view. The API RFC3986, January 2005, URI Syntax. could be easily extended to allow you to remotely control the bright- http://www.rfc-editor.org/rfc/rfc3986.txt ness, contrast, saturation, and hue. Further possibilities include RFC3305, August 2002, Report from the Joint W3C/IETF URI saving video to the cloud and logging motion detection events. Planning Interest Group: Uniform Resource Identifiers (URIs), URLs, The service description is expressed in JSON. The following is and Uniform Resource Names (URNs): Clarifications and over simplistic, but gives a basic idea of what is involved: Recommendations. http://tools.ietf.org/html/rfc3305 [2] Hypertext transfer protocol (HTTP 1.1). RFC2616, June 1999. { http://www.ietf.org/rfc/rfc2616.txt. "Developer" : "Shenzhen EasyN Technology Company", [3] Hypertext Markup Language (HTML5) "Version" : "1.0.0", http://www.w3.org/TR/html5. "Owner" : "Mary Smith", [4] Cascading Style Sheets (CSS) "API" : "webcam.idl", http://www.w3.org/Style/CSS/Overview.en.html. "Behavior" : "behavior.js" [5] JavaScript – the familiar name for the ECMAScript programming } language http://www.ecmascript.org/docs.php. [6] W3C Web Architecture. W3C Recommendation, 15 December 2004. The names of the developer and owner aren’t sufficient as unique http://www.w3.org/TR/webarch/. identifiers. One possibility is to use email addresses as these would [7] Companies offering GPU cloud computing services. http://www.nvidia.com/object/gpu-cloud-computing- work across service clouds as compared to account names that are services.html. internal to a given cloud. The API field links to the IDL for the [8] GPU powered neural networks for image recognition API the service exposes. The Behavior field links to the script that http://www.pcworld.com/article/2042339/nvidias-gpu- implements the API. This service doesn’t depend on other services. neural-network-tops-google.html. [9] Scale Free Networks Wikipedia article. [22] – Asynchronous messaging protocol and API http://en.wikipedia.org/wiki/Scale-free_network http://tools.ietf.org/html/rfc6455 and [10] Small-World Network Wikipedia article. http://www.w3.org/TR/websockets/ http://en.wikipedia.org/wiki/Small-world_network [23] Web Real-Time Commmunications Working Group [11] According to Kevin Ashton, he coined the term "Internet of Things" in http://www.w3.org/2011/04/webrtc/ 1999 in a presentation to P&G, see his article on the Internet of Things [24] Web Interface Definition Language (Web IDL) dated 22 June 2009. http://www.rfidjournal.com/articles/ http://www.w3.org/TR/WebIDL/ view?4986KevinAshton,22June2009. [25] Web Application Description Language (WADL) [12] Invited presentation to students at the University of the West of http://en.wikipedia.org/wiki/Web_Application_ England, 26 September 2007, Description_Language http://www.w3.org/2007/Talks/0926-dsr-WDC/slides.pdf [26] Web Services Description Language (WSDL) 1.1 [13] The Semantic Web – a framework for machine interpretable data and http://www.w3.org/TR/wsdl metadata based upon universal identifiers, and triples, http://www.w3.org/standards/semanticweb/. http://www.w3.org/TR/soap12-part1/ [14] ABB, Bosch, Cisco & LG: Open Standard for Smart Homes, 1 [28] SPARQL Query Language for RDF, v1.1 November 2013, http://www.w3.org/TR/sparql11-overview/ http://www.bosch.lt/en/lt/newsroom_17/news_16/news- [29] The JSON Query Language (JSONiq) http://www.jsoniq.org/ detail-page_38208.php. [30] Introduction to XACML [15] Cross Origin Resource Sharing (CORS), http://en.wikipedia.org/wiki/XACML http://www.w3.org/TR/cors/. [31] XACML is dead, Andras Cser, 7 May 2013 [16] EU FP7 Compose Project, http://www.compose-project.eu/. http://blogs.forrester.com/andras_cser/13-05-07- [17] EU FP7 Webinos Project, http://www.webinos.org/. xacml_is_dead [18] JSON – JavaScript Object Notation http://json-rpc.org/ [32] Introduction to OAuth http://en.wikipedia.org/wiki/OAuth [19] JSON-LD – Linked Data in JavaScript Object Notation [33] Introduction to Web Components http://www.w3.org/TR/json-ld/, and http://json-ld.org/ http://www.w3.org/TR/components-intro/ [20] JSON-RPC – Remote procedure calls using JSON messages [34] Yahoo! Pipes Tutorial http://pipes.tigit.co.uk/ http://json-rpc.org/ [35] Semantic Sensor Network Ontology [21] Long-Lived HTTP Streams http://www.w3.org/2005/Incubator/ssn/ssnx/ssn http://ajaxpatterns.org/HTTP_Streaming