Научная статья на тему 'Оптимизация быстродействия онтологических баз знаний, построенных на основе «Virtuoso»'

Оптимизация быстродействия онтологических баз знаний, построенных на основе «Virtuoso» Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
112
31
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ЗАПРОС / ОПТИМИЗАЦИЯ / ТРИПЛЕТ / SPARQL / JENA FRAMEWORK / CACHING / VIRTUOSO / OWL / RDF / BGP / SPARUL / PATTERN / QUERY / OPTIMIZATION / TRIPLET / JENA FRAME-WORK

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Бибичков И. Е., Сокол В. В., Шевченко А. Ю.

Представлены исследования и анализ методов оптимизации быстродей-ствия выполнения запросов к онтологическим базам знаний, используя сервер данных на основе «Virtuoso». Установлена зависимость времени выполнения запроса к серверу от ключевых факторов влияния. Определены следующие факторы: частота запросов к базе знаний, объем информации, который необходимо обработать, правильность формирования запроса, использования вспомогательных инструментов и фреймворков

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

«Optimizing the performance of ontological knowledge bases built on the basis of «Virtuoso»

This work contains a research of available methods on query optimization of OWL knowledge bases that are built using the SPARQL language, and also by using the available frameworks (e.g. Apache Jena Framework).Currently, there is a special need to improve the performance of existing tools to work with knowledge bases. This need is caused by a lack of the speed, and sometimes, by a very low performance of systems that uses a knowledge bases as a data storage.As a result of the research it was found an opportunity of significant performance optimization of interactions with knowledge bases, based on Virtuoso server, by applying the described optimization techniques that resulted in an increase in execution speed, in average from 25 % to 35 %, with a relatively small number of triplets.This information will help developers to reduce the time of interaction with knowledge base server that will significantly speed up the performance of applications that use similar data storage.

Текст научной работы на тему «Оптимизация быстродействия онтологических баз знаний, построенных на основе «Virtuoso»»



Представлено дослидження i аналiз Memodie onmuMi3au,ii швидкоди виконання 3anumie до онто-лoгiчних баз знань, використовуючи сервер даних на oснoвi «Virtuoso». Встановлено залежтсть часу виконання запиту до сервера вiд ключових факmoрiв впливу. Визначено так фактори: частота запиmiв до бази знань, об'ем тформаци, який необхдно обро-бити, правильтсть формування запиту, викори-стання дoпoмiжних iнсmрумeнmiв та фреймвортв

Ключoвi слова: запит, oпmимiзацiя, триплет, SPARQL, Jena Framework, Caching, Virtuoso, OWL,

RDF, BGP, SPARUL, Pattern

□-□

Представлены исследования и анализ методов оптимизации быстродей-ствия выполнения запросов к онтологическим базам знаний, используя сервер данных на основе «Virtuoso». Установлена зависимость времени выполнения запроса к серверу от ключевых факторов влияния. Определены следующие факторы: частота запросов к базе знаний, объем информации, который необходимо обработать, правильность формирования запроса, использования вспомогательных инструментов и фрейм-ворков

Ключевые слова: запрос, оптимизация, триплет, SPARQL, Jena Framework, Caching, Virtuoso, OWL, RDF, BGP, SPARUL, Pattern

УДК 519.7:007.52

|DOI: 10.15587/1729-4061.2014.28553]

ОПТИМИЗАЦИЯ БЫСТРОДЕЙСТВИЯ ОНТОЛОГИЧЕСКИХ БАЗ ЗНАНИЙ, ПОСТРОЕННЫХ НА ОСНОВЕ «VIRTUOSO»

И. Е. Бибичков*

E-mail: bibi4kov@gmail.com В. В. Сокол

Инженер* E-mail: sokol@sw-expert.com А. Ю. Шевченко

Кандидат технических наук, доцент* *Кафедра искусственного интеллекта Харьковский национальный университет радиоэлектроники пр. Ленина, 14, г. Харьков, Украина, 61000 E-mail: shevchenko@sw-expert.com

1. Введение

Как показывает практика, в настоящее время, время обилия информации, остро стоит вопрос о ее систематизации и хранении для последующего эффективного использования.

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

Именно для устранения подобных недостатков, которые присущи реляционным базам данных, им на смену приходят базы знаний. (База знаний - это осо-

бого рода база данных, разработанная для оперирования знаниями (метаданными). База знаний содержит структурированную информацию, покрывающую некоторую область знаний [1]).

