OWLAPI: как работает онтология загрузки с импортом?

У меня есть онтология, в которую импортирована другая онтология. Я хочу знать, как OWLOntologyManager работает внутри loadOntologyFromOntologyDocument(OWLOntologyDocumentSource documentSource, OWLOntologyLoaderConfiguration config). Я использовал класс OWLOntologyLoaderConfiguration для обработки отсутствующих импортов (хочу узнать, какой импорт завершается с ошибкой с помощью класса MissingImportListener).

Я могу слушать недостающий импорт. Но если какой-либо из моих файлов онтологии имеет импорт для WEB-ресурса, то описанный выше метод извлекает его из своего местоположения. Есть ли способ, чтобы я мог ограничить вызов веб-ресурса и попросить загрузить копию, которая у меня есть в моей системе?

например, в случае метода загрузки спортивной онтологии BBC внутри загружаются следующие онтологии:

  1. http://purl.org/NET/c4dm/event.owl
  2. FOAF (http://xmlns.com/foaf/0.1/)
  3. Время (http://www.w3.org/2006/time)

точно так же, как открытие спортивной онтологии BBC внутри Protege.


person SuhasD    schedule 12.07.2016    source источник


Ответы (1)


Вы можете использовать AutoIRIMapper — создайте один, указывающий на папку, содержащую локальные копии, и добавьте его в менеджер перед загрузкой нужной вам онтологии.

Для онтологий, доступных по другому адресу, используйте SimpleIRIMapper, который будет действовать как перенаправление с исходного адреса на новый адрес.

person Ignazio    schedule 12.07.2016
comment
На самом деле разные онтологии находятся в моей рабочей системе, а не на жестком диске. Я знаю, что если что-то недоступно в моей рабочей системе, то API загрузки пойдет на WEB-ресурс. Но вместо этого я хочу вызвать триггер, который не использует веб-ресурс, а запрашивает его у пользователя (даже если веб-ресурс доступен). Я хочу ограничить доступ моей системы к веб-ресурсу. - person SuhasD; 12.07.2016
comment
В соответствии с моим экспериментом метод загрузки сначала будет использоваться для IRIMapper, если он не найден, он будет использоваться для веб-ресурса. Если он недоступен, он либо выдает UnloadableImportException, либо вызывает MissingImportListener, если есть. Прав ли я в этом? - person SuhasD; 12.07.2016
comment
Чтобы ввести триггер пользовательского интерфейса, вам нужно написать собственную OWLOntologyIRIMapper реализацию. Нет ничего доступного, что позволяет это. - person Ignazio; 12.07.2016
comment
Я пытаюсь использовать AutoIRIMapper, но это не удается. У меня есть файл ontology.owl в формате Manchester OWL Syntax, AutoIRIMapper не удалось его найти. Какова возможная причина этого? - person SuhasD; 13.07.2016
comment
В настоящее время AutoIRIMapper не поддерживает синтаксис Manchester. В качестве обходного пути вам нужно сохранить локальную копию как rdf/xml - person Ignazio; 13.07.2016
comment
Ok. Хотите узнать, как метод загрузки работает с разными форматами? Я создал для этого отдельный вопрос. stackoverflow.com/questions/38349636/. Также хочу знать, как идентифицировать его, просто получив содержимое файла как STRING. - person SuhasD; 13.07.2016
comment
Загрузка не зависит от формата, проблема в том, что AutoIRIMapper пытается сканировать только заголовок файла, а не выполнять полный анализ. Он ограничен только несколькими форматами. - person Ignazio; 13.07.2016