Skip to content

arces-wot/sepatools

Repository files navigation

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 in smart space applications for the Internet of Things (IoT). 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.

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.

alt text

Please refer to vaimee-documentation for a set of W3C Recommendation drafts we are writing about the SEPA. The SEPA, as an interoperability platform, aims supporting the development of Web of Things applications.

HOW TO 📄

Are you in hurry? You do not have time to read the following sections? You cannot wait trying SEPA? 😄

Here the steps to follow:

  1. git clone https://github.com/vaimee/sepatools.git (or download a ZIP if you just want to evaluate it)
  2. Move to the build directory of the repository (first unzip the archive if you have preferred to download it on step 1)
  3. Open a shell (a command prompt) from that directory and type: java -jar blazegraph.jar
  4. Open a new shell (a command prompt) from the same directory and type: java -jar SEPAEngine.jar -Dcom.sun.management.config.file=management.properties
  5. The -Dcom.sun.management.config.file=management.properties command line argument allows to monitor the SEPA Engine using JMX. You can open a new shell (yes, the third one...sorry for that 😄) and type jconsole . Once the console windows is up, select the Remote Process checkbox, type localhost:5555 and use root as username and password (this is just a demo :bowtie:). Now you can see (and change) some engine parameters.

SEPA framework 🐼

The SEPA software framework is shown in the following figure.

alt text

SEPA Engine 🐶

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

alt text

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.

SEPA Engine

SEPA APIs - including Application Design Pattern (ADP) libraries 🐇

If you want to save your time, reuse and share components and contribute to the community, please follow this pattern:

alt text

⭐ Start implementing a new SEPApp

Java API Java ADP Library

🐍 Python

📱 C

💎 Ruby

Want more? Contribute! 👍

SEPA Tools

Let's start with an essential tool: the SEPA Dashboard 👏

Java

🍦 JavaScript

Want more? Contribute! 👍

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