[英]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完全由EmployedPerson
和UnEmployedPerson
覆蓋這一事實並不重要:我們仍然不知道(由於OWA而無法推斷)他是哪種Person
,也不能拒絕任何選擇。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.