Недавно я создал небольшую онтологию для практики. В моей онтологии существует класс EmployedPerson, определенный одним правилом SWRL: Person (? X), (worksin min 1 Place) (? X) -> EmployedPerson (? X).
Также у меня есть еще один класс UnEmployedPerson, определенный выражением класса: Equivalent to (Person and (not (EmployedPerson))), что означает, что UnEmployedPerson является дополнением к EmployedPerson.
Оба упомянутых класса (EmployedPerson и UnEmployedPerson) являются подклассами класса Person, а параметр person установлен как «EmployedPerson или UnEmployedPerson». В классе Person три человека: Иван, Ленка и Мартин. Все люди разные.
Другой класс Place имеет индивидуальное приложение «WorksApplication». Свойство объекта worksin связывает класс Person и класс Place.
В моей онтологии есть две аксиомы: Ленка работает в приложении Works. Мартин работает в приложении Works. После рассуждений Пеллета и HermiT, Ленка и Мартин могут быть выведены как члены EmployedPerson на основе правила SWRL.
Поскольку Иван не принадлежит к EmployedPerson, а UnEmployedPerson является дополнением к EmployedPerson, поэтому Эван должен быть выведен как член класса UnEmployedPerson.
Но на самом деле, после рассуждений Пелле и Отшельника, Иван не может быть выведен из класса UnEmployedPerson. Результат не оправдал моих ожиданий. Что-то не так с моей ОНТОЛОГИЕЙ, или я пренебрегаю эффектом OWA? Пожалуйста, помогите мне разобраться с этой проблемой, я хочу, чтобы Иван был выведен из класса 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>