RDF triple stores — an overview
There's a huge range of triple stores out there, and it's not trivial to find the one most suited for your exact needs. I reviewed all those I could find earlier this year for a project, and here is the result. I've evaluated the stores against the requirements that mattered for that particular project. I haven't summarized the scores, as everyone's weights for these requirements will be different.
By a triple store I mean a tool that has some form of persistent storage of RDF data and lets you run SPARQL queries against that data. The SPARQL support can either be built-in as part of the main tool, or an add-on installed separately. This is why Sesame is in the table (it has SPARQL and a native backend), but Jena is not. The column for Fuseki with the tdb backend (which is basically Fuseki on top of Jena) is the closest you get to a Jena column.
I've deliberately left out rows for whether these tools support things like R2RML, query federation, data binding, SDshare, and so on, even though many of them do. The rationale is that if you pick a triple store that doesn't support these things you can get support anyway through separate components.
I've also deliberately left out cloud-only offerings, as I feel these are a different type of product from the databases you can install and maintain locally.
If something in the table is not clear, try mousing over it to get an explanation. If you have more information, or think any part of this is wrong, please leave a comment (or send me email), and we can clear it up.
Since this blog post was originally published people have written to me about yet more triple stores that should be included. Since the table above is getting too wide already I'm adding a new table here with room for those. It should not be taken to mean that these triple stores are not as good; it just means they were added later.
Note that Tinkerpop supports multiple backends. We're here assuming the Neo4J backend.
| Requirement | LMF | Tinkerpop | Urika |
|---|---|---|---|
| Open source | Yes | Yes (w/ commercial ed) | No |
| Free edition | Yes | Yes | No |
| 10 billion statements | Probably | ? | Yes |
| Clustering | No | Yes | Yes |
| SPARQL 1.0 | Yes | Yes | Yes |
| SPARQL 1.1 | Yes | Partial | Partial |
| SPARQL Update | Yes | Yes | Yes |
| Support | Yes | ? | Yes |
| Events | Yes | Yes | No |
| Constraints | No | No | No |
| Reasoning | Rules | Some | Rules |
| Triple-level security | No | ? | No |
| Endpoint built in | Yes | Yes | Yes |
| Live backup | Kind of | Commercial | No |
| Embeddable | Yes | Yes | No |
There is also Meronymy, but since it's not out of closed alpha yet, I haven't included it.
I guess the main thing to take away from this table is that there are lots of triple stores out there, giving users a wide range of products to choose from.
Kendall Clark's summary of the RDF database market from 2010 is still a good read if you want more on the subject.
Update: To keep track of all the updates: you are now looking at $Id$.
Update: Corrected Sesame support, as per comment from Tomas Francart. Corrected some BrighstarDB details from Graham Moore. Also added "Free edition" row suggested by Graham Moore.
Update: Fixed links for live backups, as pointed out by Maxime.
Update: Fixed 4Store and Sesame SPARQL 1.1 status, based on comment from Kjetil Kjernsmo. Also added "Embedded" row, as suggested by Graham Moore.
Update: Fixed OWLIM scaling based on comment from Jerven Bolleman. Fixed 4Store backup and embeddable status, based on comment from Steve Harris. Changed "Embedded" row to "Embeddable", based on comment from Kendall Clark.
Update: Virtuoso fixes: reasoning changed to rules, SPARQL Update support changed to partial. Also extended the clustering row. All based on comments from Kingsley Idehen.
Update: Added a column for Fuseki with the TDB backend, contributed by Andy Seaborne via email.
Update: Added a note that cloud-only products are not considered, based on a comment below from Martynas.
Update: Changed value for Virtuoso access control, based on information from vendor.
Update: Updated Oracle column based on comment from Bill Beauregard.
Update: Added a definition of triple store to clear up the Jena questions and simultaneously clarify that all products provide SPARQL support.
Update: OWLIM is embeddable, as per comment from Borislav Popov.
Update: Sesame is embeddable, as per comment from Laszlo Török.
Update: Virtuoso is embeddable, as per comment from Kingsley Idehen.
Update: Added LMF, based on email from Sergio Fernandez. Added Tinkerpop with Neo4J backend, as suggested by turnguard.
Update: Virtuoso SPARUL is non-standard, not partial.
Update: Stardog 1.1 release adds SPARQL 1.1 support and reasoning with rules. Also added link to Kendall Clark's piece.
Update: Noted that OWLIM Enterprise now supports live backup as of version 5.3. Also replaced "Yes" on reasoning with details. Both thanks to comment from Atanas Kiryakov below.
Update: Added Urika, based on comment from Jerven Bolleman below.
Update: Updated for Stardog 2.0 release, which adds SPARQL Update support.
Update: Updated for Stardog 2.1 release, which improves scalability dramatically.
Update: Updated for Stardog 3.0 release.
Similar posts
Semantic Web adoption and the users
A hot topic at ESWC 2013, and many other places besides, was the issue of Semantic Web adoption, which after a decade and a half is still less than it should be
Read | 2013-10-18 15:43
Implementing SPARQL with tolog
I realized quite a while ago (a year ago, maybe) that it's possible to implement SPARQL on top of tolog without too much effort
Read | 2005-12-15 23:03
How stone beer was brewed
It's only the last few centuries that metal kettles have become something that most people could afford to own
Read | 2016-12-18 12:47