В данной работе речь пойдет об особенностях применения на практике баз знаний в виде OWL-онтоло-гий, с использованием сервера «Virtuoso»[2], а именно будут рассмотрены возможные пути оптимизации скорости и времени работы с базой знаний. База знаний «Virtuoso» на данный момент является одной из наиболее пригодных для использования в коммерческих информационных системах [3]. В частности, будут рассмотрены инструменты работы с OWL-базами знаний, а именно язык запросов SPARQL и Jena Framework [4]. Большой проблемой использования онтологических баз знаний в коммерческих проектах является их крайне низкое быстродействие. Универсальная структура онтологических баз знаний превосходно подходит для хранения в упорядоченном виде разнородной информации, но снижение быстродействия при увеличении объемов хранимой информации негативно сказывается на возможностях использования этой технологии. В статье рассмотрены методы позволяющие увеличить быстродействие базы знаний и сделать её пригодной для решения задач в рамках всеобъемлющего решения проблемы обеспечения хранения и анализа разнородной информации и быстрой её выборки из сверхбольших баз знаний, получившей название "Big Data".

©

2. Возможные пути решения проблемы низкого быстродействия онтологических систем при больших объемах сохраненных знаний

Использование BGP (Basic Graph Pattern) - базового графического паттерна для оптимизации SPARQL-запросов [6].

Для работы с базами знаний на практике используются специальные инструменты. В данной работе будут описаны особенности применения сервера «Virtuoso», а также использования языка запросов SPARQL и Jena Framework, фирмы «Apache» (который, по сути, является обверткой к языку запросов SPARQL).

Методы оптимизации быстродействия запросов регламентированы особенностями самого сервера и инструментов, при помощи которых производится работа с базой знаний. Для решения проблем, связанных с быстродействием, предлагается использовать ряд специальных методов: кэширование данных [5], применение особенностей языка SPARQL версии 1.1, разбиение сложного запроса на языке SPARQL на более мелкие, следование рекомендациям по построению SPARQL-запросов, использование BGP (Basic Graph Pattern) [6], и многие другие, некоторые из которых будут описаны в данной работе.

Кэширование данных. То есть сохранение промежуточных результатов выполнения запросов во временное хранилище на сервере в виде реляционной таблицы, либо специальных файлов. Данный метод применяется для сокращения объема получаемых данных из базы знаний и уменьшения количества обращений к серверу [5].

Применение особенностей языка SPARQL версии 1.1, везде, где это возможно. Этот метод эффективен для применения на практике, так как многие системы используют SPARQL версии 1.0, несмотря на то, что SPARQL версии 1.1 имеет ряд дополнительных функций, которые позволяют экономить время, которые будут описаны позже.

Разбиение сложного запроса на языке SPARQL на более мелкие. Чем сложнее запрос, тем больше времени требуется для его обработку и выполнения сервером.

Следование рекомендациям по построе- в нию SPARQL-запросов, которые направлены на оптимизацию времени выполнения запроса. Основной принцип данного метода заключается в оптимизации самой структуры запроса. Например, переписывание переменных, которые расположены в секции «FILTER» SPARQL-запроса, перемещение опции «FILTER» вверх.

3. Оптимизация SPARQL-запросов кэшированием

Для реализации кэширования в SPARQL-запросах предполагается создать небольшой прокси-слой, который должен быть расположен между приложением Semantic Web и SPARQL/SPARUL [7]. Все SPQRQL-за-просы и SPARUL-обновления проходят через этот прокси-слой. После того как прокси-сервер получает запрос, он проверяет, закэширован ли результат выполнения данного запроса в локальном хранилище. Если да, то результат незамедлительно передается клиенту, без вызова хранилища триплетов. Если запрос не был ранее сохранен и не найден в сохраненных пользовательских правилах, то он перенаправляется в локальное хранилище триплетов, и, прежде чем пользователь получит результат, он кэшируется в локальное хранилище. Структурная схема, согласно которой реализовано кэширование данных, представлено на рис. 1.

Для того чтобы определить выигрыш от применения кэширования, построим запрос на языке SPARQL (листинг 1) и определим время его выполнения без применения кэширования и с применением кэширования.

Рис. 1. Кэширование данных

1 PREFIX aksw: <http://akew.ors/peopleH> ¿PREFIX tits; <http://uuu.u3.crg/2000/0l/tili-scheica»> ч SELECT ?classUri TclassLabel FROM <http://aksv.org/peopleя> .1 WHERE { 7elassUri rdfs : subClassOf akau : People . s TclassUri &ksv:sort 7sort .

й OPTIONAL { ?cl»3sUri rdis: label ?cla3sLabel > )■

