0

I am working on a collaborative-filtering recommender system. I built such a system before in a parallel-threaded environment, querying RDF with SPARQL. This worked well, because of the parallel nature of SPARQL and RDF graphs. However, I am now working in a standard desktop PC, and am wondering if using SPARQL is still the way to go in a largely serial environment. I've looked at dotNetRDF, as I'm using C#, and am wondering if it is any more efficient than simple SQL, especially now that dotNetRDF seems to be moving away from a SQL back-end.

So as far as performance on a few threads go, SQL or dotNetRDF? Tables or graphs?

Bondolin
  • 2,793
  • 7
  • 34
  • 62
  • This sounds primarily opinion based. – gunr2171 Nov 12 '13 at 19:18
  • It's primarily opinion based. – Dustin Kingen Nov 12 '13 at 19:20
  • 1
    not really, what about performances? – Sebas Nov 12 '13 at 19:25
  • @Sebas, if this isn't primarily opinion based, then it certainly is "we don't recommend off-site resources". – gunr2171 Nov 12 '13 at 19:28
  • @gunr2171 I'm sorry, I don't understand the quoted part? – Sebas Nov 12 '13 at 19:29
  • @gunr2171 Pardon my ignorance, what constitutes "off-site resources"? Thanks. – Bondolin Nov 12 '13 at 19:29
  • @NargothBond, the full text is `Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.` – gunr2171 Nov 12 '13 at 19:30
  • @gunr2171 Ok, thank you. If that's the case, disregarding my essay of an exposition and looking at the edited bottom line question, Is there any non-opinionated way of determining if a graph data structure is generally less efficient on regular computers? – Bondolin Nov 12 '13 at 19:33

2 Answers2

2

The two things are not really comparable, dotNetRDF is a programming API that provides support for a variety of storage backends in addition to a pure in-memory solution which we mainly recommend for testing and development (Disclaimer I'm the lead developer)

The different backends have a wide variety of performance characteristics so if your problem is expressible in RDF then likely there is an appropriate backend for you.

SQL is a query language, really you should be comparing SQL to SPARQL and ultimately which you chose comes down to what your data model looks like. If it's regular then you likely want to use a RDBMS and SQL, if it's irregular and/or graph like then you likely want to use a triple store and SPARQL. The two have different pros and cons as your own answer implies.

RobV
  • 28,022
  • 11
  • 77
  • 119
1

This seems to answer it well enough. Triple Stores vs Relational Databases

Essentially, RDF is much more flexible, but expensive. Since I'm just doing collaborative filtering with data that fits pretty well into a table, I don't think I need the extra expense, as much as I like graphs.

Community
  • 1
  • 1
Bondolin
  • 2,793
  • 7
  • 34
  • 62