Зараз я працюю над природною мовоюобробка проекту, що намагається використовувати openCYC як КБ. На даний момент я просто намагаюся завантажити онтологію та інстанціювати повторно за допомогою ява сови api v3.4.8 та HermiT, однак, коли я намагаюся інстанціювати повторно, я отримую помилку
Виняток у потоці "main" java.lang.IllegalArgumentException: Помилка: Парсований DisjointClasses (http://sw.opencyc.org/concept/Mx4rEHSj4Q0sQVGnAmZNRRJ20Q)
поточний код:
File ontology = new File("owl-export-unversioned.owl");
OWLOntologyManager m = OWLManager.createOWLOntologyManager();
System.out.println("Loading...");
OWLOntology o = m.loadOntologyFromOntologyDocument(ontology);
System.out.println("Loaded");
Reasoner hermit=new Reasoner(o);
System.out.println(hermit.isConsistent());
Чи означає це, що існує проблема із самою онтологією opencyc? Або я роблю щось не так?
Відповіді:
1 для відповіді № 1Проблема полягає в тому, що openCyc містить помилкову аксіому: a DisjointClasses
лише з одним аргументом. Специфікація OWL визначає, що DisjointClasses повинен мати два або більше аргументів.
API OWL дозволить проаналізувати цю онтологію, але HermiT поскаржиться на цю аксіому та, можливо, більше.
Ви можете використовувати OWL2DLProfile
щоб перевірити, які аксіоми порушують OWL 2 DLпрофіль. Це повідомить про інші помилкові аксіоми того ж типу. Вам доведеться самостійно вирішити, що є правильним рішенням - API OWL ще не має фіксуючої реалізації.