This repository holds several open-source projects created by Revelytix, Inc.
Spark is a Java SPARQL API. SPARQL is a query language for RDF, commonly used to access data in semantic web applications.
Jena and Sesame are popular open-source Java frameworks for working with RDF and SPARQL, however these frameworks tend to be both too much and not enough for some common needs. Both frameworks provide the ability to model RDF datasets, import/export a variety of formats, plug in custom storage engines, and execute queries over models with those storage engines.
After working with Jena, Sesame, a variety or triple stores, and our own SPARQL products, we concluded that what was missing is a JDBC-style interface for connection-oriented access to a remote SPARQL processor. Jena and Sesame both open up storage APIs (for potentially remote stores) but those are at a lower level; the client API is assumed to work at the levels of graphs. The SPARQL HTTP protocol is widely used and supported but offers no client-side programming API or server-side library, does not support connection-oriented use cases, and relies on results sent in a text form (usually XML or JSON) so is not as performant as triple-store specific APIs.
In light of this gap, Spark is:
Spark consists of the following sub-projects (each is a separate artifact):
Sherpa is a high-performance, language-agnostic, binary protocol for SPARQL processor communication. It aims to avoid the costs associated with the SPARQL Protocol (text-based, single-shot RPC style) and provide an alternative. Sherpa uses Avro to define the protocol and provide interop for multiple languages. Avro currently supports Java, C, C++, C#, Ruby, Python, and PHP.
Sherpa consists of the following sub-projects (each is a separate artifact):