簡體   English   中英

OWL和Pr​​otege中的互補推理

[英]Complement reasoning in OWL and Protege

我最近創建了一個小本體來練習。 在我的本體中,存在一個由EmployedPerson定義的類,該類由一個SWRL規則定義:Person(?x),(在1個位置內最小工作)(?x)-> EmployedPerson(?x)。

我還有另一個類,它是UnEmployedPerson,由一個類表達式定義:等效於(Person和(not(EmployedPerson))),這意味着UnEmployedPerson是EmployedPerson的補充。

提到的兩個類(EmployedPerson和UnEmployedPerson)都是Person的子類,並且person被設置為“ EmployedPerson或UnEmployedPerson”。 人物課有三個人:伊萬,倫卡和馬丁。 所有個人都是不同的個人。

另一個類Place,具有單獨的“ WorksApplication”。 對象屬性“ worksin”鏈接類“ Person”和類“ Place”。

在我的本體中,有兩個公理:Lenka worksin在Worksapplication中Martin工作在Worksapplication中在經過Pellet和HermiT的推理后,可以根據SWRL規則將Lenka和Martin推斷為EmployedPerson的成員。

因為Ivan不屬於EmployedPerson,並且UnEmployedPerson是EmployedPerson的補充,所以應將Evan推斷為UnEmployedPerson類的成員。

但是實際上,經過Pellet和Hermit的推理,不能將Ivan歸類為UnEmployedPerson。 結果沒有達到我的期望。 我的本體論是否有問題,或者我忽略了OWA的影響? 請幫助我解決這個問題,我想看看Ivan是在UnEmployedPerson類中推斷出來的!!

這是我的本體,演示了此行為:

<Declaration>
    <Class IRI="#Adult"/>
</Declaration>
<Declaration>
    <Class IRI="#EmployedPerson"/>
</Declaration>
<Declaration>
    <Class IRI="#Parent"/>
</Declaration>
<Declaration>
    <Class IRI="#Person"/>
</Declaration>
<Declaration>
    <Class IRI="#Place"/>
</Declaration>
<Declaration>
    <Class IRI="#UnemployedPerson"/>
</Declaration>
<Declaration>
    <ObjectProperty IRI="#wokrsin"/>
</Declaration>
<Declaration>
    <NamedIndividual IRI="#Ivan"/>
</Declaration>
<Declaration>
    <NamedIndividual IRI="#Lenka"/>
</Declaration>
<Declaration>
    <NamedIndividual IRI="#Martin"/>
</Declaration>
<Declaration>
    <NamedIndividual IRI="#TreatHighBloodSugar"/>
</Declaration>
<Declaration>
    <NamedIndividual IRI="#worksapplication"/>
</Declaration>
<EquivalentClasses>
    <Class IRI="#Person"/>
    <ObjectUnionOf>
        <Class IRI="#EmployedPerson"/>
        <Class IRI="#UnemployedPerson"/>
    </ObjectUnionOf>
</EquivalentClasses>
<EquivalentClasses>
    <Class IRI="#UnemployedPerson"/>
    <ObjectIntersectionOf>
        <Class IRI="#Person"/>
        <ObjectComplementOf>
            <Class IRI="#EmployedPerson"/>
        </ObjectComplementOf>
    </ObjectIntersectionOf>
</EquivalentClasses>
<SubClassOf>
    <Class IRI="#Adult"/>
    <Class IRI="#Person"/>
</SubClassOf>
<SubClassOf>
    <Class IRI="#EmployedPerson"/>
    <Class IRI="#Person"/>
</SubClassOf>
<SubClassOf>
    <Class IRI="#Parent"/>
    <Class IRI="#Person"/>
</SubClassOf>
<SubClassOf>
    <Class IRI="#UnemployedPerson"/>
    <Class IRI="#Person"/>
</SubClassOf>
<DisjointClasses>
    <Class IRI="#Person"/>
    <Class IRI="#Place"/>
</DisjointClasses>
<ClassAssertion>
    <Class IRI="#Person"/>
    <NamedIndividual IRI="#Ivan"/>
</ClassAssertion>
<ClassAssertion>
    <Class IRI="#Person"/>
    <NamedIndividual IRI="#Lenka"/>
</ClassAssertion>
<ClassAssertion>
    <Class IRI="#Person"/>
    <NamedIndividual IRI="#Martin"/>
</ClassAssertion>
<ClassAssertion>
    <Class IRI="#Place"/>
    <NamedIndividual IRI="#worksapplication"/>
</ClassAssertion>
<DifferentIndividuals>
    <NamedIndividual IRI="#Ivan"/>
    <NamedIndividual IRI="#Lenka"/>
</DifferentIndividuals>
<DifferentIndividuals>
    <NamedIndividual IRI="#Ivan"/>
    <NamedIndividual IRI="#Martin"/>
</DifferentIndividuals>
<DifferentIndividuals>
    <NamedIndividual IRI="#Ivan"/>
    <NamedIndividual IRI="#worksapplication"/>
</DifferentIndividuals>
<DifferentIndividuals>
    <NamedIndividual IRI="#Lenka"/>
    <NamedIndividual IRI="#Martin"/>
</DifferentIndividuals>
<DifferentIndividuals>
    <NamedIndividual IRI="#Lenka"/>
    <NamedIndividual IRI="#worksapplication"/>
</DifferentIndividuals>
<DifferentIndividuals>
    <NamedIndividual IRI="#Martin"/>
    <NamedIndividual IRI="#worksapplication"/>
</DifferentIndividuals>
<ObjectPropertyAssertion>
    <ObjectProperty IRI="#wokrsin"/>
    <NamedIndividual IRI="#Lenka"/>
    <NamedIndividual IRI="#worksapplication"/>
</ObjectPropertyAssertion>
<ObjectPropertyAssertion>
    <ObjectProperty IRI="#wokrsin"/>
    <NamedIndividual IRI="#Martin"/>
    <NamedIndividual IRI="#worksapplication"/>
</ObjectPropertyAssertion>
<DLSafeRule>
    <Body>
        <ClassAtom>
            <Class IRI="#Person"/>
            <Variable abbreviatedIRI="var:x"/>
        </ClassAtom>
        <ClassAtom>
            <ObjectMinCardinality cardinality="1">
                <ObjectProperty IRI="#wokrsin"/>
                <Class IRI="#Place"/>
            </ObjectMinCardinality>
            <Variable abbreviatedIRI="var:x"/>
        </ClassAtom>
    </Body>
    <Head>
        <ClassAtom>
            <Class IRI="#EmployedPerson"/>
            <Variable abbreviatedIRI="var:x"/>
        </ClassAtom>
    </Head>
</DLSafeRule>

0)您可以使用GCI代替SWRL規則

Person and (works min 1 Place) subClassOf EmployedPerson

這樣一來,您就可以使用不支持SWRL的推理機,該推理機也可以在類上工作(不僅限於命名的個人),並且總體上可以提供更好的性能。

1)這確實是OWA的結果。 我們不知道Ivan是否有工作場所。 由於我們不知道它工作場所,因此我們無法推斷出他是EmployedPerson 由於我們不知道它是否沒有工作場所,因此我們無法推斷出他是UnEmployedPerson 這里的Person完全由EmployedPersonUnEmployedPerson覆蓋這一事實並不重要:我們仍然不知道(由於OWA而無法推斷)他是哪種Person ,也不能拒絕任何選擇。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM