Java 如何在推理公理和显式公理之间伪装?
我有一个关于使用OWLAPI和推理机的基本问题 我尝试了JFact Reasoner,成功地运行了它,并获得了许多公理(其中一些公理是推断出来的,一些公理是在原始本体中明确说明的) 我需要区分它们,但我真的找不到任何方法Java 如何在推理公理和显式公理之间伪装?,java,ontology,owl-api,reasoning,inferred-type,Java,Ontology,Owl Api,Reasoning,Inferred Type,我有一个关于使用OWLAPI和推理机的基本问题 我尝试了JFact Reasoner,成功地运行了它,并获得了许多公理(其中一些公理是推断出来的,一些公理是在原始本体中明确说明的) 我需要区分它们,但我真的找不到任何方法 OWLClass或其他地方是否有任何方法?断言的公理与推断的公理不同,只是因为它们显式地存在于本体中 您可以通过以下方式检查本体中是否存在公理: OWLOntology o = ... OWLAxiom ax = ... boolean asserted = o.contain
OWLClass或其他地方是否有任何方法?断言的公理与推断的公理不同,只是因为它们显式地存在于本体中 您可以通过以下方式检查本体中是否存在公理:
OWLOntology o = ...
OWLAxiom ax = ...
boolean asserted = o.containsAxiom(ax);
注意:如果一个axiom有注释,它可能不会被This方法匹配:语义上等价但注释不同的axiom彼此之间不是
equals()
(这是W3C规范,不是OWL API决定)。在这种情况下,您可以发现是否使用o.containsAxiomIgnoreAnnotations(ax)
断言了一个axiom,这就是我想要的,尽管我希望得到更好的解决方案(比如一些指示标志)。。。但我主要需要检查三个。有可能这样做吗?在三个级别上很难做到这一点-它们没有直接暴露在OWLAPI中。您必须将本体和公理呈现为三元组并检查包含,同时考虑具有不同标识的空白节点。在渲染器包中有三倍流的代码,但其余部分需要大量编码。