2014-11-25 21 views
0

我有一个关于使用OWL API和reasoners的基本问题。如何在推断和明确公理之间进行区分?

我试过JFact Reasoner,成功运行它并获得了很多公理(其中一些推理,其中一些在原始本体中明确声明)。

我需要区分他们,但我真的找不到任何方法来做到这一点。

在OWLClass或其他地方有什么方法吗?

回答

1

断言公理与推断的区别仅在于它们明确存在于本体中。

您可以检查是否公理的存在本体是这样的:

OWLOntology o = ... 
OWLAxiom ax = ... 
boolean asserted = o.containsAxiom(ax); 

注:如果一个公理注释,这是可能的,它不会被泰斯法匹配:公理在语义上等效但具有不同注释的不是equals()(这是W3C规范,而不是OWL API决定)。在这种情况下,你可以找到一个公理与o.containsAxiomIgnoreAnnotations(ax)

+0

这就是我想要的,虽然我希望有更好的解决方案(如一些指示标志)......但大多数情况下我需要检查三元组。这样做有可能吗? – Hawk 2014-11-26 07:40:55

+0

在三重层面上做到这一点是不可能的 - 它们不直接暴露在OWL API中。您必须将本体和公理同时渲染为三元组并检查包含,同时也考虑具有不同身份的空白节点。有一些代码可以在渲染器包中流式传输,但其余部分需要大量编码。 – Ignazio 2014-11-26 12:05:28

相关问题