|
As someone trying to grok reasoners, I'm trying to figure out when would you use a forward chaining reasoner vs a backward chaining one? Is it to be decided by space/time tradeoffs only, or are there other considerations? And, why would you use a hybrid? |
|
In engineering terms, for query-answering, the benefits between forward-chaining and backward-chaining can be reduced to a simple trade-off:
A hybrid approach should then give the best of both worlds, materialising the inferences that are frequently accessed, static, and/or small, and supporting query-rewriting for inferences that are large, cheap to do at runtime, dynamic and/or infrequently accessed. For example, many large-scale reasoners:
Just a quick addendum on the phrases (...'cause this used to confused me): Given a set of inference rules:
1
From a practical point of view, frequency of change is probably not a major issue: under reasonable assumptions (usually a monotonic logic), advanced engines should be able to incrementally maintain the inferred closure, with comparable efficiency for assertions and retractions. 1
To a certain extent true, but (in particular) high rates of deletion can become a notable factor when combined with the other consideration, esp. if data-sizes/materialisations are large. Plus, it can make your on-disk indexes more "fragmented" by increasing the amount you store and subsequently delete (how much of a factor this is depends on your particular low-level indexing). For reference of others: when materialising, and assuming inferencing is monotonic (~incremental: adding new data cannot "invalidate" previous data or inferences) for insertions you need only figure out inferences involving the delta, and materialise/store them. However, for deletions, you also need to delete those inferences which depend on the deletions, usually done by (i) using the same forward-chaining procedure you would use for an insertion to find all inferences which involve statement(s) to delete; (ii) finding alternate derivations for these inferences not involving deletions. You mention "quadratic materialisation", which I see has been mentioned here once before. Should I know what that is? Got it, cheers.
showing 5 of 6
show 1 more comments
|
|
to take this simple, forward chaining is data driven and backward chaining is goal driven. Probably is obvious that solving a real problem will start with a goal and usualy implies inference over a data set, therefor the need for mixing both. |

