A triplestore or RDF store is a purpose-built database for the storage and retrieval of triples through semantic queries. A triple is 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 have been built as database engines from scratch, while others have been built on top of existing commercial relational database engines (such as SQL-based) or NoSQL document-oriented database engines. 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. It seems likely that native triplestores will have the advantage for performance over a longer period of time. A difficulty with implementing triplestores over SQL is that although "triples" may thus be "stored", implementing efficient querying of a graph-based RDF model (such as mapping from SPARQL) onto SQL queries is difficult.
Related database types
Adding a name to the triple makes a "quad store" or named graph.
A graph database has a more generalized structure than a triplestore, using graph structures with nodes, edges, and properties to represent and store data. Graph databases might provide index-free adjacency, meaning every element contains a direct pointer to its adjacent elements, and no index lookups are necessary. General graph databases that can store any graph are distinct from specialized graph databases such as triplestores and network databases.
- Entity–relationship model
- ISO/IEC 19788 – In a MLR (metadata for learning resources) triple, the subject is always the literal of an identifier of the learning resource, such as a URI or ISBN. The predicate is also a literal, the MLR data element specification identifier. Finally, the object can be a literal or a resource class (a set of accepted values, such as a list of terms identifiers from a controlled vocabulary list).
- Metadata § Syntax – The first two elements of the class-attribute-value triple (class, attribute) are pieces of some structural metadata having a defined semantic. The third element is a value, preferably from some controlled vocabulary.
- Outline of databases
- RDFLib – a Python library for working with RDF including both in-memory and persistent Graph backends, supporting subject-predicate-object triple pattern matching
- Semantic data model
- Semantic wiki and Semantic MediaWiki — two examples of subject-predicate-object support for wikis, advanced query support, and implementations by many large organizations
- SPARQL – W3C specification involving subject-predicate-object triples
- Entity–attribute–value_model is a similar approach to data modeling.
- TripleStore, Jack Rusher, Simple Knowledge Organization System § SWAD-Europe (2002–2004), Workshop on Semantic Web Storage and Retrieval – Position Papers.
- US 2003145022, "Storage and Management of Semi-structured Data" : use of SQL relational databases as an RDF triple store.
- Cagle, Kurt. "Semantics + Search : MarkLogic 7 Gets RDF". Retrieved 7 August 2015.
- Broekstra, Jeen (19 September 2007). "The importance of SPARQL can not be overestimated".
- 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
- Metaweb's Graphd tuple store (owned by Google) used in Freebase and Knowledge Graph