首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >rdfs:subClassOf真的是传递性的吗?

rdfs:subClassOf真的是传递性的吗?
EN

Stack Overflow用户
提问于 2022-11-10 02:20:02
回答 1查看 88关注 0票数 2

我将此海龟文件加载到两个不同的OWL推理器(HermiT和RDFox)中:

代码语言:javascript
复制
@prefix : <http://www.semanticweb.org/justin/ontologies/2022/10/untitled-ontology-16#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
:A1 rdf:type owl:Class .

:A2 rdf:type owl:Class ;
    rdfs:subClassOf :A1 .

:A3 rdf:type owl:Class ;
    rdfs:subClassOf :A2 .

我以为推理者会推断:

代码语言:javascript
复制
:A3 rdfs:subClassOf :A1 .

但两个推理者都没有。

相关材料:

“rdfs:subClassOf属性是传递的。”子类

“当定义一个性质P为一个传递性质时,这意味着如果一个对(x,y)是P的一个实例,而这对(y,z)也是P的实例,那么我们可以推断这对(x,z)也是P的一个实例。”https://www.w3.org/TR/owl-ref/#TransitiveProperty-def

EN

回答 1

Stack Overflow用户

发布于 2022-11-10 17:53:51

是的,rdfs:subClassOf属性是传递的。恐怕我无法解释为什么HermiT不返回预期的三元组,因为我不知道这个系统,但是对于RDFox,需要采取一些额外的步骤来查看您正在寻找的三元组。

首先,RDFox有一个公理的一级表示,它独立于任何作为三元组持有的公理。要在推理中使用公理,必须将它们添加到数据存储的(一级)公理中。如果数据存储包含表示为三元组(如:A2 rdfs:subClassOf :A1 )的公理,则可以使用importaxioms shell命令将它们导入为axioms (此命令接受一些选项,但如果您的公理在默认图中以三元组形式出现,并且希望将公理应用于默认图,则不需要参数)。当导入公理时,RDFox生成相应的数据模拟规则,这些规则实际上是进行推理的。

即使在这一点上,您也不会看到任何额外的rdfs:subClassOf三元组。这是因为,与许多其他推理不同,RDFox专注于对数据(又名Abox推理)而不是模式(也称为Tbox推理)进行推理。具体来说,这意味着如果在数据存储中添加一些:A3实例以及您所展示的公理,那么这些实例也将被归类为属于:A2:A1类。因此,传递的rdfs:subClassOf关系的影响被实现,这通常是更实际的用途,有隐含的rdfs:subClassOf三倍。

对于确实需要模式推理的情况,RDFox有一个内置规则集来执行包含性推理(正如您在这里所期望的)。可以通过以下方式在shell中导入:

代码语言:javascript
复制
import <rdfox:TBoxReasoning>

这将使RDFox推断出:A3 rdfs:subClassOf :A1。相关文档部分是这里

下面是一个完整的RDFox shell脚本(5.7版本是正确的),演示了上述所有内容,我希望您会发现这些脚本很有用:

代码语言:javascript
复制
dstore create default

prefix : <http://www.semanticweb.org/justin/ontologies/2022/10/untitled-ontology-16#>
prefix owl: <http://www.w3.org/2002/07/owl#>
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>

import ! :A1 rdf:type owl:Class .
import ! :A2 rdf:type owl:Class ; rdfs:subClassOf :A1 .
import ! :A3 rdf:type owl:Class ; rdfs:subClassOf :A2 .

set output out
set query.print-summary off

echo
echo "Subclasses of :A1 (w/o subsumption ruleset):"
select ?subClass { ?subClass rdfs:subClassOf :A1 }
echo

importaxioms
import ! :a3 a :A3 .

echo
echo "Instances of :A1..."
select ?instance { ?instance a :A1 }
echo

import <rdfox:TBoxReasoning>
echo
echo "Subclasses of :A1 (with subsumption ruleset):"
select ?subClass { ?subClass rdfs:subClassOf :A1 }
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74383467

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档