2017-08-10 111 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/ –