Question

I have a question regarding inserting and deleting statements in triple stores such as Virtuoso, Stardog, 4store, Allegrograph, Oracle11g.

When inserting a new statement, do they insert the inferred statements in the store or they use reasonners in every query execution to get the inferred statements? Same question when removing a statement, do they remove the inferred statements?

Was it helpful?

Solution

That answer is going to depend on the database, there's no "right" way to do it, and as far as I know, each does it a little different. And there's no reason you have to only materialize or only do query-time reasoning; you can do some of both, and if anything, that's the "right" way to implement it.

In situations where materialization is used (all inferences are saved in the database), truth maintenance is a particularly tricky problem. You can avoid it be re-building all the inferences, but there are some obvious drawbacks to that approach. So systems which materialize will have sophisticated schemes whereby the derivation tree for an inference is stored so that only inferences affected by the update are recalculated. But this comes at the cost of slowing down all writes and bulk loads.

Query-time reasoning also side-steps the issue of truth maintenance; inferences are not stored but instead calculated on the fly during evaluation, but this comes at the cost of executing more difficult queries.

BigData, OWLIM and Oracle as far as I know materialize inferences, Stardog does all its reasoning at query time. I'm not sure about Virtuoso and AllegroGraph. Given that AllegroGraph uses RacerPro, or used to at least, I'd guess that they materialize, but that's just a guess. I was not aware that 4Store did any reasoning.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top