Triplestore
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]
Implementation
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).[3] 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.[4]
List of implementations
Technical overview
The following table is an overview of available triplestores, their technical implementation, support for the SPARQL World Wide Web Consortium (W3C) recommendations, and available application programming interfaces (API).
Solution Name | Native storage | Native SPARQL support | Native SPARQL/Update support | Native SPARQL Protocol Endpoint | Native APIs |
---|---|---|---|---|---|
4store | Triplestore | √ | √ | √ | Command line only |
AllegroGraph | Graph | √ | √ | √ | For most modern programming languages |
ARC2 | 3rd party | √ | √ | √ | PHP |
ARQ | 3rd party | √ | √ | Java | |
BigData | Triplestore | √ | √ | √ | Java |
BrightstarDB | Graph data model in Heap file | √ | .NET Framework or Web Service | ||
Corese | 3rd party | √ | Java | ||
D2R Server | 3rd party | √ | √ | √ | Java |
Dydra | Graph database in the cloud SaaS | √ | √ | √ | REST API |
Hercules | Stored in web browser | √ | JavaScript | ||
IBM DB2 | Object-relational | Java | |||
Intellidimension Semantics Platform 2.0 | 3rd party | √ | .NET Framework | ||
Jena | Tuple store | √ | √ | √ | Java |
KAON2 | 3rd party | √ | Java | ||
Meronymy SPARQL Database Server | Triplestore / Quadstore | √ | √ | √ | For most modern programming languages |
Mulgara | 3rd party | √ | Java or REST API | ||
OntoBroker | Triplestore | √ | √ | √ | Java |
Ontotext OWLIM | 3rd party | √ | √ | √ | Java |
Open Anzo | 3rd party | √ | √ | Java, JavaScript, .NET Framework | |
OpenLink Virtuoso | Hybrid (Relational Tables and Relational Property Graphs) | √ | √ | √ | ODBC, JDBC, ADO.NET, OLE DB, XMLA, HTTP, etc., serving most modern programming languages including C, PHP, Perl, Python, Ruby, Java, JavaScript, .NET Framework, etc. |
Oracle DB Enterprise Ed. | Object-relational | For most modern programming languages | |||
Parliament | 3rd party | √ | √ | √ | Java or C++ |
Pellet | 3rd party | √ | Java | ||
Pointrel | Triplestore | Python | |||
Profium Sense | In-memory triplestore | √ | √ | Java | |
RAP | In-memory triplestore or heap file | √ | PHP | ||
RDF API for PHP | 3rd party | √ | PHP | ||
RDF::Query | 3rd party | √ | √ | √ | Perl |
RDF-3X | Triplestore | √ | Command line only | ||
RDFBroker | 3rd party | Java | |||
Redland, Redstore | 3rd party | √ | √ | √ | C |
SemWeb.NET | 3rd party | √ | √ | .NET Framework | |
Sesame | 3rd party | √ | √ | √ | Java |
Soprano | 3rd party | C++ | |||
SPARQL Engine | 3rd party | √ | Java | ||
Stardog | 3rd party | √ | √ | Java, Groovy | |
StrixDB | Triplestore | √ | √ | √ | Lua |
Twinql | 3rd party | √ | Lisp | ||
YARS | 3rd party | HTTP, JDBC |
See also
- Freebase uses a triplestore called graphd[citation needed]
- Named graph a.k.a. "quad store"
References
- ^ TripleStore, Jack Rusher, Semantic Web Advanced Development for Europe (SWAD-Europe), Workshop on Semantic Web Storage and Retrieval - Position Papers
- ^ Tom Ilube (2007-11-30), Semantic Technologies Really Do Pay Off, Semantic Universe
- ^ US 2003145022 Storage and Management of Semi-structured Data (Use of SQL relational databases as an RDF triple store), 2003
- ^ Broekstra, Jeen (19 September 2007). "The importance of SPARQL can not be overestimated".
- ^ sourceforge.net/projects/smart-m3
- ^ http://librdf.org/LICENSE.html
- ^ http://sourceforge.net/projects/soprano/
- ^ sourceforge.net/projects/smart-m3
External links
- A list of large triplestores
- Lehigh University Benchmark (LUBM)
- How RDF Databases Differ from Other NoSQL Solutions
- W3C SPARQL Working Group, was RDF Data Access Working Group
- SPARQL Query language
- SPARQL Protocol
- SPARQL 1.1 Update W3C Recommendation 21 March 2013