2012-10-27 53 views
0

我有一些層次結構,我需要用貓頭鷹語法編寫它們。所有對象 都是沒有人在這裏的類。編寫貓頭鷹文件

每個層次結構中類之間的關係是相同的。例如,「關係」是所有類之間的關係。

我應該如何定義這些關係?我知道對象的屬性,但我需要類似於subClassof關係,它是樹中所有類之間的關係(保護者)。

是否有可能在貓頭鷹語法中定義這樣的關係,我應該如何定義它?

我做到了,但是當我驗證我的文件時,我收到了錯誤。

<?xml version="1.0"?> 
<rdf:RDF 
    xmlns="http://example.org/1#" 
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
    xmlns:owl="http://www.w3.org/2002/07/owl#" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema#" 
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" 
    xml:base="http://example.org/1"> 
    <owl:Ontology rdf:about=""> 
    <owl:versionInfo rdf:datatype="http://www.w3.org/2001/XMLSchema#string" 
    >Created with TopBraid Composer</owl:versionInfo> 
    </owl:Ontology> 
    <owl:Class rdf:ID="a"> 
    <haspart> 
     <owl:Class rdf:ID="b"/> 
    </haspart> 
    </owl:Class> 
    <rdf:Property rdf:ID="haspart"> 
    <rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/> 
    <rdfs:domain rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/> 
    </rdf:Property> 
</rdf:RDF> 

這些都是錯誤

非類型化的對象屬性:http://example.org/1#haspart 非類型化類:http://www.w3.org/2000/01/rdf-schema#Class

+0

如果你想手動寫你的本體,然後去做!你爲什麼開一個關於寫貓頭鷹文件的問題? 我仍然建議首先使用像protege這樣的工具來理解它在Owl語法中產生的內容。一旦你熟悉了OWL,那麼你就可以直接在文件上建立你的本體。 –

+0

@阿爾芒PLZ再次檢查問題,我已經完成了它。 – Persian

+2

老實說,採取這個建議:*不要手寫RDF/XML *。使用本體編輯器(如Protege),或者如果您更願意手動編寫,請使用更方便的語法,如Turtle或Manchester Syntax。 –

回答

4

的問題是在你的hasPart關係的定義。爲了擺脫你提到的兩個錯誤,首先應該將其定義爲owl:ObjectProperty而不是rdf:Property,其次,域和範圍應該指向http://www.w3.org/2002/07/owl#Class,而不是http://www.w3.org/2000/01/rdf-schema#Class

但留意評論中的建議:不要手動編寫RDF/XML語法。這是學習如何使用OWL的最糟糕的方法。

FWIW,這裏是你的本體(含修改)會是什麼樣的海龜:

@prefix : <http://example.org/1#> . 
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . 
@prefix owl: <http://www.w3.org/2002/07/owl#> . 
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> . 
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . 

[] a owl:Ontology ; 
    owl:versionInfo "Created with TopBraid Composer"^^xsd:string . 

:a a owl:Class ; 
    :hasPart :b . 
:b a owl:Class . 

:hasPart a owl:ObjectProperty ; 
     rdfs:domain owl:Class ; 
     rdfs:range owl:Class . 
+0

我已經這樣做了,但是當它驗證文件時,我通過owl-lite和owl-Dl得到了錯誤,但它完全可以被貓頭鷹完全使用。我該怎麼辦? – Persian

+0

你應該做什麼取決於你需要什麼。我個人幾乎從不擔心OWL Lite/DL的有效性,但是否對您有影響取決於您想要使用本體的內容。我懷疑(沒有測試過)模型是OWL Full的原因是OWL DL不允許類之間的關係(至少OWL 1沒有,我相信在OWL 2中有一些解決方法)。 –

+0

@ Jeen Broekstra如果我使用 isPartOf 而不是owl:ObjectProperty這些錯誤將被移除OWl(DL-EL-QL_RL)。這是真的嗎? – Persian