Каковы асимптотические времена выполнения для методов OWL EntitySearcher (например, EntitySearcher.getAnnotations (c, o, factory.getRDFSLabel ())) - PullRequest
0 голосов
/ 01 сентября 2018

Я пишу приложение, которое использует как онтологию / owlapi, так и базу данных sqlite, в которой значение определенных полей является IRI из онтологии.

Мне интересно, будет ли (асимптотически) быстрее извлекать аннотации rdfs: Label и rdfs: Comment из базы данных SQL (при условии, что они хранятся там заранее), а не извлекать эти значения из OWLAPI каждый раз.

В общем, насколько интенсивно время / пространство основных операций в EntitySearcher (асимптотически или иным образом)?

Предположим для этого примера, что rdfs: label является единственным свойством аннотации, принадлежащим классу c, поэтому нам не нужно явно перебирать список свойств аннотации.

1 Ответ

0 голосов
/ 02 сентября 2018

Я не провел здесь полный анализ соответствующего кода, но, грубо говоря, выполняются следующие операции:

  • С учетом онтологии и сущности
  • получить аннотации для сущности
  • итерация ищет подходящее свойство аннотации
  • получить буквальное значение

Аксиомы индексируются по типу, поэтому получение аксиом аннотации равно O (1). Выбор аксиом, релевантных для сущности, также использует индекс, так что это снова O (1). Итерация и поиск подходящего свойства - это O (N), где N - количество аннотаций - 1 в вашем примере, и снова O (1). Само сравнение разрешается в сравнении строк для свойства IRI. rdfs:label сам по себе является синглтоном, так как он часто используется, поэтому сравнение производительности незначительно. Извлечение буквенного значения - простой доступ, поэтому в целом процесс должен быть O (1).

По сравнению с базой данных, порядок О был бы таким же; но реализация OWLAPI по умолчанию ConcurrentHashMaps в памяти. Доступ к удаленной базе данных по сети, при условии, что нет необходимости открывать новое соединение, все еще, вероятно, будет доминировать в фактических измерениях времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...