Начало работы с OWL API

Редактирование после ответа. Эта проблема возникла в основном из-за проблем с IDE. Это, скорее всего, будет полезно, если вы новичок в eclipse или программировании на Java в целом, а также изучаете OWL.

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

Проблема: я играл с OWL API в течение нескольких дней, и у меня возникли проблемы с поиском совместимых версий библиотек, необходимых для НИЧЕГО. Вот пример кода очень простой операции, которую я пытаюсь выполнить:

package converter;

import org.semanticweb.owlapi.apibinding.OWLManager;
import org.semanticweb.owlapi.model.OWLOntologyManager;

public class OWL_Converter {

    OWLOntologyManager m = OWLManager.createOWLOntologyManager();
}

Это выдает ровно 11 362 ошибки, когда я пытаюсь создать eclipse. Первые 50 или около того из этих ошибок говорят о таких вещах, как «AbstractAnnotatedAxiomRoundTrippingTestCase не может быть преобразован в тип». Пожалуйста, помогите мне понять, что я делаю неправильно. Я возился с OWL и API OWL в течение последних трех дней с очень медленным прогрессом, и теперь я натыкаюсь на такие стены, где кажется, что независимо от того, сколько классов API OWL я импортирую, у меня все еще есть неразрешенные типы из косвенные ссылки на классы и т.д...

Трассировка стека выглядит следующим образом:

Exception in thread "main" java.lang.NoClassDefFoundError: ch/qos/logback/core/joran/spi/JoranException
    at org.slf4j.LoggerFactory.getSingleton(LoggerFactory.java:189)
    at org.slf4j.LoggerFactory.bind(LoggerFactory.java:112)
    at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:105)
    at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:235)
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:208)
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:221)
    at org.semanticweb.owlapi.OWLAPIServiceLoaderModule.<clinit>(OWLAPIServiceLoaderModule.java:50)
    at org.semanticweb.owlapi.apibinding.OWLManager.<clinit>(OWLManager.java:42)
    at owl_converter.Converter.main(Converter.java:115)
Caused by: java.lang.ClassNotFoundException: ch.qos.logback.core.joran.spi.JoranException
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 9 more

person Dude    schedule 02.05.2015    source источник
comment
Что именно вы делаете? Я работаю с OWL API последние 3 года и считаю, что это лучшее руководство по началу работы. Кроме того, код, который вы написали, полностью исправен. Пожалуйста, добавьте трассировку стека, чтобы мы могли видеть, что не так.   -  person Artemis    schedule 02.05.2015
comment
@Artemis, спасибо за ответ. Приятно слышать, что у кого-то процесс адаптации к owl прошел более гладко — это дает мне надежду, что и у меня тоже получится. Что касается меня, помимо этих странных ошибок, которые я вижу, у меня также были проблемы с документацией. В каждом из просмотренных мной примеров всегда оказывается как минимум одна функция, которая устарела с момента ее создания, а затем я не могу найти информацию о том, как ее заменили. Поскольку я только начинаю, это становится немного ошеломляющим: / Кроме того, отредактировал исходный пост, чтобы включить трассировку стека. Спасибо!   -  person Dude    schedule 02.05.2015
comment
Вам нужно добавить регистратор apache, чтобы это работало. Вам не хватает API журнала slf4j. Добавьте это, а затем сделайте репост следующей проблемы. Как правило, эта строка кода полностью в порядке.   -  person Artemis    schedule 02.05.2015
comment
Я добавил его, но, похоже, он ничего не сделал. На самом деле, когда я импортировал библиотеку в свой java-файл, eclipse указывает, что она не используется.   -  person Dude    schedule 04.05.2015
comment
Не видя весь ваш код, невозможно сказать, что не так. Трассировка стека указывает на отсутствие некоторых API. Следуйте предложению Игнацио или разместите свой код на github и дайте людям доступ, чтобы мы могли увидеть, что не так. Я думаю, что проблема в основном в компиляции, а не в OWL API.   -  person Artemis    schedule 04.05.2015


Ответы (1)


Вы компилируете исходный код OWL API? Вы можете избежать заполнения всех зависимостей вручную двумя способами:

  • импортировать существующий проект maven в Eclipse (для определения зависимостей будут использоваться файлы pom)

  • посмотрите файлы classpath в папке antbuild и убедитесь, что ваш файл .classpath совпадает.

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

person Ignazio    schedule 03.05.2015
comment
Спасибо, Игнацио. Думаю, теперь я настроил maven, но теперь пытаюсь лучше понять этот бизнес Ant Build. Кроме того, я не могу найти папку antbuild из обновлений maven. Я обновил исходную публикацию, чтобы включить мой прогресс. Какие-либо предложения? - person Dude; 04.05.2015
comment
Если вы настроили зависимости через maven, вы можете игнорировать упомянутый мной файл пути к классам - это два альтернативных способа получить один и тот же результат. Вы все еще получаете трассировку стека, о которой вы сообщили? - person Ignazio; 04.05.2015
comment
Игнацио, оказывается, сборка Maven сделала свое дело! Спасибо! Я обновил свой исходный пост двумя последними вопросами, связанными с настройкой. Еще раз спасибо за вашу помощь! - person Dude; 05.05.2015