Листинг 1 — пример запроса на языке SPARQL

Практика показывает, что применение кэширования в запросах SPARQL позволяет повысить производительность почти на 90 %, при выборке 25 миллионов триплетов. При том, что в кэше хранится от 8 % до 25 % от общего числа триплетов.

При выполнении операций добавления и обновления данных (UPDATE), выигрыш, полученный от кэширования, менее существенный, всего около 5 %.

4. Применение особенностей SPARQL 1.1

Применение особенностей SPARQL-запросов вер сии 1.1, за счет дополнительных опций в запросах, о которых будет изложено ниже, позволяет в значительной степени оптимизировать время выполнения запроса. Пример запроса с использованием оператора SERVICE приведен в листинге 2.

Выигрыш от применения данных операторов достигается посредством систематизации данных путем распределения по определенным признакам в отдельные группы.

Время обработки запросов, применяя SPARQL 1.1: федеративные запросы приведено в табл. 2. Ключевые характеристики тестируемых запросов приведены в табл. 1, 2 [10].

Таблица 1

Количественные характеристики триплетов

prefix îupfiar:

prefix entrez:

prefix void :

prefix tfeterms:

ihttp://iuphar.example/ns#? <http: //efitreî-eiiitiple/nsei *http://rdfs .org/ns/void»> <http://purl.org/<ic/terms/>

Sélect ?service ?id îiuphar

