Comparison of triplestores

Last updated

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]

Contents

Implementations

NameDeveloped in languageLatest VersionLatest Release DateLicence
3store C 3.0.17 [3] 2006-07-17 GNU GPL
AkutanGo?? Apache 2
AllegroGraph Common Lisp 7.2.0 [4] 2021-10-15 Proprietary
AnzoGraph C/C++ 4.1.02019-01-30 Proprietary
Apache Jena Java4.5.0 [5] 2022-05-01 Apache 2
Apache RyaJava4.0.1 [6] 2020-12-22 Apache 2
ARC2 PHP 2.5.1 [7] 2020-06-19W3C Software License or GPL
Attean Perl 0.030 [8] 2021-02-06Artistic or GPL-1+
Blazegraph Java2.1.5 [9] 2019-03-19 GNU GPL (v.2)
BrightstarDBC#1.14.0-alpha03 [10] 2019-08-18 MIT
CayleyGo0.7.7 [11] 2019-10-15 Apache 2
CM-WellScala1.5.170 [12] 2020-03-24 Apache 2
ClioPatriaSWI-Prolog, C3.1.1 [13] 2017-09-06 GNU GPL (v.2)
Datomic Clojure 535-8812 [14] 2019-10-01 Proprietary
DydraCommon Lisp, C++?? Proprietary
Enterlab SimpleGraphJava?? EPL
gStoreC++0.7.2 [15] 2018-11-04 BSD
Ontotext GraphDB Java9.9.1 [16] 2021-09-10 Proprietary
HalyardJava3.2 [17] 2019-12-05 Apache 2
IBM Db2 Java, SQL 11.5 [18] ?
KiWi (Apache Marmotta)Java3.4.0 [19] 2018-06-12 Apache 2
MarkLogic C++10.0-1 [20] 2019-05 Proprietary
Mulgara Java2.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.02018-12-3 Proprietary
OntoQuad RDF ServerC++??
OpenAnzoJava3.2.0 [23] 2010-03-11 EPL
OpenLink Virtuoso C8.3 (Commercial); [24] 7.2.6 (Open Source) [25] 2018-10-22 ; 2021-06-22GPL v2 or Commercial
Oracle Java, PL/SQL, SQL 21c2020-12-08Commercial
Oxigraph Rust 0.3.2 [26] 2022-04-25 Apache 2 or MIT [27]
ParliamentJava, C++2.7.13 [28] 2019-05-07 BSD license
Pointrel SystemJava, Python 20090201 [29] 2013-02-21 GNU LGPL [30]
Profium SenseJava7.02018-04
RAPPHP0.9.6 [31] 2008-02-29
RDF::Core Perl 0.5.1 [32] 2007-02-19
RDF::Trine Perl 1.019 [33] 2018-01-05Artistic or GPL-1+
RDF-3XC++0.3.8 [34] 2013-11-22CC-BY-NC-SA 3.0
Eclipse RDF4J Java3.7.5 [35] 2022-03-06 Eclipse Distribution License (EDL)
RDFBrokerJava?2009-01-14 [36]
RDFLib Python6.1.1 [37] 2021-12-20 BSD
RDFox C++ 5.5 [38] 2021-10-26 [39] Proprietary
Redland C1.0.17 [40] 2014-05-10Apache or LGPL or GPL [41]
RedStoreC0.5.4 [42] 2011-10-27 GNU GPL
Semantics Platform C# 2.0 [43] 2010-06-17
SemWeb-DotNetC#?2014-08-11 [44]
SiDiF - Simple Data Interchange Format - Educational TripleStoreJava0.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.02012-06-27 GNU LGPL [48]
StardogJava8.1 [49] 2022-06-01 Proprietary
StrixDBC++, Lua 94_3 [50] 2013-04-11
TerminusDB Prolog, Rust, JSON-LD 10.1.4 [51] 2022-08-24 Apache 2
WukongC++0.2.0 [52] 2019-11-27 Apache 2

