我正在寻找Datalog的Jave实现,该实现不会评估不必要的规则。我看着IRIS reasoner这似乎是最稳定的。

但是,它评估所有规则,而不是仅评估正在使用的规则。
举个例子:

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).


我发现IRIS可以计算关系ancestor,即使它从未使用过。

Java还有哪些其他实现?有没有人执行此优化?

最佳答案

OP链接到的IRIS网站的报价:

支持以下程序优化:
 -规则过滤(删除对回答问题没有帮助的规则
   查询)
 -魔术套和横向信息传递策略(SIPS)

09-10 21:36