Skip to content
/ SEPA Public
forked from vaimee/SEPA

A JAVA implementation of the SPARQL Event Processing Architecture including the engine, APIs and tools

Notifications You must be signed in to change notification settings

Alepazz/SEPA

 
 

Repository files navigation

SEPA - SPARQL Event Processing Architecture

Build Status

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.

Installation

  • Download the SEPA Engine and run it: java -jar engine-x.y.z.jar

  • Download Blazegraph (or use any other SPARQL 1.1 Protocol compliant service) and run it as shown here

Configuration

The SEPA engine uses two JSON configuration files: engine.jpar and endpoint.jpar (included in the SEPA Engine release distribution). In the repository you will find some versions of endpoint-{something}.jpar file. According to your underlying endpoint, you have to rename the correct file to endpoint.jpar. The default version of endpoint.jpar (will be removed soon!) configures the engine to use use a local running instance of Blazegraph as SPARQL 1.1 Protocol Service.

{
	"parameters": {
		"host": "localhost",
		"ports": {
			"http": 9999
		},
		"paths": {
			"update": "/blazegraph/namespace/kb/sparql",
			"query": "/blazegraph/namespace/kb/sparql"
		},
		"methods": {
			"query": "POST",
			"update": "URL_ENCODED_POST"
		},
		"formats": {
			"update": "HTML",
			"query": "JSON"
		}
	}
}

The default version of engine.jpar configures the engine to listen for incoming SPARQL 1.1 SE Protocol requests at the following URLs:

  1. Query: http://localhost:8000/query
  2. Update: http://localhost:8000/update
  3. Subscribe/Unsubscribe: ws://localhost:9000/subscribe
  4. SECURE Query: https://localhost:8443/secure/query
  5. SECURE Update: https://localhost:8443/secure/update
  6. SECURE Subscribe/Unsubscribe: wss://localhost:9443/secure/subscribe
  7. Regitration: https://localhost:8443/oauth/register
  8. Token request: https://localhost:8443/oauth/token
{
	"parameters": {
		"timeouts": {
			"scheduling": 0,
			"queueSize": 1000,
			"keepalive": 5000,
			"http": 5000
		},
		"ports": {
			"http": 8000,
			"ws": 9000,
			"https": 8443,
			"wss": 9443
		},
		"paths": {
			"update": "/update",
			"query": "/query",
			"subscribe": "/subscribe",
			"register": "/oauth/register",
			"tokenRequest": "/oauth/token",
			"securePath" : "/secure"
		}
	}
}

The engine uses a JKS for storing the keys and certificates for SSL and JWT signing/verification. A default sepa.jks is provided including a single X.509 certificate (the password for both the store and the key is: sepa2017). If you face problems using the provided JKS, please delete the sepa.jks file and create a new one as follows: keytool -genkey -keyalg RSA -alias sepakey -keystore sepa.jks -storepass sepa2017 -validity 360 -keysize 2048

Usage

The SEPA engine allows to use a user generated JKS. Run java -jar engine-x.y.z.jar -help for a list of options. The Java Keytool can be used to create, access and modify a JKS.

The SEPA engine is also distributed with a default JMX configuration jmx.properties (including the jmxremote.password and jmxremote.access files for password and user grants). Remember to change password file permissions using: chmod 600 jmxremote.password. To enable remote JMX, the engine must be run as follows: java -Dcom.sun.management.config.file=jmx.properties -jar engine-x.y.z.jar. Using jconsole is possible to monitor and control the most important engine parameters. By default, the port is 5555 and the root:root credentials grant full control (read/write).

Contributing

  1. Fork it!
  2. Create your feature branch: git checkout -b my-new-feature
  3. Check some IDE specific instruction below
  4. Commit your changes: git commit -am 'Add some feature'
  5. Push to the branch: git push origin my-new-feature
  6. Submit a pull request :D

Clone in Eclipse

  1. Open Eclipse
  2. File > Import > Maven
  3. Choose "Check out Maven Projects from SCM"
  4. In the field SCM URL choose 'git' and add the clone address from Github. If 'git' is not found, tap into "Find more SCM connectors in the m2e Marketplace"
  5. go on... The project is cloned. Enjoy!

History

SEPA has been inspired and influenced by Smart-M3. SEPA authors have been involved in the development of Smart-M3 since its origin.

The main differences beetween SEPA and Smart-M3 are the protocol (now compliant with the SPARQL 1.1 Protocol) and the introduction of a security layer (based on TLS and JSON Web Token for client authentication).

All the SEPA software components have been implemented from scratch.

Credits

SEPA stands for SPARQL Event Processing Architecture. SEPA is promoted and maintained by the Web of Things Research Group @ ARCES, the Advanced Research Center on Electronic Systems "Ercole De Castro" of the University of Bologna.

License

SEPA Engine is released under the GNU GPL, SEPA APIs are released under the GNU LGPL

About

A JAVA implementation of the SPARQL Event Processing Architecture including the engine, APIs and tools

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java 100.0%