Skip to content
Luca Roffia edited this page Jun 7, 2017 · 25 revisions

La fortuna non esiste: esiste il momento in cui il talento incontra l'occasione.

Lucio Anneo Seneca

SPARQL Event Processing Architecture (SEPA)

SEPA is a publish-subscribe architecture designed to support information level interoperability. The architecture is built on top of a generic SPARQL endpoint where publishers and subscribers use standard SPARQL Updates and Queries. Notifications about events (i.e., changes in the RDF knowledge base) are expressed in terms of added and removed SPARQL binding results since the previous notification, limiting the network overhead and facilitating notification processing at subscriber side. SEPA can support the development of smart space applications for the Web of Things (WoT)

The main drawback of Semantic Web technologies concerns the low level of performance that makes it difficult to achieve responsiveness and scalability required in many IoT applications…Semantic Web technologies have been designed to process data sets consisting of big amounts of Resource Description Framework (RDF) triples that evolve constantly but at a much slower rate compared to the rate of elementary events occurring in the physical environment.

A Semantic Publish-Subscribe Architecture for the Internet of Things, Luca Roffia, Francesco Morandi, Jussi Kiljander, Alfredo D’Elia, Fabio Vergari, Fabio Viola, Luciano Bononi, and Tullio Salmon Cinotti, IEEE Internet of Things Journal, DOI: 10.1109/JIOT.2016.2587380)

The SEPA is framed within W3C Recommendations as shown in the following figure.

Please refer to documentation for a set of W3C Recommendation drafts we are writing about the SEPA and follow the link for more details about the SEPA software framework.

Software framework

The SEPA software framework is shown in the following figure.

The SEPA software framework includes the following elements: engine, APIs, Application Design Pattern Library, and tools. The engine is the core component (server side) of the architecture. It implements the publish-subscribe mechanism and the SPARQL 1.1 SE Protocol. APIs implementing the client side of the SPARQL 1.1 SE Protocol are available for several programming languages. Developers can also adopt the proposed application design pattern, based on the Producer-Aggregator-Consumer pattern. An application is specified by a JSON file (JSAP, JSON SPARQL Application Profile) including the SPARQL updates and SPARQL subscribes used by the application. JSAP specification can be found here. The SEPA, as an interoperability platform, aims supporting the development of Web of Things applications.

Engine

The SEPA engine is designed to run on top of a SPARQL 1.1 Processing Service.

There are several SPARQL endpoint implementations and the number of online SPARQL endopoints is increasing. The SEPA can be locally evaluated using one of them, like Virtuoso, Fuseki or Blazegraph just to name a few. The current implementation has been tested on Blazegraph.

API - SPARQL 1.1 SE Protocol client side

TODO

API - Application Design Pattern Library

TODO

Contact info

SEPA stands for SPARQL Event Processing Architecture and represent the main research area of the Web of Things working group of ARCES (Advanced Research Center on Electronic Systems) - University of Bologna. This repository is maintained by:

Name Email On Github
Luca Roffia luca DOT roffia AT unibo DOT it @lroffia
Fabio Viola fabio DOT viola AT unibo DOT it @desmovalvo
Francesco Antoniazzi francesco DOT antoniazzi AT unibo DOT it @fr4ncidir
Clone this wiki locally