Как отличить утвержденные аксиомы в выводе в OWLAPI? - PullRequest
0 голосов
/ 03 мая 2018

Моя цель состоит в том, чтобы охватить отдельно утвержденные и выведенные аксиомы с помощью 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, не делая различий, упоминается ли он в онтологии или нет. Я также могу выполнить ручную проверку, но это может быть довольно дорого. Итак, мой вопрос заключается в следующем: есть ли встроенная функция или обходной путь для захвата отдельно утвержденных из выведенных аксиом?

1 Ответ

0 голосов
/ 04 мая 2018

Ничего предварительно не существует, как предлагается в комментарии, вы можете создать аксиомы, которые предлагают результаты выводов, и проверить, существуют ли они в онтологии. Самой дорогой частью процесса будет создание аксиомы, но она все еще линейна по сложности - рассуждения по-прежнему, вероятно, будут самыми большими затратами.

...