0

我正在 Protege 中创建一个简单的本体,对基数进行推理存在问题。下面是本体的玩具模型。有、 和的三个实例A,每个实例分别具有 1、2 和 3属性。、和也有三个实例。BChasOwner:OnwerXYZ

用 定义了两个类owl:equivalentClass,一个是:Projectwith owl:someValuesFrom :Owner,一个是:JVwith owl:minQualifiedCardinality "2" ; owl:onClass :Owner

现在推理器正确地归类:JV为 ; 的子类:Project。并且它推断所有三个实例A,BC的实例:Project,但没有一个实例:JV。而从技术上讲,推理器应该将所有三个都作为实例:ProjectB并且C作为:JV( 的实例,因为它们具有 2 和 3 个断言:hasOwner属性。

谁能告诉我我错过了什么?这似乎也不是一个开放世界假设问题,因为我们正在处理最小基数。

:Owner rdf:type owl:Class .
:hasOwner rdf:type owl:ObjectProperty .
:Project rdf:type owl:Class ;
    owl:equivalentClass [ rdf:type owl:Restriction ;
                          owl:onProperty :hasOwner ;
                          owl:someValuesFrom :Owner
                        ] .
:JV rdf:type owl:Class ;
     owl:equivalentClass [ rdf:type owl:Restriction ;
                           owl:onProperty :hasOwner ;
                           owl:minQualifiedCardinality "2"^^xsd:nonNegativeInteger ;
                           owl:onClass :Owner
                         ] .
:A rdf:type owl:NamedIndividual ;
   :hasOwner :X .
:B rdf:type owl:NamedIndividual ;
   :hasOwner :X ,
             :Y .
:C rdf:type owl:NamedIndividual ;
   :hasOwner :X ,
             :Y ,
             :Z .
:X rdf:type owl:NamedIndividual , :Owner .
:Y rdf:type owl:NamedIndividual , :Owner .
:Z rdf:type owl:NamedIndividual , :Owner .
4

0 回答 0