On 30/09/15 11:16, Zak Mc Kracken wrote:
(Sorry, sending it again to the right list)

Hi all,

I've read the documentation about the reasoners and there is something I
can't get.

I've a few custom, backward-only rules (nothing very advanced, just a
few things like symmetry or transitivity, no interest in using all the
entailments coming from RDFS or OWL reasoners), which I would like to be
applied during SPARQL queries and over a rather big dataset. Because of
this situation, I'd like to keep the data off the main memory (i.e.,
TDB) and have the reasoner to query an underlying non in-memory model. I
could accept that it creates entailed statements as it goes, I could
reset it if memory goes low, but I wouldn't like it to load everything
in memory, before being able to do any reasoning.

That said, can the BC reasoner work like that? Could someone point me to
an example?

The backward chaining engine will only store data if you explicitly ask it to via the table() directive. If you don't table any goals then the space use shouldn't grow over time - there will be some intermediate state while a query is running but it doesn't load everything into memory.

Performance, however, might not be good. The issue is that the rule engines operate at the low level of triple patterns. So running a SPARQL query over a rule engine over TDB means that the TDB will only see triples patterns one at a time with no chance do its own optimizations.

The only way to find out if the performance is usable for the kind of queries you have in mind is to give it a try.

Dave



Reply via email to