基于rdf:type的属性链推理

基于rdf:type的属性链推理,rdf,semantic-web,owl,pellet,Rdf,Semantic Web,Owl,Pellet,我试图让Pellet将属性从类传播到属于这些类的个人。例如,如果类A具有属性X,而个体B具有rdf:type=Class A,则我希望个体B在运行推理程序后具有属性X。我正在使用页面上引用的属性链包含技术。如果我在属性链中使用自己的自定义属性,那么这种技术非常有效,但是如果我尝试使用rdf:type本身,它就不起作用。下面是我的RDF/XML的一些相关片段 本体类(由Jena生成;请注意“扩散”属性,因为这是我试图传播给类Person的个体的内容): “Spread”属性本身(由我手动编写,

我试图让Pellet将属性从类传播到属于这些类的个人。例如,如果类A具有属性X,而个体B具有rdf:type=Class A,则我希望个体B在运行推理程序后具有属性X。我正在使用页面上引用的属性链包含技术。如果我在属性链中使用自己的自定义属性,那么这种技术非常有效,但是如果我尝试使用rdf:type本身,它就不起作用。下面是我的RDF/XML的一些相关片段

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


“Spread”属性本身(由我手动编写,不是用Jena生成的,因为Jena的API不支持对象属性链):


在推理之前,俄狄浦斯的形象是这样的:

<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>
<owl:ObjectProperty rdf:about="&rdf;type"/>

这个想法是,经过推理,它看起来像这样:

<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>
<owl:ObjectProperty rdf:about="&rdf;type"/>

我有一种感觉,将rdf:type称为rdf:resource可能是事情变得越来越糟糕的地方,因为我非常确定它不是一种资源。但我不知道如何修复它。我还通过Pellet的命令行lint程序运行了它,它似乎没有问题,只是它为rdf:type创建了一个显式条目,如下所示:

<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>
<owl:ObjectProperty rdf:about="&rdf;type"/>

我觉得有点奇怪,这也可能暗示它不理解我对rdf:type的引用


有人能解释一下可能发生的事情吗?我非常感谢任何人能提供的帮助。

非常重要的编辑

事实证明,在owldl领域内,属性传播是可能的。例如,如果要使用值
simpleSpread
传播属性
spread
(假设两者都已在RDF中定义),则可以这样做(在RDF/XML中):


不再那么重要了

好的,为了信息的完整性,我将在这里发布相关的答案信息。这些东西来自与pellet用户邮件列表上的人交谈。该线程已存档,并从我的开始。按照线索详细了解发生了什么

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


这方面的主要问题是找到一个同时支持DL和RL的推理器(或推理器组合),因为RL比DL重量轻得多,表达能力差得多(更不用说不能保证在多项式时间内可判定).

SemanticCoverFlow的完美问题。在我问这个问题的时候,Com并不存在。它只是一个只有3个月大的婴儿,并不出名:-)但我的评论更多地是为了回答这个问题的读者。好问题(+1)。