2012-10-24 64 views
3

嗨語義Web鄉親,爲什麼我的OWL推理器不給我我期望的結果?

我不期望有在NamedIndividual <rdf:type rdf:resource='#Tsunami'>:instance_Dromen推理下面的OWL代碼之後。 不知何故,#Huis和#Auto之間的不相交,或者我不使用正確的方式使用complementOf?在inferencer的結果NamedIndividual:instance_Dromen具有下面的輸出:

-

<rdf:Description rdf:about="http://www.almfluss.com/rdf/0.1/Ontology.owl#instance_Dromen"> 
    <owl:sameAs rdf:resource="http://www.almfluss.com/rdf/0.1/Ontology.owl#instance_Dromen"/> 
    <rdf:type rdf:resource="http://www.almfluss.com/rdf/0.1/Ontology.owl#Wielen"/> 
    <rdf:type rdf:resource="http://www.almfluss.com/rdf/0.1/Ontology.owl#Auto"/> 
    <rdf:type rdf:resource="http://www.almfluss.com/rdf/0.1/Ontology.owl#Onderstel"/> 
    <rdf:type rdf:resource="http://www.almfluss.com/rdf/0.1/Ontology.owl#Tsunami"/> 
    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Thing"/> 
    <rdf:type rdf:resource="http://www.almfluss.com/rdf/0.1/Ontology.owl#Dromen"/> 
    </rdf:Description> 

我作爲輸入使用的inferencer owl代碼是:


<?xml version="1.0" encoding="UTF-8" standalone="no"?> 

<!DOCTYPE rdf:RDF [ 
    <!ENTITY owl "http://www.w3.org/2002/07/owl#" > 
    <!ENTITY swrl "http://www.w3.org/2003/11/swrl#" > 
    <!ENTITY swrlb "http://www.w3.org/2003/11/swrlb#" > 
    <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" > 
    <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" > 
    <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" > 
    <!ENTITY Ontology201210 "http://www.almfluss.com/rdf/0.1/Ontology.owl#" > 
]> 

    <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
       xmlns="http://www.almfluss.com/rdf/0.1/Ontology.owl#" 
       xmlns:Ontology201210="http://www.almfluss.com/rdf/0.1/Ontology.owl#" 
       xmlns:owl="http://www.w3.org/2002/07/owl#" 
       xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" 
       xmlns:swrl="http://www.w3.org/2003/11/swrl#" 
       xmlns:swrlb="http://www.w3.org/2003/11/swrlb#" 
       xmlns:xsd="http://www.w3.org/2001/XMLSchema#" 
       xml:base="http://www.almfluss.com/rdf/0.1/Ontology.owl#"> 

    <owl:DatatypeProperty rdf:about="#hasValue"/> 

    <owl:Class rdf:about="#Dromen"> 
     <owl:equivalentClass> 
      <owl:Class> 
       <owl:unionOf rdf:parseType="Collection"> 
        <rdf:Description rdf:about="#Huis"/> 
        <rdf:Description rdf:about="#Auto"/> 
       </owl:unionOf> 
      </owl:Class> 
     </owl:equivalentClass> 
     <owl:equivalentClass> 
      <owl:Class> 
       <owl:complementOf rdf:resource="#Werkloos"/> 
      </owl:Class> 
     </owl:equivalentClass> 
     <owl:equivalentClass> 
      <owl:Class> 
       <owl:complementOf rdf:resource="#Arbeidsongeschikt"/> 
      </owl:Class> 
     </owl:equivalentClass> 

    </owl:Class> 
    <owl:NamedIndividual rdf:about="#instance_Dromen"> 
       <rdf:type rdf:resource="#Wielen"/> 
       <rdf:type rdf:resource="#Onderstel"/> 
    </owl:NamedIndividual> 

    <owl:Class rdf:about="#Huis"> 
     <owl:equivalentClass> 
      <owl:Class> 
       <owl:complementOf rdf:resource="#Tsunami"/> 
      </owl:Class> 
     </owl:equivalentClass> 
    </owl:Class> 
    <owl:NamedIndividual rdf:about="#instance_Huis"/> 

    <owl:Class rdf:about="#Auto"> 
     <owl:equivalentClass> 
      <owl:Class> 
       <owl:intersectionOf rdf:parseType="Collection"> 
        <rdf:Description rdf:about="#Wielen"/> 
        <rdf:Description rdf:about="#Onderstel"/> 
       </owl:intersectionOf> 
      </owl:Class> 
     </owl:equivalentClass> 
     <owl:disjointWith rdf:resource="#Huis"/> 
    </owl:Class> 
    <owl:NamedIndividual rdf:about="#instance_Auto"/> 

    <owl:Class rdf:about="#Werkloos"> 
     <owl:equivalentClass> 
      <owl:Class> 
       <owl:unionOf rdf:parseType="Collection"> 
        <rdf:Description rdf:about="#ZelfOntslag"/> 
        <rdf:Description rdf:about="#Ontslagen"/> 
       </owl:unionOf> 
      </owl:Class> 
     </owl:equivalentClass> 
    </owl:Class> 
    <owl:NamedIndividual rdf:about="#instance_Werkloos"/> 

    <owl:Class rdf:about="#Arbeidsongeschikt"/> 
    <owl:NamedIndividual rdf:about="#instance_Arbeidsongeschikt"/> 

    <owl:Class rdf:about="#Wielen"/> 
    <owl:NamedIndividual rdf:about="#instance_Wielen"/> 

    <owl:Class rdf:about="#Onderstel"/> 
    <owl:NamedIndividual rdf:about="#instance_Onderstel"/> 

    <owl:Class rdf:about="#Ontslagen"/> 
    <owl:NamedIndividual rdf:about="#instance_Ontslagen"/> 

    <owl:Class rdf:about="#ZelfOntslag"/> 
    <owl:NamedIndividual rdf:about="#instance_ZelfOntslag"/> 

    <owl:Class rdf:about="#Tsunami"/> 
    <owl:NamedIndividual rdf:about="#instance_Tsunami"/> 
    </rdf:RDF> 

