【问题标题】:Infer anonymous superclasses using SPIN rules使用 SPIN 规则推断匿名超类
【发布时间】:2014-03-03 11:31:54
【问题描述】:

我正在 TopBraidComposer 中构建一个本体,它有一个类层次结构和几个单独工作的规则。在我的本体中,我在类级别上工作,所以我创建的所有定义都只与类有关,而不是与个人相关。现在我想推断像这样的子类定义:

我尝试了以下 SPARQL 查询,似乎可以完成这项工作:

然后我将上述查询作为 SPIN 规则添加到 owl:Thing 类中,如下所示:

回车后自动转换成如下形式:

看起来很合理,但是当我现在开始推理过程时,它不再像我添加测试规则之前那样终止。当我强制停止推理时,我可以看到所需的三元组已多次添加到 Test 类中。

如何在 SPIN 中推断匿名超类?

编辑:

一种解决方法是将限制绑定到类。然后逻辑似乎有效,但它不像匿名超类那样显示出来;在 TBC 和 Protege 中都没有。

【问题讨论】:

  • 标签“spin”与“SPIN: A Formal Methods Technology”相关。这似乎不是您对 SPIN 的使用。如果没有,请删除标签。

标签: sparql rule inference inference-engine spin-rdf


【解决方案1】:

经过长时间的搜索,我发现解决方案非常简单:

对现有关系的简单检查将防止无限循环:

FILTER NOT EXISTS {
  ?test rdfs:subClassOf _:b0 .
} .

TBC 会自动将其更正为

FILTER NOT EXISTS {
  ?test rdfs:subClassOf _:0 .
} .

就是这样,规则将起作用。

【讨论】:

  • 我认为更正是因为您不能重复使用空白节点,因此您可能必须在 CONSTRUCT 和 WHERE 子句中键入空白节点的限制。跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多