Skip to content
Seki is middleware/a front-end for connecting to an independent SPARQL server using node.js
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

Seki is middleware/a front-end to an independent SPARQL server using node.js

No really, what is it?

It operates as a Web server, building queries from HTTP requests (from a browser or another service) and passing them to the SPARQL server, formatting the results (to HTML, JSON...) and passing them back to the client.

Warning - so far Seki is very experimental/incomplete, don't expect anything to work out of the box. (It is under active development, so watch this space and/or @danja on Twitter.


Primarily I'm developing Seki as a testbed to see what can be achieved using Web tech.

Generally speaking Seki could be used for pretty much any Web system that might otherwise use a HTTP server and database. Because an RDF/SPARQL server/DB is used for the backend, Seki is very webby at its core, meaning server-server communications (e.g. addressing remote Linked Data) will be simplified.

In the near term the plan is to clone various well-known kinds of apps and see what can be added thanks to the Semantic Web goodness. As most apps require the following in some form, this functionality is high on the todo list:

  • simple content managent (largely implemented)
  • user access control (in-progress)

Also high on the list is to provide query federation facilities, to e.g. automatically catalog/annotate/expand documents.

Later the plan is to set Seki up as a general-purpose Web agent container, allow custom behaviour to be defined using pluggable scripts with declarative configuration.


  • Server
  • Client
  • Routing engine (based on a rules engine)
  • Templater
  • User Manager (in progress)
  • Plugin script runner (todo)

Block Diagram

For updates see Seki on G+

Also TODO List

Note 2013-11-30 : there's a in each directory giving overview of its contents.

Note 2013-08-27 : packaging etc. still in progress, but I have managed to get a live instance running on OpenShift (Red Hat's hosting service) at, backed by a Fuseki store hosted at (using ). The live Seki code is structured differently than that in git here, but as that version works (!) I'll merge it back in here asap.

Note 2013-08-15 : currently trying to package as npm and tidy up dependencies - may be a messfor a little while

If (were it live) you pointed a browser at it would take "" to build a query to find out about that resource - in the data store it will have a title, content etc. - which then get turned into HTML to show in the browser.

There is a form to allow POSTing, inserting title, content etc. for a given resource into the RDF store (there's no authentication as yet). Files can also be served from the filesystem.

It has been built against a Fuseki server, which uses protocols/query syntax according to the latest SPARQL 1.1 drafts, and so it should be reusable with any SPARQL server.

(Note that the current version includes a little SAX-based XML SPARQL results to JSON converter, this was for demo purposes (don't ask!) - future versions may use JSON SPARQL results directly).

At present it considers all resources to be information resources - the ones that get displayed are instances of sioc:Post. Descriptions of those resources are contained in little named graphs (named by the resources in question). The Fuseki config includes #dataset tdb:unionDefaultGraph true so SPARQL queries can be applied over a (virtual) merge of all the named graphs.

After the tutorial version is stable the plan is to use it as an experimental Read/Write Data Web testbed, e.g. adding support for the linked data API, RDF affordances play.

See contents.txt in individual folders for description.

Installation/running is easy :

  • install node.js (or copy node.exe into the src dir)
  • run Fuseki using bin/run-fuseki.bat (make executable first on *nix)
  • in another terminal bin/run-seki.bat (or node Seki.js)
  • point a browser at http://localhost:8888/seki/

post data should have URIs of the form the Fuseki server (SPARQL endpoint) will be accessible at http://localhost:3030/

localhost:8888/store/ will proxy to the store

Exploring data from Fuseki, first select the /seki dataset through the Control Panel, then go to the query panel with e.g. SELECT * WHERE { GRAPH ?graph { ?s ?p ?o } }


Added bits for Grunt, Vows plus grunt-vows, also APIeasy, though not yet runnable, related scripts will be in /bin (also will set up 'npm test').

docco-husky used for source doc generation.

Danny 2011-2013

You can’t perform that action at this time.