繁体   English   中英

如何在OWLAPI中区分断言与推论公理?

[英]How to distinguish asserted from inferred axioms in OWLAPI?

我的目标是捕获OWLAPI分别声明和推断的公理,换句话说,区别是本体中已经存在的公理与不存在但由推理者推断的公理之间的区别。

例如:

public void printHierarchy(OWLReasoner r, OWLClass clazz, int level, Set<OWLClass> visited) throws OWLException {
  //Only print satisfiable classes to skip Nothing

  if (!visited.contains(clazz) && reasoner.isSatisfiable(clazz)) {
    visited.add(clazz);
    for (int i = 0; i < level * 4; i++) {
      System.out.print(" ");
    }

    System.out.println(labelFor(clazz, r.getRootOntology()));

     // Find the children and recurse
    NodeSet<OWLClass> classes = r.getSubClasses(clazz, true);
    for (OWLClass child : classes.getFlattened()) {
      printHierarchy(r, child, level + 1);
    }
  }
}

函数getSubClasses返回OWL类的所有子类,而不区分是否在本体中提及。 我也可以执行手动检查,但这可能会非常昂贵。 因此,我的问题如下:是否有内置函数或替代方法来捕获与推论公理分开声明的内容?

正如注释中所建议的那样,您可以创建推理结果提示的公理并检查其是否存在于本体中。 该过程中最昂贵的部分将是公理的创建,但是复杂度仍然是线性的-推理仍可能是最大的开销。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM