La fortuna non esiste: esiste il momento in cui il talento incontra l'occasione.
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.
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.
Are you in hurry? You do not have time to read the following sections? You cannot wait trying SEPA? 😄
Here the steps to follow:
git clone https://github.com/vaimee/sepatools.git
(ordownload
a ZIP if you just want to evaluate it)- Move to the
build
directory of the repository (firstunzip
the archive if you have preferred to download it on step 1) - Open a shell (a command prompt) from that directory and type:
java -jar blazegraph.jar
- Open a new shell (a command prompt) from the same directory and type:
java -jar SEPAEngine.jar -Dcom.sun.management.config.file=management.properties
- 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 typejconsole
. 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 ). Now you can see (and change) some engine parameters.
The SEPA software framework is shown in the following figure.
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.
☕ SEPA Engine ☕
If you want to save your time, reuse and share components and contribute to the community, please follow this pattern:
⭐ Start implementing a new SEPApp ⭐
🐍 Python
📱 C
💎 Ruby
Want more? Contribute! 👍
Let's start with an essential tool: the SEPA Dashboard 👏
☕ Java
Want more? Contribute! 👍
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 | 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 |