Проблема с «getInstanceExplanations» при использовании OWL-API и Pellet reasoner

#owl-api #pellet

Вопрос:

Я пытаюсь получить объяснения рассуждений, используя метод getInstanceExplanations:

 Set<Set<OWLAxiom>> expIns = expGen.getInstanceExplanations(individual, Class);
 

Но у меня была эта ошибка:

 Exception in thread "main" java.lang.NoSuchMethodError: 'org.semanticweb.owlapi.model.OWLLiteral org.semanticweb.owlapi.model.OWLDataFactory.getOWLTypedLiteral(java.lang.String, org.semanticweb.owlapi.model.OWLDatatype)'
at com.clarkparsia.pellet.owlapiv3.ConceptConverter.visitLiteral(ConceptConverter.java:348)
at com.clarkparsia.pellet.owlapiv3.ConceptConverter.visitRestrictedDatatype(ConceptConverter.java:386)
at org.mindswap.pellet.output.ATermBaseVisitor.visit(ATermBaseVisitor.java:109)
at com.clarkparsia.pellet.owlapiv3.ConceptConverter.visitSome(ConceptConverter.java:174)
at org.mindswap.pellet.output.ATermBaseVisitor.visit(ATermBaseVisitor.java:85)
at com.clarkparsia.pellet.owlapiv3.ConceptConverter.visitList(ConceptConverter.java:357)
at com.clarkparsia.pellet.owlapiv3.ConceptConverter.visitAnd(ConceptConverter.java:138)
at org.mindswap.pellet.output.ATermBaseVisitor.visit(ATermBaseVisitor.java:67)
at com.clarkparsia.pellet.owlapiv3.ConceptConverter.visitSome(ConceptConverter.java:174)
at org.mindswap.pellet.output.ATermBaseVisitor.visit(ATermBaseVisitor.java:85)
at com.clarkparsia.pellet.owlapiv3.ConceptConverter.visitList(ConceptConverter.java:357)
at com.clarkparsia.pellet.owlapiv3.ConceptConverter.visitOr(ConceptConverter.java:148)
at org.mindswap.pellet.output.ATermBaseVisitor.visit(ATermBaseVisitor.java:73)
at com.clarkparsia.pellet.owlapiv3.ConceptConverter.visitList(ConceptConverter.java:357)
at com.clarkparsia.pellet.owlapiv3.ConceptConverter.visitAnd(ConceptConverter.java:138)
at org.mindswap.pellet.output.ATermBaseVisitor.visit(ATermBaseVisitor.java:67)
at com.clarkparsia.pellet.owlapiv3.ConceptConverter.convert(ConceptConverter.java:84)
at com.clarkparsia.pellet.owlapiv3.AxiomConverter.convert(AxiomConverter.java:87)
at com.clarkparsia.owlapi.explanation.GlassBoxExplanation.convertExplanation(GlassBoxExplanation.java:263)
at com.clarkparsia.owlapi.explanation.GlassBoxExplanation.getPelletExplanation(GlassBoxExplanation.java:228)
at com.clarkparsia.owlapi.explanation.GlassBoxExplanation.getExplanation(GlassBoxExplanation.java:191)
at com.clarkparsia.owlapi.explanation.HSTExplanationGenerator.getExplanation(HSTExplanationGenerator.java:110)
at com.clarkparsia.owlapi.explanation.HSTExplanationGenerator.getExplanations(HSTExplanationGenerator.java:131)
at com.clarkparsia.owlapi.explanation.HSTExplanationGenerator.getExplanations(HSTExplanationGenerator.java:115)
at com.clarkparsia.owlapi.explanation.PelletExplanation.getUnsatisfiableExplanations(PelletExplanation.java:154)
at com.clarkparsia.owlapi.explanation.PelletExplanation.getEntailmentExplanations(PelletExplanation.java:82)
at com.clarkparsia.owlapi.explanation.PelletExplanation.getInstanceExplanations(PelletExplanation.java:111)
at com.google.mapApi.map.Ontology.Ontology.main(Ontology.java:492)
 

Я использую OWL-API 4.5.0 и pellet 2.3.2

Ответ №1:

Pellet 2.3.2 использует OWLAPI 3.x.x и не совместим с OWLAPI 4.x.x

На Maven Central доступна сборка, совместимая с OWLAPI 4 https://search.maven.org/search?q=v:2.4.0-ignazio1977

Существует также гораздо более поздняя сборка для OWLAPI 5, под вилкой Openllet: https://search.maven.org/artifact/com.github.galigator.openllet/openllet-parent/2.6.4/pom

(2.6.4 совместим с Java 8, так же, как и версии, которые вы используете в настоящее время.)

Комментарии:

1. Я добавил файлы jar для pellet 2.4.0 в путь к классу, но получил еще одну ошибку: исключение в потоке «основной» java.lang. Ошибка noSuchMethod: ‘java.util. Список org.semanticweb.owlapi.модель. OWLOntologyManager.ApplyChanges(java.util.List)’ в com.clarkparsia.owlapiv3. OntologyUtils.Обновите онтологию(OntologyUtils.java:235) по адресу….. com.clarkparsia.owlapi.объяснение. PelletExplanation.getInstanceExplanations(PelletExplanation.java:111) в com.google.mapApi.карта.Онтология. Ontology.main(Онтология.java:488)

2. Это связано с конфликтами версий OWLAPI. Вы закончили с несколькими различными версиями на пути к классу.

3. Какую наиболее стабильную версию OWL-API v4 вы предлагаете для работы с pellet 2.4.0? Заранее спасибо

4. Если вы можете изменить версии OWLAPI, я рекомендую вам использовать Openllet 2.6.4 и версию OWLAPI, на которую он опирается, поскольку они оба намного более свежие, чем те, которые вы используете в настоящее время.

5. Openllet 2.6.4 ссылается на OWLAPI 5.1.5 или более новую версию search.maven.org/artifact/com.github.galigator.openllet/…