我正在寻找不评估不必要规则的Datalog的 Jave 实现。我查看了IRIS 推理器,它似乎是最稳定的推理器。
但是,它评估所有规则,而不仅仅是正在使用的规则。举个例子:
parent('homer', 'bart').
parent('abe', 'homer').
ancestor(?a, ?b) :- parent(?a, ?b).
ancestor(?a, ?b) :- ancestor(?a, ?c), ancestor(?c, ?b).
// query.. find all parent-child pairs.
?-parent(?x, ?y).
我发现ancestor
即使从未使用过 IRIS 也会计算关系。
Java 还有哪些其他实现?是否有任何执行此优化?