Я работаю над семантической архитектурой IoT, которая включает в себя некоторые службы и некоторые службы. Цель состоит в том, чтобы добавить семантическую аннотацию, используя онтологию, которую я построил на Protege. Я также использую Virtuoso 6, установленную на сервере Ubuntu 18.04, вместе с Jena 3.6 API (Java 8) с пеллетом. Я понимаю, что рекомендуется разделять TBOX и ABOX, чтобы рассуждения и запросы SPARQL выполнялись быстрее, но как мне это сделать с помощью Virtuoso? Итак, учитывая мою онтологию в файле .owl
вместе со всеми людьми, которые у меня есть, как я должен хранить мой TBOX и как мой ABOX и на каком этапе должны проводиться рассуждения?
Сначала я построил свою архитектуру так, что каждый раз, когда мне приходилось делать запрос SPARQL, я отправлял Jena, которая, в свою очередь, брала график, загруженный в Virtuoso, а затем делала запрос, используя аргумент, который в конечном итоге вернет результаты.
Мой профессор, однако, не согласился с этим подходом, поскольку он заявил, что он недостаточно быстр, и предложил мне изменить свою архитектуру на архитектуру, которая рассуждает только при необходимости, а не каждый раз, когда мне нужно сделать SPARQL. запрос. Поэтому я спрашиваю, как использовать Virtuoso (или любой другой тройной магазин) для эффективного хранения моей онтологии.