2015-06-17 3 views
0

Я пытаюсь проверить онтологию на предмет ее согласованности. Онтология включает только описания отдельных лиц, класс и семантические правила описываются импортированной онтологией.Проверка согласованности и удобочитаемости онтологии с API OWL 4

Я использую метод isConsistenct, который будет правильным выбором.

OWLReasonerFactory reasonerFactory = new StructuralReasonerFactory(); 
OWLReasoner reasoner =  reasonerFactory.createNonBufferingReasoner(mergedOntology); 
    if(reasoner.isConsistent()){ 
     return "Merged ontology PASSED the consistency test"; 
    }else{ 
     return "Ontology FAILED the consistency test"; 
    } 

Что бы правильный подход, чтобы проверить согласованность онтологии, как и Protege 5 применяется при запуске мыслителя?


обновление кода с использованием Пелле

 OWLReasonerFactory reasonerFactory = new PelletReasonerFactory(); 
     OWLReasoner reasoner = reasonerFactory.createNonBufferingReasoner(mergedOntology); 
     String answer = ""; 
     if(reasoner.isConsistent()){ 
      if(reasoner.getUnsatisfiableClasses().getEntitiesMinusBottom().size()>0){ 
       answer = "Merged ontology FAILED satisfiability test. Unsatisfiable classes detected: " + reasoner.getUnsatisfiableClasses().getEntitiesMinusBottom().size(); 
      } 
      answer = "Merged ontology PASSED the consistency test"; 
     }else{ 
      answer = "Merged ontology FAILED the consistency test, please review the Axioms or debug using Protege"; 
      //FYI an example how to implement a working debugger can be found on sourceforge's OWL API page under Debugger 
     } 
     reasoner.dispose(); 
     return answer; 
+0

В чем вопрос? Вы можете вычислить несогласованность с этим методом. Если вы хотите получить неудовлетворительные классы, вам нужно использовать другой метод. – Artemis

ответ

2

подхода является правильным, но использование StructuralReasonerFactory является проблемой. Этот разумник не делает никаких реальных аргументов, он просто использует утверждённые аксиомы для ответа на некоторые основные запросы. Он не может проверить согласованность.

Чтобы проверить целостность, вам нужно использовать реальную причину. Есть несколько аргументов, которые уже поддерживают OWLAPI 4, см. https://github.com/owlcs/owlapi/wiki

+0

Спасибо, я пробовал использовать Пелле в качестве аргумента. В настоящее время обнаружены непоследовательные онтологии, но я не уверен, что мне нужно проверить каждый класс на его выполнимость, чтобы быть в безопасности от устойчивости онтологии. – Corpswalker

+0

Некоторые классы могут быть неудовлетворительными по дизайну, хотя это не обычное явление. Их присутствие не делает онтологию необоснованной, хотя это может вызвать вопросы. Все зависит от конкретной онтологии. – Ignazio

+0

Является ли использование метода reasoner.getUnsatisfiableClasses() методом getEntitiesMinusBottom() правильным правилом, чтобы проверить, есть ли какие-либо неудовлетворенности? – Corpswalker

0

Protege также использует своего рода isConsistent метода. В зависимости от того, к какой версии вы обращаетесь, этот метод либо встроен разработчиками, либо используется тот, который разработан в OWL API. Например, посмотрите на this. Однако, когда вы запускаете аргумент в Protege, запускаются методы inConsistent и isSatisfiable. Итак, что вы видите, это результат двух действий. Прочтите следующее blog post для понимания разницы, если вам нужно. Суть является:

Таким образом, в то время как мы можем иметь невыполнимые классы в последовательной онтологии, все классы в противоречивой онтологии невыполнимы, так как непоследовательная онтология просто не имеют моделей, и, следовательно, она не может иметь один с экземплярами любого данного класса.

Если вы хотите, чтобы найти невыполнимые классы, вам просто нужно вызвать метод isSatisfiable по всем классам:

reasoner.isSatisfiable(className); 
+0

Существует ли необходимость вызова метода isSatisfiable, если аргумент не обнаруживает несогласованность? – Corpswalker

+0

Да, есть необходимость. Как упоминалось выше, онтология может быть последовательной, но иметь неудовлетворительные классы. Обычно, когда вы работаете с A-Box, с большей вероятностью возникает несогласованность, и когда вы работаете с T-Box, возникает неудовлетворительность. – Artemis

+0

Спасибо за ваш ответ. Онтологии, подлежащие проверке, - это только тип A-Box. Просто люди. – Corpswalker

Смежные вопросы