我构建了一个简单的本体来测试SWRL规则如何推断本体中个体之间的新关系,但它没有用。我的规则是:
(hasFather(?x, ?y) ∧ hasMother(?x, ?z) → spouseOf(?y, ?z)
可能会被视为
x有父亲y,x有母亲z→y是z的配偶。
我的本体论中有三个人:丈夫,妻子和儿子。我设置孩子有母亲是妻子,有父亲是丈夫。然后我的规则被用来设置丈夫是配偶的妻子。我使用Jess插件来测试我的规则,但没有结果。为什么规则不起作用?我的规则有什么问题,或者Jess在Protege 3.3上有什么问题吗?
答案 0 :(得分:2)
您在本体中所写的内容并非您在此问题中所写的规则。您的本体包含以下规则:
hasFather(?y, ?x) ∧ hasMother(?z, ?x) → spouseOf(?y, ?z)
在RDF / XML文件中,将swrl:argument1
与swrl:argument2
交换,然后就可以了。
答案 1 :(得分:0)
Sonvx,Pellet推理器可用于测试SWRL规则。 Pellet推理器提供Java API来测试SWRL规则。 download pellet here
如果您需要别的东西,请告诉我。