我希望有人能幫我。

在此先感謝。

問候, 的Martijn範德Plaat

回答

1

instance_Dromen(從現在開始稱之爲i,爲簡潔起見)被定義爲Wielen型和Onderstel型。導致它被Tsunami型的推理如下:

  1. 您所定義的類Auto是相當於WielenOnderstel的交點,因此i被推斷爲Auto類型。
  2. 由於i類型爲Auto,我們知道它不是Huis類型(因爲這兩個類被定義爲不相交)。
  3. 由於Tsunami被定義爲Huis補(即,不是HuisTsunami一切),而i不是Huis類型,我們可以推斷,iTsunami

說得更簡潔,你的本體被建模的方式導致每個Auto都是Tsunami

+0

謝謝!這正是我正在尋找的答案。這不是我期望的行爲..我同意xml/rdf不是最好的可讀格式,但是這種格式是最常用的,所以在 – martijnplaat

+0

@martijnplaat中,如果你發現我的答案有幫助,你可以幫我一個真正的好處通過投票和/或接受它... –

+0

對不起,我的聲望只有11,我需要15投票!無論哪種方式,我已經接受你的答案。其實,我有一個後續問題,但是我必須開始一個新的問題頁面。 – martijnplaat

3

你的本體是挺亂的,比如,你說,汽車是從回族脫節,但Dromen相當於回族&汽車的工會。

如果您正在手動寫入,請停止。去獲得Protege 4並用它來創作你的本體。除了使本體更易於編寫之外,它還與各種reasoners集成,因此您可以在GUI中檢查一致性&。而且您還可以使用解釋工具來告訴您爲什麼進行了特定的推斷。

最後,你幾乎總是想要subClassOf而不是equivalentTo。這種關係中的對等是雙向的,這通常不是作者所期望的。

+0

謝謝你的回答。但是,我不想使用像Protege這樣的工具。 我正在尋找我的問題的正式答案:你能邏輯地解釋爲什麼instance_Dromen個體在推理過程之後得到了rdf:type海嘯? unionOf Huis&Auto背後的想法以及Auto en Huis之間的脫離是因爲我想創建一個我的個人可能是rdf類型的情況:Domen但從來沒有同時輸入:Huis和type:Auto。 – martijnplaat

1

我同意@Michael寫的。只是呈現OWL代碼爲(#1)問題的一部分,一些基本點:因爲這兩個

  • 使用人類可讀的語法,即避免XML和避免RDF(你同時使用......)是一個不必要的冗長人與人的通信
  • 解釋每個公理背後的意圖用簡單的英語(在這種情況下,如SWRL空間前綴)
  • 使用英語的實體名稱(荷蘭沒有被廣泛#2用戶中使用)
  • 刪除的東西,是不相關的

這些變化,你可能會只剩下幾行代碼,並與它的問題可能成爲立即可見後...

+0

FWIW我不認爲實體名稱是荷蘭語這一事實在這裏特別相關 - 但我同意你的一般觀點,即更可讀的格式將是好的:) –

相關問題