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] The performance of a particular triplestore can be measured with the Lehigh University Benchmark (LUBM),[3] or with real data from UniProt.
Contents |
[edit] 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).[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]
[edit] List of implementations
[edit] Technical overview
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 |
[edit] See also
- Freebase, uses a triplestore called graphd.[6]
- Named graphs
[edit] 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, http://www.semanticuniverse.com/articles-semantic-technologies-really-do-pay.html
- ^ Lehigh University Triplestore Benchmark
- ^ 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". http://www.semantic-web.at/1.36.resource.90.jeen-broekstra-x22-the-importance-of-sparql-can-not-be-overestimated-x22.htm.
- ^ "a-brief-tour-of-graphd". http://blog.freebase.com/2008/04/09/a-brief-tour-of-graphd/. Retrieved 2009-07-08.
[edit] External links
- A list of large triplestores
- Lehigh University Benchmark (LUBM)
- Semantic Systems Biology
- ARC's RDF Store is built using PHP with MySQL as the backend for the triplestore. It also provides a SPARQL endpoint for access and updating of stored triples.
- 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 Working Draft from W3C SPARQL Working Group
|
|||||||||||