A triplestore is a purpose-built database for the storage and retrieval of triples,[1] a triple being a data entity composed of subject-predicate-object, like "Bob is 35" or "Bob knows Fred".
Much like a relational database, one stores information in a triplestore and retrieves it via a query language. Unlike a relational database, a triplestore is optimized for the storage and retrieval of triples. In addition to queries, triples can usually be imported/exported using Resource Description Framework (RDF) and other formats.
Some triplestores can store billions of triples.[2] The performance of a particular triplestore can be measured with the Lehigh University Benchmark (LUBM),[3] or with real data from UniProt.
Contents |
Some triplestores have been built as database engines from scratch, while others have been built on top of existing commercial relational database engines (i.e. SQL-based).[4] Like the early development of online analytical processing (OLAP) databases, this intermediate approach allowed large and powerful database engines to be constructed for little programming effort in the initial phases of triplestore development. Long-term though it seems likely that native triplestores will have the advantage for performance. A difficulty with implementing triplestores over SQL is that although triples may thus be stored, implementing efficient querying of a graph-based RDF model (i.e. mapping from SPARQL) onto SQL queries is difficult.[5]
The following table is an overview triplestores, their technical implementation, support for the SPARQL World Wide Web Consortium (W3C) recommendations, and available application programming interfaces (API).
Solution Name | Internal storage method | SPARQL support | SPARQL/Update support | SPARQL Protocol Endpoint | Supported API's |
---|---|---|---|---|---|
AllegroGraph | Graph | √ | √ | √ | For most modern programming languages |
RDF API for PHP | 3rd party | √ | PHP | ||
ARQ | 3rd party | √ | √ | Java | |
Sesame 2 | 3rd party | √ | Java | ||
RDF::Query | 3rd party | √ | Perl | ||
Twinql | 3rd party | √ | Lisp | ||
SPARQL Engine | 3rd party | √ | Java | ||
KAON2 | 3rd party | √ | Java | ||
Pellet | 3rd party | √ | Java | ||
Corese | 3rd party | √ | Java | ||
OpenLink Virtuoso | Relational | √ | √ | √ | For most modern programming languages |
Ontotext OWLIM | 3rd party | √ | √ | √ | Java |
ARC2 | 3rd party | √ | √ | √ | PHP |
D2R Server | 3rd party | √ | √ | √ | Java |
Open Anzo | 3rd party | √ | √ | Java, JavaScript, .NET Framework | |
BrightstarDB | Graph data model in Heap file | √ | .NET Framework or Web Service | ||
Hercules | Stored in web browser | √ | JavaScript | ||
4store | Triplestore | √ | √ | √ | Command line only |
StrixDB | Triplestore | √ | √ | √ | Lua |
OntoBroker | Triplestore | √ | √ | √ | Java |
BigData | Triplestore | √ | Java | ||
Dydra | Graph database in the cloud SaaS | √ | √ | √ | REST API |
Jena | Tuple store | √ | √ | √ | Java |
Mulgara | 3rd party | √ | Java or REST API | ||
Oracle DB Enterprise Ed. | Object-relational | √ | √ | √ | For most modern programming languages |
Parliament | Triplestore | √ | √ | √ | Java or C++ |
Pointrel | Triplestore | Python | |||
RAP | In-memory triplestore or heap file | √ | PHP | ||
RDF-3X | Triplestore | √ | Command line only | ||
RDFBroker | 3rd party | Java | |||
Redland, Redstore | 3rd party | √ | √ | √ | C |
Intellidimension Semantics Platform 2.0 | 3rd party | √ | .NET Framework | ||
SemWeb.NET | 3rd party | √ | √ | .NET Framework | |
Soprano | 3rd party | C++ | |||
Stardog | 3rd party | √ | √ | Java, Groovy | |
YARS | 3rd party | HTTP, JDBC |
|