我有一个本体,有两个主要类(代码和主题)和一个对象属性(主题获得代码),其中:
当我在Protege中启动推理器时,推断的实例被断言到最深的主题子类,该实例仍然符合约束(参见附件Figure)。但是,如果我将推断的公理导出到单独的本体中,则每个主题子类都包含其自身及其后代的所有实例(显然,使用JAVA OWL API会观察到相同的行为)。
我的问题是:为什么结果会有所不同?我理解两种情况的逻辑,但我不明白为什么它们不同。是否有任何方法可以导出Protege中显示的推论?如果没有直接的方式,我可以从OWL API以某种方式迫使隐士(或其他推理者)向我展示完全相同的“黄色保护”结果吗?到目前为止,我发现只有一种解决方法 - 按原样导出推断,然后通过SPARQL请求差异。
我正在使用Protege 5.0.0,Reasoner Hermit 1.3.8和OWL API 5.0.5(虽然获得了不同的reasoners相同的结果:Fact ++,Pellet;以及不同的OWL API和Protege版本:4.x)< / p>
我会很高兴任何评论,即使一个简单的解释也会对我有所帮助。
答案 0 :(得分:0)
导出的公理取决于所使用的推断公理生成器集 - Protege可能使用与您选择的公式不同的集合。
这组发电机可在面板中配置;它的初始化看起来像这样:
addCheckBox(new InferredSubClassAxiomGenerator(), true, false);
addCheckBox(new InferredEquivalentClassAxiomGenerator(), true, false);
addCheckBox(new InferredSubObjectPropertyAxiomGenerator(), true, false);
addCheckBox(new InferredSubDataPropertyAxiomGenerator(), true, false);
addCheckBox(new InferredEquivalentObjectPropertyAxiomGenerator(), true, false);
addCheckBox(new InferredEquivalentDataPropertiesAxiomGenerator(), true, false);
addCheckBox(new InferredObjectPropertyCharacteristicAxiomGenerator(), false, false);
addCheckBox(new InferredDataPropertyCharacteristicAxiomGenerator(), false, false);
addCheckBox(new InferredInverseObjectPropertiesAxiomGenerator(), false, false);
addCheckBox(new InferredClassAssertionAxiomGenerator(), false, false);
addCheckBox(new InferredPropertyAssertionGenerator(), false, true);
addCheckBox(new InferredDisjointClassesAxiomGenerator(), false, true);
我猜测默认选择的是标记为true的那些。