Я создаю простую онтологию в Protege, есть проблема с рассуждениями о кардинальности.Ниже представлена игрушечная модель онтологии.Есть три экземпляра A
, B
и C
, каждый из которых имеет свойство 1, 2 и 3 hasOwner
соответственно.Есть также три :Onwer
экземпляра X
, Y
и Z
.
Есть два класса, определенных с owl:equivalentClass
, один :Project
с owl:someValuesFrom :Owner
,другой - :JV
один с owl:minQualifiedCardinality "2" ; owl:onClass :Owner
.
Теперь мыслитель правильно классифицирует :JV
как подкласс :Project
;и он выводит все три экземпляра A
, B
и C
как экземпляры :Project
, но ни один как :JV
.Принимая во внимание, что технически, рассудитель должен поместить все три в качестве экземпляров :Project
, а B
и 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 .