我正在尝试使用 owl-api 为 OWL 2 RL 'The Semantics of Equality' 中的规则生成蕴涵。我已经尝试过:为什么在 Protege 中可视化的推理与导出的推理公理不同
genInferred.add(new InferredSubClassAxiomGenerator());
genInferred.add(new InferredClassAssertionAxiomGenerator());
genInferred.add(new InferredDisjointClassesAxiomGenerator());
genInferred.add(new InferredEquivalentClassAxiomGenerator());
genInferred.add(new InferredEquivalentDataPropertiesAxiomGenerator());
genInferred.add(new InferredEquivalentObjectPropertyAxiomGenerator());
genInferred.add(new InferredInverseObjectPropertiesAxiomGenerator());
genInferred.add(new InferredObjectPropertyCharacteristicAxiomGenerator());
genInferred.add(new InferredPropertyAssertionGenerator());
genInferred.add(new InferredSubDataPropertyAxiomGenerator());
genInferred.add(new InferredSubObjectPropertyAxiomGenerator());
并尝试预先计算相同的个人推理:
reasoner.precomputeInferences(InferenceType.SAME_INDIVIDUAL);
ontologyInf.addAxioms(reasoner.getPendingAxiomAdditions());
我已经尝试使用 Openllet 和 hermit 作为推理器。
但我仍然不能产生这样的蕴涵:
If:
T(?x, owl:sameAs, ?y)
T(?y, owl:sameAs, ?z)
Then:
T(?x, owl:sameAs, ?z)
或平等语义学中的任何内容。