Как хранить TBOX и ABOX онтологий и где следует проводить рассуждения? - PullRequest
1 голос
/ 28 мая 2019

Я работаю над семантической архитектурой 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 (или любой другой тройной магазин) для эффективного хранения моей онтологии.

Ответы [ 2 ]

0 голосов
/ 29 июня 2019

В развертывании IoT значения, как правило, постоянно меняются, поэтому может быть целесообразным подход оперативного запроса.Поэтому, если вы пренебрегаете аспектом оперативного обоснования на секунду (может быть, вы можете предварительно вычислить его, поскольку динамические аспекты развертывания IoT не имеют отношения к обоснованию, которое вы хотите сделать), вы можете выполнить запрос, например:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX sosa: <http://www.w3.org/ns/sosa/>
SELECT ?value
FROM <http://my-fancy-iot-device/temperature-sensor-abox>
FROM <http://my-ldp-server/the-reasoned-tbox>
WHERE {
  ?x a ?sensor ; rdf:value ?value .     # from the 1st source and changes often
  ?sensor rdfs:subClassOf sosa:Sensor . # from the 2nd source and changes seldom
}

Вам необходим механизм SPARQL, который интерпретирует имя графа в части FROM таким образом, чтобы выполнить HTTP-запрос к указанному имени графа, например. roqet .Разум также может быть введен, но там не хватит roqet.

0 голосов
/ 29 мая 2019

Virtuoso поддерживает именованные графы (так как это хранилище RDF Quad в аспекте СУБД RDF).

Просто загрузите ваши тройки TBox в один именованный граф, а затем ваши тройки ABox в другой.

Рассуждения и умозаключения в Virtuoso предлагаются в двух формах.В любом случае это контролируется прагмами;т.е. вы включаете и выключаете его по мере необходимости:

  1. Встроенный - см. этот пост о Встроенные рассуждения и логические выводы
  2. Пользовательский -См. Этот пост о Custom Reasoning and Inference

Примечание: оба поста демонстрируют полезность подхода Virtuoso с живыми примерами.

...