我已将某个类定义为属性的限制:
:A rdf:type owl:Class ;
owl:equivalentClass [ rdf:type owl:Restriction ;
owl:onProperty :P ;
owl:someValuesFrom xsd:string
] .
并希望重用'这个限制在另一个类中,我使用了equivalentClass层次结构:
:B rdf:type owl:Class ;
owl:equivalentClass :A.
但是后来我对Protege显示的结果感到困惑::B显示为equivalentClass:A(如预期的那样)但是" subClassOf(Anonymous Ancestor)" to" P some xsd:string"。我预料到:B继承属性限制也作为equivalentClass。
B中属性限制的子类化而不是等效的类关系会影响包含属性P的个体的类型推理:
:Ind rdf:type owl:NamedIndividual ;
:P "p" .
推理者(我使用FACT ++)推断出Ind是A类,因为它包含属性P和B类 - 因为它是A,而A等于B,但不是因为财产P.
所以,我想问一下,为什么属性限制在我的例子中作为subClassOf继承,如果有可能将它继承为equivalentClass?
感谢任何提示。
答案 0 :(得分:0)
小心不要将Protégé的行为与推理器的工作方式以及OWL的工作方式混淆。有可能的是,当您在Protégé中应用推理时,Protégé只会询问课程上层的内容。也许Protégé没有问推理者什么是等价的。我注意到,对于几种推论,Protégé并没有显示它们,即使reasoners本身能够推断出它们。我从来没有深入了解Protégé的源代码,而且我对Pellet的工作方式知之甚少,对HermiT算法的理论知识有限,对其他reasoners的代码没有其他了解,所以我不能多说。
在任何情况下,您都不会误解OWL的语义是如何工作的,这可能不是推理器中的错误。这当然是由于Protégé的工作方式。