2017-08-10 54 views
3

说到物化,最明显的解决方案是RDF的具体化,但似乎OWL2有它自己的词汇表,我想明白为什么。让我们举个例子:如果我有以下的数据集(这是我们所使用的数据集的一小集,它使用OWL):猫头鹰reification与rdf reification

@prefix :  <http://purl.bdrc.io/ontology/core/> . 
@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#> . 

bdr:T123 a  :Topic ; 
    rdfs:seeAlso bdr:T1129 . 

我可以具体化,并与RDF注释seeAlso声明是这样的:

_:b0 a    rdf:Statement ; 
    rdf:subject bdr:T123 ; 
    rdf:predicate rdfs:seeAlso ; 
    rdf:object bdr:T1129 ; 
    rdfs:label "reification 1" . 

但它很容易找到的东西一些例子(herehere等),如:

_:b1 a    owl:Axiom ; 
    owl:subject bdr:T123 ; 
    owl:predicate rdfs:seeAlso ; 
    owl:object bdr:T1129 ; 
    rdfs:label "reification 2" . 

第一个问题:我的理解是猫头鹰:主语,谓语,宾语被弃用,是这样吗?

的另一种方式具体化和注释与OWL三重似乎是:

_:b2 a      owl:Axiom ; 
    owl:annotatedSource bdr:T123 ; 
    owl:annotatedProperty rdfs:seeAlso ; 
    owl:annotatedTarget bdr:T1129 ; 
    rdfs:label   "reification 3" . 

(这就是所使用的门生例如),但我不明白的RDF物化+注释和之间的区别OWL reification +注解...... OWL方式是告诉推理者不要考虑推理的一种方式吗?其他的区别是什么?

回答

5

RDF reification提供了一种讨论RDF语句的方法。实例化三元组指出,有一种类型声明资源表示RDF三元组bdr:T123 rdfs:seeAlso bdr:T1129所说的内容。然后,您可以添加关于此声明的声明,而不管声明声明是否为真。例如,您可以说该声明代表Akira的意见,或者声明在1942年至2017年之间是真实的。

OWL 2公理注释提供了添加关于公理的信息的方法。注释说明了一些关于公理的内容,而不一定关于它表达的内容。例如,可以说这个公理在2014年10月被添加到本体中,这并不意味着该声明在2014年持续。的OWL 2注解机构根据OWL 2 structural specification and functional-style syntax,其中一个公理注释是这样写的定义:

AnnotationAssertion(
    Annotation(rdfs:label "reification 1") 
    rdfs:seeAlso bdr:T123 bdr:T1129 
) 

注意,在OWL 2,rdfs:seeAlso被定义为注释属性,所以原来的断言(bdr:T123 rdfs:seeAlso bdr:T1129)本身就是一个注解断言。你应该看到,这里没有具体化。 As Ignazio saidowl:annotated*条款仅存在于映射到RDF图中。

为了与编程类比,您可以想象一个程序,其中一个人想要作为一等公民来管理编程指令。例如,如果编程语言允许你写:

MyClass.myMethod(param1,param2); // Instruction I1 

你想有一个在内存中的结构告诉被执行这样的指令时,你可能会引入具体化指令类:

Instruction ins = new Instruction(...); // Construct Instruction I1 
ins.setExecutionTime("2017-08-13T10:42:42"); 

这类似于RDF的具体化。现在,我还可以说Béatrice已经将指令添加到了代码中。但是,这并不是说说关于指令本身,而是关于它在代码中的出现。所以它会更好地表达如下:

MyClass.myMethod(param1,param2); // this was added by Béatrice 

这与OWL 2注释类似。

+0

感谢您的答案,这是很清楚! –

1

还有你的猫头鹰注释仅适用于在RDF公理注释,如下所述:https://www.w3.org/TR/owl2-mapping-to-rdf/

推理不知道具体化的语句,因为这物化是RDF只是一个语法的解决方法 - 其他语法做不是为了给它们加注释或者嵌套注释。 (花费了一些时间来调试处理嵌套注释的OWLAPI代码,我想向那些嵌套注释非常简单的那些语法的作者表示感谢。我不知道owl:annotated*属性不被使用。它们是当前OWL2到RDF映射的一部分。

+1

的'猫头鹰:annotatedSource'等是用于注解公理** ** RDF,如在https://www.w3.org/TR/owl2-mapping-to-rdf/说明。它是** RDF **的语法解决方法,因此将出现在RDF(RDF/XML,Turtle,N-triples,JSON-LD,HDT,TriX ...)的任何具体语法中。它们是当前OWL 2到** RDF **映射的一部分。 –

+0

好点@AntoineZimmermann,我修改了我的答案 – Ignazio

+0

@Ignazio你提到“我想向那些嵌套注释非常简单的那些语法的作者表示感谢。这些语法中有些是什么? –

2

我认为owl:{subject,predicate,object}反映了这些RDF属性的URI的早期提案。他们从来没有任何规范的一部分,所以虽然没有正式弃用,但他们没有被使用。 owl:annotated{Source,Property,Target} URI是官方规格Ignazio链接到的。

事实上,我们有两个用于物化的词汇表(RDF,OWL2)是不幸的,但OWL2规范开发人员认为这是必要的。还有一些其他的差异 - 例如OWL实体公理必须是空白节点。

+0

在规范只是一个工作草案时,在OWL 2开发的某个阶段,“owl:subject”等是规范的一部分。这甚至是在推荐记载:https://www.w3.org/TR/owl2-mapping-to-rdf/#Changes_Since_Last_Call –

+0

谢谢您的回答,我对这个想法感到不解的是OWL具体化的轴子必须空白节点,你能指点我一个关于这个的来源吗?它背后的理由是什么? –

+0

对不起,我想我找到了:“表7.解析声明中G” https://www.w3.org/TR/owl2-mapping-to-rdf/ –