Additional implementation facets

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 NameNative storageNative SPARQL supportNative SPARQL/Update supportNative SPARQL Protocol EndpointNative APIs
4storeTriplestoreYes check.svgYes check.svgYes check.svgCommand line only
Akutan????
AllegroGraphGraphYes check.svgYes check.svgYes check.svgFor most modern programming languages
AnzoGraphMPP In-memory TriplestoreYes check.svgYes check.svgYes check.svgFor programming languages that support gRPC bindings.
ARC23rd partyYes check.svgYes check.svgYes check.svgPHP
ARQ3rd partyYes check.svgYes check.svg Java
BrightstarDBGraph data model in Heap fileYes check.svgYes check.svg.NET Framework or Web Service
CM-Well Apache Cassandra Yes check.svgYes check.svgJava, Scala,
Corese3rd partyYes check.svgJava
D2R Server3rd partyYes check.svgYes check.svgYes check.svgJava
DydraGraph database in the cloud SaaS Yes check.svgYes check.svgYes check.svgREST API
GraphDB by OntotextTriplestore / QuadstoreYes check.svgYes check.svgYes check.svgJava (Jena and RDF4J (Sesame))
Halyard Apache HBase Yes check.svgYes check.svgJava
IBM Db2Object-relationalJava
Intellidimension Semantics Platform 2.03rd partyYes check.svg.NET Framework
JenaTuple storeYes check.svgYes check.svgYes check.svgJava
KAON23rd partyYes check.svgJava
MarkLogicTriplestore / QuadstoreYes check.svgYes check.svgYes check.svgREST API, SPARQL Endpoint, Graph Protocol Endpoint, Java API, XQuery, Server-side JavaScript, SQL/ODBC
Mulgara3rd partyYes check.svgJava or REST API
OntoBrokerTriplestoreYes check.svgYes check.svgYes check.svgJava
Ontoprelational, 3rd partyYes check.svgYes check.svgSPARQL Endpoint
OntoQuad RDF ServerTriplestore / QuadstoreYes check.svgYes check.svgYes check.svgJava, SPARQL Endpoint or REST API
Open Anzo3rd partyYes check.svgYes check.svgJava, JavaScript, .NET Framework
OpenLink Virtuoso Hybrid (Relational Tables and Relational Property Graphs)Yes check.svgYes check.svgYes check.svgODBC, 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 DBObject-relationalYes check.svgYes check.svgYes check.svgFor most modern programming languages; REST, RDF4J
Parliament3rd partyYes check.svgYes check.svgYes check.svgJava or C++
Pellet3rd partyYes check.svgJava
PointrelTriplestore Python
Profium SenseIn-memory triplestoreYes check.svgYes check.svgJava
RAPIn-memory triplestore or heap fileYes check.svgPHP
RDF API for PHP3rd partyYes check.svg PHP
RDF::Query3rd partyYes check.svgYes check.svgYes check.svg Perl
RDF-3XTriplestoreYes check.svgCommand line only
RDFBroker3rd partyJava
Redland, Redstore3rd partyYes check.svgYes check.svgYes check.svg C
SemWeb.NET3rd partyYes check.svgYes check.svg.NET Framework
Sesame3rd partyYes check.svgYes check.svgYes check.svgJava
Soprano3rd partyC++
SparkleDBTriplestore / QuadstoreYes check.svgYes check.svgYes check.svgFor most modern programming languages
SPARQL CityTriplestoreYes check.svgYes check.svgYes check.svgCommand Line, Web Interface
SPARQL Engine3rd partyYes check.svgJava
StardogTriplestoreYes check.svgYes check.svgYes check.svgJava, Groovy
StrixDBTriplestoreYes check.svgYes check.svgYes check.svg Lua
TerminusDBGraph database RESTful API
Twinql3rd partyYes check.svg Lisp
WukongGraphYes check.svgCommand line only

See also

Related Research Articles

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 Python library to serialize, parse and process RDF data

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 Open source semantic web framework for Java

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.

<span class="mw-page-title-main">RDF4J</span>

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

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.

