gpt4 book ai didi

rdf - 是rdfs :subClassOf really transitive?

转载 作者:行者123 更新时间:2023-12-02 15:45:35 28 4
gpt4 key购买 nike

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

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

我希望推理者推断出:

:A3 rdfs:subClassOf :A1 .

但推理者都没有。

相关资料:

“rdfs:subClassOf 属性是可传递的。” https://www.w3.org/TR/rdf-schema/#ch_subclassof

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

最佳答案

是的,rdfs:subClassOf 属性是可传递的。恐怕我无法解释为什么 HermiT 没有返回预期的三元组,因为我不知道那个系统,但对于 RDFox,您需要执行几个额外的步骤才能看到您正在寻找的三元组为。

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

即使此时,您也不会看到任何额外的 rdfs:subClassOf 三元组。这是因为,与许多其他推理器不同,RDFox 专注于对数据进行推理(也称为 Abox 推理)而不是关于模式(也称为 Tbox 推理)。具体来说,这意味着如果您将 :A3 的一些实例与您显示的公理一起添加到数据存储中,这些实例也将被归类为属于类 :A2:A1。因此传递 rdfs:subClassOf 关系的 效果 被具体化,这通常比具有隐含的 rdfs:subClassOf 三元组更实际。

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

import <rdfox:TBoxReasoning>

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

这是一个完整的 RDFox shell 脚本(适用于 5.7 版),演示了以上所有内容,希望对您有用:

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 }

关于rdf - 是rdfs :subClassOf really transitive?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74383467/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com