This is a comparison of triplestores , also known as subject-predicate-object databases . Some of these database management systems have been built as database engines from scratch, while others have been built on top of existing commercial relational database engines (e.g., SQL-based). [1] 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 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 (e.g., mapping from SPARQL) onto SQL queries is difficult. [2]
Name | Developed in language | Latest Version | Latest Release Date | Licence |
---|---|---|---|---|
3store | C | 3.0.17 [3] | 2006-07-17 | GNU GPL |
Akutan | Go | ? | ? | Apache 2 |
AllegroGraph | Common Lisp | 7.2.0 [4] | 2021-10-15 | Proprietary |
AnzoGraph | C/C++ | 4.1.0 | 2019-01-30 | Proprietary |
Apache Jena | Java | 4.5.0 [5] | 2022-05-01 | Apache 2 |
Apache Rya | Java | 4.0.1 [6] | 2020-12-22 | Apache 2 |
ARC2 | PHP | 2.5.1 [7] | 2020-06-19 | W3C Software License or GPL |
Attean | Perl | 0.030 [8] | 2021-02-06 | Artistic or GPL-1+ |
Blazegraph | Java | 2.1.5 [9] | 2019-03-19 | GNU GPL (v.2) |
BrightstarDB | C# | 1.14.0-alpha03 [10] | 2019-08-18 | MIT |
Cayley | Go | 0.7.7 [11] | 2019-10-15 | Apache 2 |
CM-Well | Scala | 1.5.170 [12] | 2020-03-24 | Apache 2 |
ClioPatria | SWI-Prolog, C | 3.1.1 [13] | 2017-09-06 | GNU GPL (v.2) |
Datomic | Clojure | 535-8812 [14] | 2019-10-01 | Proprietary |
Dydra | Common Lisp, C++ | ? | ? | Proprietary |
Enterlab SimpleGraph | Java | ? | ? | EPL |
gStore | C++ | 0.7.2 [15] | 2018-11-04 | BSD |
Ontotext GraphDB | Java | 9.9.1 [16] | 2021-09-10 | Proprietary |
Halyard | Java | 3.2 [17] | 2019-12-05 | Apache 2 |
IBM Db2 | Java, SQL | 11.5 [18] | ? | |
KiWi (Apache Marmotta) | Java | 3.4.0 [19] | 2018-06-12 | Apache 2 |
MarkLogic | C++ | 10.0-1 [20] | 2019-05 | Proprietary |
Mulgara | Java | 2.1.13 [21] | 2012-01-10 | OSL, moving to Apache 2 |
Amazon Neptune | ? | 1.0.5.1 [22] | 2021-10-01 | Proprietary |
NitrosBase | C++ | 2.0 | 2018-12-3 | Proprietary |
OntoQuad RDF Server | C++ | ? | ? | |
OpenAnzo | Java | 3.2.0 [23] | 2010-03-11 | EPL |
OpenLink Virtuoso | C | 8.3 (Commercial); [24] 7.2.6 (Open Source) [25] | 2018-10-22 ; 2021-06-22 | GPL v2 or Commercial |
Oracle | Java, PL/SQL, SQL | 21c | 2020-12-08 | Commercial |
Oxigraph | Rust | 0.3.2 [26] | 2022-04-25 | Apache 2 or MIT [27] |
Parliament | Java, C++ | 2.7.13 [28] | 2019-05-07 | BSD license |
Pointrel System | Java, Python | 20090201 [29] | 2013-02-21 | GNU LGPL [30] |
Profium Sense | Java | 7.0 | 2018-04 | |
RAP | PHP | 0.9.6 [31] | 2008-02-29 | |
RDF::Core | Perl | 0.5.1 [32] | 2007-02-19 | |
RDF::Trine | Perl | 1.019 [33] | 2018-01-05 | Artistic or GPL-1+ |
RDF-3X | C++ | 0.3.8 [34] | 2013-11-22 | CC-BY-NC-SA 3.0 |
Eclipse RDF4J | Java | 3.7.5 [35] | 2022-03-06 | Eclipse Distribution License (EDL) |
RDFBroker | Java | ? | 2009-01-14 [36] | |
RDFLib | Python | 6.1.1 [37] | 2021-12-20 | BSD |
RDFox | C++ | 5.5 [38] | 2021-10-26 [39] | Proprietary |
Redland | C | 1.0.17 [40] | 2014-05-10 | Apache or LGPL or GPL [41] |
RedStore | C | 0.5.4 [42] | 2011-10-27 | GNU GPL |
Semantics Platform | C# | 2.0 [43] | 2010-06-17 | |
SemWeb-DotNet | C# | ? | 2014-08-11 [44] | |
SiDiF - Simple Data Interchange Format - Educational TripleStore | Java | 0.0.9 [45] | 2018-01-14 | Apache 2 |
Smart-M3 | Python, Java, C, C# | 0.5.0 [46] | 2017-01-01 | BSD [47] |
Soprano | C++ | 2.8.0 | 2012-06-27 | GNU LGPL [48] |
Stardog | Java | 8.1 [49] | 2022-06-01 | Proprietary |
StrixDB | C++, Lua | 94_3 [50] | 2013-04-11 | |
TerminusDB | Prolog, Rust, JSON-LD | 10.1.4 [51] | 2022-08-24 | Apache 2 |
Wukong | C++ | 0.2.0 [52] | 2019-11-27 | Apache 2 |
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 | |||
Akutan | ? | ? | ? | ? | |
AllegroGraph | Graph | For most modern programming languages | |||
AnzoGraph | MPP In-memory Triplestore | For programming languages that support gRPC bindings. | |||
ARC2 | 3rd party | PHP | |||
ARQ | 3rd party | Java | |||
BrightstarDB | Graph data model in Heap file | .NET Framework or Web Service | |||
CM-Well | Apache Cassandra | Java, Scala, | |||
Corese | 3rd party | Java | |||
D2R Server | 3rd party | Java | |||
Dydra | Graph database in the cloud SaaS | REST API | |||
GraphDB by Ontotext | Triplestore / Quadstore | Java (Jena and RDF4J (Sesame)) | |||
Halyard | Apache HBase | Java | |||
IBM Db2 | Object-relational | Java | |||
Intellidimension Semantics Platform 2.0 | 3rd party | .NET Framework | |||
Jena | Tuple store | Java | |||
KAON2 | 3rd party | Java | |||
MarkLogic | Triplestore / Quadstore | REST API, SPARQL Endpoint, Graph Protocol Endpoint, Java API, XQuery, Server-side JavaScript, SQL/ODBC | |||
Mulgara | 3rd party | Java or REST API | |||
OntoBroker | Triplestore | Java | |||
Ontop | relational, 3rd party | SPARQL Endpoint | |||
OntoQuad RDF Server | Triplestore / Quadstore | Java, SPARQL Endpoint or REST API | |||
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 | Object-relational | For most modern programming languages; REST, RDF4J | |||
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++ | |||
SparkleDB | Triplestore / Quadstore | For most modern programming languages | |||
SPARQL City | Triplestore | Command Line, Web Interface | |||
SPARQL Engine | 3rd party | Java | |||
Stardog | Triplestore | Java, Groovy | |||
StrixDB | Triplestore | Lua | |||
TerminusDB | Graph database | RESTful API | |||
Twinql | 3rd party | Lisp | |||
Wukong | Graph | Command line only |
Query languages, data query languages or database query languages (DQLs) are computer languages used to make queries in databases and information systems. A well known example is the Structured Query Language (SQL).
SPARQL is an RDF query language—that is, a semantic query language for databases—able to retrieve and manipulate data stored in Resource Description Framework (RDF) format. It was made a standard by the RDF Data Access Working Group (DAWG) of the World Wide Web Consortium, and is recognized as one of the key technologies of the semantic web. On 15 January 2008, SPARQL 1.0 was acknowledged by W3C as an official recommendation, and SPARQL 1.1 in March, 2013.
RDFLib is a Python library for working with RDF, a simple yet powerful language for representing information. This library contains parsers/serializers for almost all of the known RDF serializations, such as RDF/XML, Turtle, N-Triples, & JSON-LD, many of which are now supported in their updated form. The library also contains both in-memory and persistent Graph back-ends for storing RDF information and numerous convenience functions for declaring graph namespaces, lodging SPARQL queries and so on. It is in continuous development with the most recent stable release, rdflib 6.1.1 having been released on 20 December 2021. It was originally created by Daniel Krech with the first release in November, 2002.
Oracle Spatial and Graph, formerly Oracle Spatial, is a free option component of the Oracle Database. The spatial features in Oracle Spatial and Graph aid users in managing geographic and location-data in a native type within an Oracle database, potentially supporting a wide range of applications — from automated mapping, facilities management, and geographic information systems (AM/FM/GIS), to wireless location services and location-enabled e-business. The graph features in Oracle Spatial and Graph include Oracle Network Data Model (NDM) graphs used in traditional network applications in major transportation, telcos, utilities and energy organizations and RDF semantic graphs used in social networks and social interactions and in linking disparate data sets to address requirements from the research, health sciences, finance, media and intelligence communities.
Apache Jena is an open source Semantic Web framework for Java. It provides an API to extract data from and write to RDF graphs. The graphs are represented as an abstract "model". A model can be sourced with data from files, databases, URLs or a combination of these. A model can also be queried through SPARQL 1.1.
Eclipse RDF4J is an open-source framework for storing, querying, and analysing RDF data. It was created by the Dutch software company Aduna as part of "On-To-Knowledge", a semantic web project that ran from 1999 to 2002. It contains implementations of an in-memory triplestore and an on-disk triplestore, along with two separate Servlet packages that can be used to manage and provide access to these triplestores, on a permanent server. The RDF4J Rio package contains a simple API for Java-based RDF parsers and writers. Parsers and writers for popular RDF serialisations are distributed along with RDF4J, and users can easily extend the list by putting their parsers and writers on the Java classpath when running their application.
Mulgara is a triplestore and fork of the original Kowari project. It is open-source, scalable, and transaction-safe. Mulgara instances can be queried via the iTQL query language and the SPARQL query language.
An embedded database system is a database management system (DBMS) which is tightly integrated with an application software; it is embedded in the application. It is actually a broad technology category that includes
HBase is an open-source non-relational distributed database modeled after Google's Bigtable and written in Java. It is developed as part of Apache Software Foundation's Apache Hadoop project and runs on top of HDFS or Alluxio, providing Bigtable-like capabilities for Hadoop. That is, it provides a fault-tolerant way of storing large quantities of sparse data.
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".
Freebase was a large collaborative knowledge base consisting of data composed mainly by its community members. It was an online collection of structured data harvested from many sources, including individual, user-submitted wiki contributions. Freebase aimed to create a global resource that allowed people to access common information more effectively. It was developed by the American software company Metaweb and run publicly beginning in March 2007. Metaweb was acquired by Google in a private sale announced on 16 July 2010. Google's Knowledge Graph is powered in part by Freebase.
A graph database (GDB) is a database that uses graph structures for semantic queries with nodes, edges, and properties to represent and store data. A key concept of the system is the graph. The graph relates the data items in the store to a collection of nodes and edges, the edges representing the relationships between the nodes. The relationships allow data in the store to be linked together directly and, in many cases, retrieved with one operation. Graph databases hold the relationships between data as a priority. Querying relationships is fast because they are perpetually stored in the database. Relationships can be intuitively visualized using graph databases, making them useful for heavily inter-connected data.
AllegroGraph is a closed source triplestore which is designed to store RDF triples, a standard format for Linked Data. It also operates as a document store designed for storing, retrieving and managing document-oriented information, in JSON-LD format. AllegroGraph is currently in use in commercial projects and a US Department of Defense project. It is also the storage component for the TwitLogic project that is bringing the Semantic Web to Twitter data.
Sones GraphDB was a graph database developed by the German company sones GmbH, available from 2010 to 2012. Its last version was released in May 2011. sones GmbH, which was based in Erfurt and Leipzig, was declared bankrupt on January 1, 2012.
GeoSPARQL is a standard for representation and querying of geospatial linked data for the Semantic Web from the Open Geospatial Consortium (OGC). The definition of a small ontology based on well-understood OGC standards is intended to provide a standardized exchange basis for geospatial RDF data which can support both qualitative and quantitative spatial reasoning and querying with the SPARQL database query language.
In the field of database design, a multi-model database is a database management system designed to support multiple data models against a single, integrated backend. In contrast, most database management systems are organized around a single data model that determines how data can be organized, stored, and manipulated. Document, graph, relational, and key–value models are examples of data models that may be supported by a multi-model database.
RocksDB is a high performance embedded database for key-value data. It is a fork of Google's LevelDB optimized to exploit many CPU cores, and make efficient use of fast storage, such as solid-state drives (SSD), for input/output (I/O) bound workloads. It is based on a log-structured merge-tree data structure. It is written in C++ and provides official language bindings for C++, C, and Java; alongside many third-party language bindings. RocksDB is open-source software, and was originally released under a BSD 3-clause license. However, in July 2017 the project was migrated to a dual license of both Apache 2.0 and GPLv2 license, possibly in response to the Apache Software Foundation's blacklist of the previous BSD+Patents license clause.
Shapes Constraint Language (SHACL) is a World Wide Web Consortium (W3C) standard language for describing Resource Description Framework (RDF) graphs. SHACL has been designed to enhance the semantic and technical interoperability layers of ontologies expressed as RDF graphs.
NitrosBase is a Russian high-performance multi-model database system. The database system supports relational, graph and document database models.
Blazegraph is an open source triplestore and graph database, developed by Systap, which is used in the Wikidata SPARQL endpoint and by other large customers. It is licensed under the GNU GPL.