在 owl 中仅使用约束会导致不一致

Using only constraint in owl leads to inconsistency

我正在尝试模拟以下情况:

我想尝试使用“only”限制,因此我定义了 Bachelor,例如,等同于“has only BachelorStudent”。 因此,我使用 Protegé 生成了以下代码:

:has rdf:type owl:ObjectProperty ;
    rdfs:domain :Degree ;
    rdfs:range :Student .

:Bachelor rdf:type owl:Class ;
    owl:equivalentClass [ rdf:type owl:Restriction ;
                          owl:onProperty :has ;
                          owl:allValuesFrom :BachelorStudent
                        ] ;
    rdfs:subClassOf :Degree ;
    owl:disjointWith :Master .

:BachelorStudent rdf:type owl:Class ;
    rdfs:subClassOf :Student ;
    owl:disjointWith :MasterStudent .

:Degree rdf:type owl:Class ;
    owl:disjointWith :Student ;
    owl:disjointUnionOf ( :Bachelor
                          :Master
                        ) .

:Master rdf:type owl:Class ;
    owl:equivalentClass [ rdf:type owl:Restriction ;
                          owl:onProperty :has ;
                          owl:allValuesFrom :MasterStudent
                        ] ;
    rdfs:subClassOf :Degree .

:MasterStudent rdf:type owl:Class ;
    rdfs:subClassOf :Student .

:Student rdf:type owl:Class ;
    owl:disjointUnionOf ( :BachelorStudent
                          :MasterStudent
                        ) .

但是,当我启动推理器时,这会导致不一致。提供的解释如下: 我不知道我做错了什么。是我误解了“only”的用法,还是有其他错误?

问题如下:公理:

Master EquivalentTo has only MasterStudent

因此,没有 has 属性 的事物被 class 化为 Master(has only MasterStudent 包含没有 has 属性)。如果这听起来很奇怪,请想想 class hasChild only Person。此 class 识别事物,如果它们有 children,那么 children 就是人。很明显,人属于这个class,即使他们没有children.

Bachelor也是如此。所以,如果一个东西没有 has 属性,那么它一定同时属于 BachelorMaster。但是如果存在这样的东西,那么它就违反了BachelorMaster之间的不相交关系。所以我们必须得出结论,所有东西都有has属性。这意味着一切都是 Degree(因为 has 的域)并且与 Student 相关(因为 has 的范围)。所以存在学生,并且由于一切都是Degree,这些学生是学位,这违反了StudentDegree之间的不相交。

现在,您的模型的问题在于您使用了等价公理。您应该改为使用 subclass 关系,并添加所有学位必须与至少一些学生具有 has 关系,如下所示:

Master SubClassOf has only MasterStudent
Master SubClassOf has some Student
Bachelor SubClassOf has only BachelorStudent
Bachelor SubClassOf has some Student

甚至,如果您希望它更受约束:

Master EquivalentTo (has only MasterStudent and has some Student)
Bachelor EquivalentTo (has only MasterStudent and has some Student)