Каков наилучший способ реализовать тегирование файлов в СУБД с помощью тегов, состоящих из выражений классов из онтологии OWL EL? - PullRequest
0 голосов
/ 23 января 2019

Каков наилучший способ реализовать тегирование файлов в СУБД с помощью тегов, состоящих из выражений классов из онтологии OWL EL, с возможностью масштабирования по мере роста числа уникальных тегов?

Справочная информация: Поскольку мой код стоит прямо сейчас, тегирование файла с помощью выражения класса сначала проверяет, существует ли в онтологии подкласс «Tag», сформированный из этого выражения класса, и если да, хранит URI класса в реляционной БД, в таблице, в которой также хранятся идентификаторы файлов, представленных в RDBMS. Если тег не отображается в онтологии, он сначала создает соответствующий подкласс «Tag» в онтологии, а затем сохраняет его URI в БД.

Моя цель - иметь возможность искать любой класс, помеченный определенным выражением класса (или подклассом выражения класса). В настоящее время код, который у меня есть, получает список подклассов, сначала запрашивая онтологию (например, наличие у рассудителя автоматического разрешения подклассов / под-свойств в запросе), а затем делает запрос к БД (один длинный дизъюнктивный SQL-запрос, дизъюнкты которого состоят из подклассов «Tag», найденных при поиске онтологии).

Мое беспокойство: даже при ограничении иерархии свойств онтологии OWL, запрос о том, что онтология может в общем случае выполняться в PTIME O (n ^ k, где k> 1) ... определенно не O (n), не говоря уже о O (logn), как стандартные запросы к базе данных. Таким образом, добавление подкласса «Tag», состоящего из выражения класса, используемого для маркировки каждого файла, может потенциально замедлить поиск в онтологии.

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

...