<span class="mw-page-title-main">RocksDB</span>

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 Open source triplestore and graph database

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.

References

  1. USapplication 003145022,Dingley, Andrew,"Storage and management of semi-structured data",published 003-07-31, assigned to Hewlett-Packard Company , now abandoned. Use of SQL relational databases as an RDF triple store.
  2. Broekstra, Jeen (19 September 2007). "The importance of SPARQL can not be overestimated". Archived from the original on 19 December 2014.
  3. "3store - Browse Files at SourceForge.net".
  4. "AllegroGraph - Download".
  5. "Apache Jena - Apache Jena Releases".
  6. "Rya Downloads".
  7. "Releases · semsol/Arc2". GitHub .
  8. https://metacpan.org/pod/Attean
  9. "Releases · blazegraph/Database". GitHub .
  10. "Releases · BrightstarDB/BrightstarDB". GitHub .
  11. "Releases · cayleygraph/Cayley". GitHub .
  12. "Releases · CM-Well/CM-Well". GitHub .
  13. "Releases · ClioPatria/ClioPatria". GitHub .
  14. "Datomic Cloud Releases | Datomic".
  15. "Releases · pkumod/GStore". GitHub .
  16. "Release Notes — GraphDB SE 9.11.0 documentation".
  17. "Releases · Merck/Halyard". GitHub .
  18. "IBM Docs". IBM .
  19. "ASF Git Repos - marmotta.git/Summary".
  20. "Release Notes — MarkLogic 10 Product Documentation".
  21. "Mulgara Project News".
  22. "Engine Releases for Amazon Neptune - Amazon Neptune".
  23. "/ (Log) – openanzo". Archived from the original on 2011-10-16. Retrieved 2018-07-22.
  24. "Free Evaluation License Generator".
  25. "Releases · openlink/Virtuoso-opensource". GitHub .
  26. "Oxigraph Releases". GitHub . Retrieved 2022-06-01.
  27. "Oxigraph License". GitHub . June 2022. Retrieved 2022-06-01.
  28. "Releases · SemWebCentral/Parliament". GitHub .
  29. "Pointrel Social Semantic Desktop".
  30. "Smart-M3 download". SourceForge.net. Retrieved 2016-07-17.
  31. "RAP - RDF API for PHP V0.9.6 - Home".
  32. https://metacpan.org/pod/RDF::Core
  33. https://metacpan.org/pod/RDF::Trine
  34. "Google Code Archive - Long-term storage for Google Code Project Hosting".
  35. https://rdf4j.org
  36. http://rdfbroker.opendfki.de/browser/trunk%5B%5D
  37. "Releases · RDFLib/Rdflib". GitHub .
  38. "RDFox, the High Performance Knowledge Graph and Reasoner".
  39. "What's New in RDFox Version 5.4: The Console Update? | Oxford Semantic Technologies | 7 min read | Nov 30, 2021".
  40. "Index of /Source".
  41. Dave Beckett. "Redland librdf RDF API Library - License". Librdf.org. Retrieved 2016-07-17.
  42. "Releases · NJH/Redstore". GitHub .
  43. "Intellidimension - News".
  44. https://github.com/JoshData/semweb-dotnet/commits/master [ dead link ]
  45. "GitHub - BITPlan/Org.sidif.triplestore: Simple Data Interchange Format and Triplestore". GitHub . 8 November 2020.
  46. "Smart-M3".
  47. "Smart-M3 download". SourceForge.net. Retrieved 2016-07-17.
  48. "Soprano download". SourceForge.net. 2013-03-20. Retrieved 2016-07-17.
  49. "Release Notes".
  50. https://sourceforge.net/projects/strixdb/M [ dead link ]
  51. "TerminusDB Releases", GitHub , retrieved 2022-09-09
  52. "Releases · SJTU-IPADS/Wukong". GitHub .
  53. "Graphd - Freebase". Wiki.freebase.com. 2010-06-10. Archived from the original on 2016-07-22. Retrieved 2016-07-17.