Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What are the strengths and weaknesses of a triplestore database?

What are the strengths and weaknesses of a triplestore database, such as Mulgara? In which situations would its performance be significantly different from that of a traditional relational database?

I'm thinking in particular about situations where you have data in the form namespace:predicate=value. Triplestores would seem to keep the data in its "natural" form, but I would like to know if there are specific advantages beyond that.

like image 823
sourcenouveau Avatar asked Jun 14 '09 15:06

sourcenouveau


People also ask

Is RDF a database?

The RDF triplestore is a type of graph database that stores semantic facts. RDF, which stands for Resource Description Framework, is a model for data publishing and interchange on the Web standardized by W3C. Being a graph database, triplestores store data as a network of objects with materialized links between them.

What is a triple in data?

Triples (also known as facts) are a way to express graph data. A triple consists of three components: A subject, a predicate, and an object.

How do triple stores work?

Triplestores use URIs, which means they support querying and reasoning about the Semantic Web. Unlike relational databases which store data in tables, triplestores store data as statements in the Subject-Predicate-Object form, such as “Jessica teaches Computer Science”; each statement is called a triple.

How do you store RDF files?

A widely used implementation technique [4,5] is to store RDF statements in a relational database using a single statement table, often called a “triple-store.” This is a table that stores each RDF statement as a row and has columns for the subject, predicate and object.


2 Answers

I'm the creator of Redland which includes native triple stores in C plus I've used some of the Java systems like Jena and Sesame.

It's hard to say more without knowing what your problem is but in general native triple stores work better if your problem space/query pattern is more 'graphy', rather than 'objecty'. Objecty means you tend to always manipulate - set/get the same pattern of data each time - in that case you might as well use ORM or other object-relational mappping and a fixed schema. If your problem and schema is more dynamic - 'Graphy' - you may benefit from the triple store approach where it's easier to hop across the data than it is typically in a RDBMS world (aka joins).

Of course there is also the document-approach too such as CouchDB but that's hard to know from the info you've given.

like image 177
dajobe Avatar answered Sep 20 '22 02:09

dajobe


I assume you're asking about persistence of triples (and possibly graphs via quads) where the storage is either a "native" triple store (for example, TDB) or a relational database with a triple store overlay (like SDB).

If you an elaborate on your requirements, I'm sure Stack Overflow members can offer a more directed answer, but just off the top of my head:

  • Native triple stores typically have better performance when the size of the dataset gets very large. See some numbers from the W3C.
  • Native triple stores can offer in-store reasoning/inferencing (like Oracle's semantic toolkit, although it doesn't fully support SPARQL).
  • Triples in an RDBMS can be "easily" integrated into traditional reporting tools (like Jasper Reports) since you can query them with SQL.
like image 22
Phil M Avatar answered Sep 21 '22 02:09

Phil M