gpt4 book ai didi

rdf - rdf :type 上的属性链推理

转载 作者:行者123 更新时间:2023-12-01 04:20:27 25 4
gpt4 key购买 nike

我试图让 Pellet 将属性从类传播到属于这些类的个人。例如,如果我有一个带有属性 X 的类 A,以及带有 rdf:type=Class A 的个人 B,我希望个人 B 在运行推理器后拥有属性 X。我正在使用 OWL 2 New Features 上引用的属性链包含技术页。如果我在属性链中使用我自己的自定义属性,则此技术非常有效,但如果我尝试使用 rdf:type 本身,则它不起作用。以下是我的 RDF/XML 的一些相关片段。

本体类(由 Jena 生成;注意“传播”属性,因为这是我试图传播给类 Person 的个人的内容):

<rdf:Description rdf:about="http://family/person">
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Thing"/>
<owl:sameAs rdf:resource="http://family/person"/>
<rdfs:subClassOf rdf:resource="http://www.w3.org/2002/07/owl#Thing"/>
<owl:equivalentClass rdf:resource="http://family/person"/>
<owl:disjointWith rdf:resource="http://www.w3.org/2002/07/owl#Nothing"/>
<j.1:spread rdf:resource="http://spread/specificSpread"/>
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
</rdf:Description>

“Spread”属性本身(由我手动编写,不是用 Jena 生成的,因为 Jena 的 API 不支持对象属性链):
<rdf:Description rdf:about="http://spread/generalSpread">
<owl:propertyChainAxiom rdf:parseType="Collection">
<owl:ObjectProperty rdf:about="http://www.w3.org/1999/02/22-rdf-syntax-ns#type"/>
<owl:ObjectProperty rdf:about="http://spread/generalSpread"/>
</owl:propertyChainAxiom>
</rdf:Description>

在推理之前,俄狄浦斯人长这样:
<rdf:Description rdf:about="http://family/Oedipus">
<rdf:type rdf:resource="http://family/person"/>
</rdf:Description>

这个想法是,经过推理,它看起来像这样:
<rdf:Description rdf:about="http://family/Oedipus">
<rdf:type rdf:resource="http://family/person"/>
<j.1:spread rdf:resource="http://spread/specificSpread"/>
</rdf:Description>

我有一种感觉,将 rdf:type 称为 rdf:resource 可能是事情变得棘手的地方,因为我很确定它不是资源。但我不确定如何解决它。我也通过 Pellet 的命令行 lint 程序运行它,它似乎没有问题,只是它为 rdf:type 创建了一个显式条目,如下所示:
<owl:ObjectProperty rdf:about="&rdf;type"/>

对我来说看起来有点奇怪,也可能暗示它不理解我对 rdf:type 的引用。

任何人都可以对可能发生的事情有所了解吗?我真的很感激任何人可以提供的任何帮助。

最佳答案

非常重要的编辑

事实证明,在 OWL DL 领域内,属性传播是可能的。例如,如果要传播属性 spreadsimpleSpread (假设两者都已在您的 RDF 中定义),您可能会执行以下操作(在 RDF/XML 中):

  <rdf:Description rdf:about="http://family/person">
<rdfs:subClassOf>
<owl:hasValue rdf:resource="http://spread/simpleSpread"/>
<owl:onProperty rdf:resource="http://spread/hasSpread"/>
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Restriction"/>
</rdfs:subClassOf>
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
</rdf:Description>

不再那么重要

好的,为了信息的完整性,我将在此处发布相关的答案信息。这些东西来自与颗粒用户邮件列表上的人交谈。该线程已存档并以我的 initial message 开头.按照线程找出发生了什么的详细信息。

本质上, OWL DL不允许对内置属性和数据类型进行“反射”。允许这样做可能会违反 OWL DL 保证的多项式时间可判定性。为了实现这一点,您必须使用 OWL RL profile OWL Full,它平等地对待 OWL 中的所有事物,从而允许对 rdf:type 使用推理。 .

与此相关的主要问题是找到一个支持 DL 和 RL 的推理器(或推理器的组合),因为 RL 比 DL 轻得多且表达能力更差(更不用说不能保证在多项式时间内可判定)。

关于rdf - rdf :type 上的属性链推理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2082636/

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