Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在OWLAPI中区分断言公理和推断公理?_Java_Owl_Owl Api - Fatal编程技术网

Java 如何在OWLAPI中区分断言公理和推断公理?

Java 如何在OWLAPI中区分断言公理和推断公理?,java,owl,owl-api,Java,Owl,Owl Api,我的目标是通过OWLAPI分别捕获断言和推断的公理,换句话说,区别在于本体中已经存在的公理和那些不存在但仅由推理者推断的公理 例如: public void printHierarchy(OWLReasoner r, OWLClass clazz, int level, Set<OWLClass> visited) throws OWLException { //Only print satisfiable classes to skip Nothing if (!visi

我的目标是通过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);
    }
  }
}
public void printHierarchy(OWLReasoner、OWLClass clazz、int-level、Set-visted)抛出OWLException{
//只打印可满足的类,不跳过任何内容
如果(!visitored.contains(clazz)和&reasoner.issatifiable(clazz)){
访问。添加(clazz);
对于(int i=0;i
函数getSubclass返回OWL类的所有子类,而不区分本体中是否提到它。 我也可以进行手动检查,但可能会非常昂贵。
因此,我的问题是:是否有一个内置函数或解决方法来捕获从推断出的公理中分别断言的内容?

没有任何预先存在的内容,正如注释中所建议的那样,您可以创建推断结果所建议的公理,并检查它们是否存在于本体中。这个过程中最昂贵的部分将是axiom创建,但这在复杂性上仍然是线性的-推理仍然可能是最大的成本。

OWLOntology::ContainesAXIOM
是一种方法-这将检查断言的公理。显然,你必须先创建这个公理,但我想这应该是清楚的。