WHERE (

i find the service with the expertise. 7servi.ce detenus ; subject ?gene FILTER (7gene ■ entrez:h2550 l|

entrez :h956S

<r Query that service for species and iuphar. service ?serviifi {

?receptor iuphar:species Tspecies . ?species iuphar;ns((ie ?iuphar „

7species entrez:id ?id .

Листинг 2 — Пример запроса с использованием оператора SERVICE

Федеративное расширение (Federation Extension) [8] в SPARQL 1.1 включает два новых оператора: SERVICE и BINDINGS (рис. 2).

Оператор SERVICE позволяет пользователю включать подзапросы в запросах. То есть пользователь может составлять сложные запросы из подзапросов, и, следовательно, такой запрос будет выполняться порциями, что позволит уменьшить время его выполнения.

Оператор BINDINGS позволяет накладывать дополнительное пользовательское ограничение на запрос, результат которого можно использовать прямо в текущем запросе (при этом не создавая, прежде, новый запрос). Такой запрос представляется на языке SPARQL.

Пример запроса с использованием оператора BINDINGS приведен в листинге 3.

Количество триплетов Количество внешних ссылок Количество внутренних ссылок Namespace Limit

DB pedia 1 000 000 000 16 480 998 11 531 095 http://dbpedia. org/resource/ 1000

NYTimes 345 889 23 700 21 289 http://data. nytimes.com/ 1000

LinkedMDB 6 148 121 162756 1 883 http://data. linkedmdb.org/ resource/ 1000

Geonames 93 896 732 - 1 028 252 http://sws. geonames.org/ 1000

World Factbook 38 640 - 665 005 http://www4. wiwiss.fu-berlin. de/factbook/ resource/ 1000

El Viajero 9 462 339 12 750 - http:// webenemasuno. linkeddata. es/elviajero/ resource/ 1000

Таблица 2

Характеристики запросов (количество ключевых элементов)

Solu-

№ Joins OPT FIL- UNI- Pat- Vari- tion Bounded Bounded Bounded

TER ON terns ables Modifiers Subject Predicates Objects

Q1 0 0 0 1 2 2 0 1 1 1

Q2 1 0 0 0 2 3 0 1 3 1

Q3 1 0 0 0 2 3 0 0 5 1

Q4 1 0 0 0 2 2 0 0 5 1

Q4b 0 1 1 0 3 5 0 0 6 1

Q5 1 0 0 0 2 4 0 0 4 1

Q6 0 0 0 0 1 3 0 0 4 1

Q7 1 0 0 0 2 2 0 0 4 1

Q8 0 1 1 0 2 3 0 0 3 1

Q9 1 1 0 0 3 4 0 0 7 2

Результаты применения к триплетам оптимизационных приемов отображены в табл. 3 [10].

PREFIX entrez: PREFIX med: PREFIX study:

thttp://ent rez.eKample/ns#> thttp://med_exampleytestDrug#> thttp: //study.example/af fectssr>

Таблица 3

Результаты оптимизации

SELECT ?med ?species ?iuphar WHERE {

7study entrez:id ?id .

7study study : species ?species

7study med : ication ?med

7sttidy studyichange 7change .

FILTER ('change < -.2) > BINDINGS ?hunun 7iuphar ?id < ("human" "GABBRI" "2S50") ("human" "GABBR2" "956S")

)

Листинг 3 — Пример запроса с использованием оператора BINDINGS

Запрос Время выполнения не оп- Время выполнения оптими-

тимизированного запроса зированного запроса

Q1 2.117 ms 2.150 ms

Q2 2.370 ms 2.200 ms

Q3 9.659 ms 8.085ms

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Q4 8.341 ms 7.291 ms

Q4b 10.562 ms 9.771 ms

Q5 5.687ms 3.759ms

Q6 887ms 0.878ms

Q7 11.625ms 7.994ms

Q8 15.544ms 14.373ms

Q9 19.658ms 17.192ms

WHERE Граф, Паттерн ^ Данные (графы) F80M Да"«ы« Графы

Множество ai нных/решений afin г>уппы

ШГЫЖфИиеНИЙ

PREFIX foa.fr <http; Vimln5,corn,Toof/0,l^ EELECT 7age.(COUNTl?age) AS Tcount) ' . FROM <httj>: № xample .org/data. rdf»

WHERE { In foafiPersors; foafiage ?age . } '/''■GROUP ST : -HAVING (Tcourit > ij .ORDER SV ?c«jnt DESC t LIMIT

Результат может исшшыоваткя паи исходные данные для подзапроса

Результат

* ► Проект Прогнозируемый OROEft BY следующее DISTINCT следующее Ограничение и переполнение

переменные и аыражение набор решений выражение решение решение (обрезка)

Рис. 2. Федеративное расширение

5. Применение Jena Framework

В случае применения Jena Framework программист экономит время на составление SPARQL-запросов. Jena Framework, по своей сути, является «обверткой» для SPARQL. Среди преимуществ фреймворка также есть создание удобной модели для работы с данными не только в виде триплетов, но так же и для работы с данными как с объектами, что позволяет не задумываться о том, как получить ресурс и какой именно.

Среди недостатков - создание фреймворком модели данных по полученным триплетам, что занимает значительное количество машинного времени (около 1 с).

В случае, когда запрос требует множественного обращения к серверу, применение Jena Framework с точки зрения затрат более выгодно. Для этого программисту необходимо минимизировать количество обращений к серверу для получения данных и построения модели. В некоторых случаях применение данного фреймворка быстрее, чем применение SPARQL. Это преимущество имеет место, когда необходимо произвести множественную выборку конкретных ресурсов.

В таком случае SPARQL действует путем отправки множества обращений на сервер (в данном случае применяется сервер «Virtuoso»), что приводит к большому количеству затраченного времени, напротив, Jena Framework позволяет минимизировать количество обращений к серверу. Это происходит благодаря тому, что данный фреймворк

строит модель данных по существующим триплетам. Хотя сам фреймворк большую часть времени тратит на построение самой модели, но, благодаря тому, что данное действие производится единоразово, результаты достигаются лучше, чем в случае применения SPARQL запросов.

Исследование проводилось на модели данных, состоящей из 377 420 триплетов, созданной при помощи BSBM. Запрос приведен в листинге 4.

Данный код приведен для случая использования языка программирования Java. Суть в том, что пользователь запрашивает 1000 ресурсов по изменяющимся именам продуктов.

Листинг аналогичного запроса, написанного при помощи Jena Framework, представлен в листинге 5.

Выборка производится, как и в предыдущем случае, циклично.

String inyQuery =

"PREFIX bsbm-inst: <http: / lnnxi.. Hindis .f u-berlin. de/bizer/bsbm/v01/instances/> "+

"PREFIX bsbnK «http;//mvw+.wiwiss.fu-berlin,de/bizer/bsbm/v01/vocabulary/=

'■PREFIX rdfs: -=http://wwiv.w3.or£i200Q/ai/rdf-scheiiia#> "+

'■PREFIX dc: <http://purl .org/dc/elements/l. 1/s "+

"SELECT ?producer "+

"FROM <"-'туЕгэр1т»"ь " +

"WHERE { «-*

productlPRI+"> bsbm \ producer 7p . " ■* ™7p rdfsrlabel Jproducer . "+

Листинг 4 — Тестируемый SPARQL запрос

On t Model antUodel - Nodel Factory. crea teOntol ogyllode J(OncMode ISpei:. CWL_MEU. new Vir [Mode 1 (dat aSet) >; Property labelProperty = ontldodel.getProperty(productProperty+"label" ); Property producerPrDperty = ontModel.getPrQperty(bsbinPrDperty+"producer");

Individual ind = ontMadeLgetlndividuaLCproductURI);

propertyproducervalue - ind.getpropertyvalueiproducerPropertу).toStringc); Resource producerResource = ontwodel.getEtesourceipropertyProducervalue): 5tjtemeot propertyFroducerLabel = proitucerResouroe.getProperty(labelProperty>; propertyOfProducer = propertyProducerLabel.NetObject<>.tostrinfiCJ:

Листинг 5 — Запрос 1000 продуктов при помощи Jena Framework

В результате произведенных исследований были получены такие данные: при использовании SPARQL запросов время выполнения составило 3812 ms, Jena Framework - 2834 ms

6. Выводы

Применение на практике представленных в данном исследовании приемов оптимизации позволяет увеличить быстродействие построенных запросов, в зависимости от конкретных случаев применения. В частности, применение кэширования в построении SPARQL запросов позволяет повысить производительность почти на 90 %, при выборке из 25 миллионов триплетов. А применение Jena Framewok в случае выборки 1000 ресурсов из базы знаний позволяет экономить

до 30 % времени выполнения программы. Применение особенной SPARQL 1.1, в частности федеративных запросов, при написании запросов, содержащих «Join», «Bounded Predicates» «Patterns», достигается уменьшение времени выполнения запроса от 20 % до 35 %.

В итоге самым лучшим приемом для оптимизации SPARQL запросов является кэширование промежуточных результатов запроса, так как это позволяет экономить до 90 % времени выполнения, в других двух рассмотренных случаях, выгода составляет до 35 %.

Работа актуальна, так как на данный момент существует острая необходимость в оптимизации быстродействия работы с базами знаний. Приемы, описанные выше, помогают значительно, а именно до 90 %, экономить время выполнения запросов, а, следовательно, увеличивать показатели быстродействия приложений.

Литература

1. Википедия — свободная энциклопедия [Электронный ресурс] / Базы знаний. - Режим доступа: https://ru.wikipedia.org/ "шЫ/База_знаний — 18.08.2014. - Загл. с экрана.

2. OPENLINK software — Making Technology Work For You [Electronic resource] / Virtuoso — Universal Server. - Available at: http://virtuoso.openlinksw.com/ - 2014. - Title from the screen.

3. Шевченко, О. Ю. Сравнительный анализ современных систем управления онтологическими базами знаний [Текст] / О. Ю. Шевченко, О. Л. Шевченко // Вюник СевНТУ. Збiрник наукових праць. Серiя 1нформатика, електрошка, зв'язок. -2012. - № 131. - С. 82-86.

4. Apache Jena [Electronic resource] / A free and open source Java framework for building Semantic Web and Linked Data applications. - Available at: https://jena.apache.org/ - 2014. - Title from the screen.

5. Martin, M. Improving the Performance of Semantic Web Applications with SPARQL Query Caching [Text] / M. Martin, J. Unbehauen, S. Auer // The Leipzig University of computer science. - 2010. - P. 304-318. doi:10.1007/978-3-642-13489-0_21

6. Stocker, M. SPARQL Basic Graph Pattern Optimization Using Selectivity Estimation [Text] / M. Stocker, A. Seaborne, A. Bernstein , C. Kiefer , D. Reynolds // Proceeding of the 17th International Conference on World Wide Web - WWW '08, 2008, 2-9. doi:10.1145/1367497.1367578

7. Andy Seaborne and Geetha Manjunath. SPARQL [Electronic resource] / Update - a language for updating RDF graphs. - Available at: http://www.w3.org/Submission/SPARQL-Update/ - 2008. - Title from the screen.

8. Buil-Aranda, C. Semantics and Optimization of the SPARQL 1.1. Federation Extension [Text] / C. Buil-Aranda, M. Arenas, O. Corcho // The Semanic Web: Research and Applications Lecture Notes in Computer Science. - 2011. - Vol. 6644. - Р. 1-15. doi:10.1007/978-3-642-21064-8_1

9. Beckett, D. Learn about SPARQL 1.1. [Electronic resource] / SPARQL 1.1 Query Execution. — Available at: http://www.dajobe. org/talks/201105-sparql-11/ - 2011. - Title from the screen.

10. Buil-Aranda, C. Federated Query Processing for the Semantic Web [Text] / C. Buil-Aranda, О. Corcho Garc a // A thesis submitted for the degree of PhD Thesis. - 2012. - Vol. 1. - P. 3-33.

i Надоели баннеры? Вы всегда можете отключить рекламу.