我正在 TopBraidComposer 中构建一个本体,它有一个类层次结构和几个单独工作的规则。在我的本体中,我在类级别上工作,所以我创建的所有定义都只与类有关,而不是与个人相关。现在我想推断像这样的子类定义:
我尝试了以下 SPARQL 查询,它似乎可以完成这项工作:
然后我将所说的查询作为 SPIN 规则添加到 owl:Thing 类中,如下所示:
回车后,自动转换成如下形式:
它看起来很合理,但是当我现在开始推理过程时,它不会在我添加测试规则之前终止。当我强制停止推理时,我可以看到所需的三元组已多次添加到 Test 类中。
如何在 SPIN 中推断出匿名超类?
编辑:
一种解决方法是将限制绑定到类。然后逻辑似乎有效,但它不像匿名超类那样显示出来;在 TBC 和 Protege 中都没有。