OWL 等同于 类 作为兄弟子类的补充

OWL Equivalent Classes as complement of Sibling SubClass

我有以下组成的示例 class 层次结构来消除我的疑问。

DogHuman 的 class 是 Animal 的子class。还有 class Leash.

我已将狗 class 建模为已定义 Class,对对象 属性 wearsLeash 具有 属性 限制,如图所示。

我已将人 class 建模为狗 class 的补充,如图所示

我为这些 classes 找了三个人,如下所示。 Leo 应该是 DogDavid 应该是 Human

我已经断言 Leo wearsLeash RedLeash 如图所示。

在 运行 内置推理器上,Leo 得到 classified 作为 DogDavid 没有得到 class化为 Human。我的问题是,为什么 David 不能被推断为 Human 的个体,因为 class 不是狗的动物?是由于开放世界假设吗?我还有哪些其他方法可以使用此逻辑自动将 David 推断为 Human

谢谢!

编辑:OWL 文件

@prefix : <http://www.semanticweb.org/university/untitled-ontology-107#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xml: <http://www.w3.org/XML/1998/namespace> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@base <http://www.semanticweb.org/university/untitled-ontology-107> .

<http://www.semanticweb.org/university/untitled-ontology-107> rdf:type owl:Ontology .

#################################################################
#    Object Properties
#################################################################

###  http://www.semanticweb.org/university/untitled-ontology-107#wearsLeash
:wearsLeash rdf:type owl:ObjectProperty .


#################################################################
#    Classes
#################################################################

###  http://www.semanticweb.org/university/untitled-ontology-107#Animal
:Animal rdf:type owl:Class .


###  http://www.semanticweb.org/university/untitled-ontology-107#Dog
:Dog rdf:type owl:Class ;
     owl:equivalentClass [ owl:intersectionOf ( :Animal
                                                [ rdf:type owl:Restriction ;
                                                  owl:onProperty :wearsLeash ;
                                                  owl:someValuesFrom :Leash
                                                ]
                                              ) ;
                           rdf:type owl:Class
                         ] ;
     rdfs:subClassOf :Animal ;
     owl:disjointWith :Human .


###  http://www.semanticweb.org/university/untitled-ontology-107#Human
:Human rdf:type owl:Class ;
       owl:equivalentClass [ owl:intersectionOf ( :Animal
                                                  [ rdf:type owl:Class ;
                                                    owl:complementOf :Dog
                                                  ]
                                                ) ;
                             rdf:type owl:Class
                           ] .


###  http://www.semanticweb.org/university/untitled-ontology-107#Leash
:Leash rdf:type owl:Class .


#################################################################
#    Individuals
#################################################################

###  http://www.semanticweb.org/university/untitled-ontology-107#David
:David rdf:type owl:NamedIndividual ,
                :Animal .


###  http://www.semanticweb.org/university/untitled-ontology-107#Leo
:Leo rdf:type owl:NamedIndividual ,
              :Animal ;
     :wearsLeash :RedLeash .


###  http://www.semanticweb.org/university/untitled-ontology-107#RedLeash
:RedLeash rdf:type owl:NamedIndividual ,
                   :Leash .


#################################################################
#    General axioms
#################################################################

[ rdf:type owl:AllDifferent ;
  owl:distinctMembers ( :David
                        :Leo
                      )
] .


###  Generated by the OWL API (version 4.5.9.2019-02-01T07:24:44Z) https://github.com/owlcs/owlapi

在ontology中定义HumanAnimalDog的补集的交集,为了class化Human 个实例,相当于将 Animal 定义为 DogHuman.

的不相交并集

这意味着任何定义为 Animal 的东西都将是 DogHuman;一个实例可以 class 化为 Dog 如果已知它系着皮带。

这里的问题是David不知道系皮带,不知道系皮带;开放世界假设意味着推理者不能选择任何一种可能性,因此不能决定 DavidDog 还是 Human。要获得您想要的内容,有必要向 ontology 添加更多信息,例如 David 属于 wearsLeash.[=27 域之外的 class =]