Previous topic  Top  Next topic  Print this Topic
 

BottomUp

 

BottomUp is the simplest evaluation strategy. In many cases this method provides the best performance of all of the evaluation methods. Its biggest disadvantage is that no variable bindings are propagated top-down. E.g. if you have a rule and a query

RULE r1:  p(?X,?Y) :- q(?X,?Y) AND r(?X,?Y).

QUERY q1: ?- p(?a,"Y").

then first the rule "r1" is evaluated and all of the implications are computed. Then the body literal "p(a,Y)" of the query "q1" filters all tuples generated by "r1" which have an "a" in the first position. So, if rule "r1" produces many tuples, but only few tuples which contain an "a" in the first position, then a lot of time will be wasted in "r1". Besides this performance problem note that it is not possible to evaluate all rules bottom-up (e.g. if built-ins are involved). In order to start OntoBroker with this evaluation method set

EvaluationMethod=BottomUp

in OntoConfig.prp.

OntoBroker 6 ships with the new BottomUp3 evaluator. It only works for

Storage = RAM.TS

If RAM.TS is used, the default bottomup evaluator will be BU3 (BU3 only works with RAM.TS). You should not mix RAM.TS with DynamicFiltering or DynamicFiltering2 or with the BottomUpEvaluator BottomUp2.