1

Тема: Генерация схемы базы данных по описанию онтологии

История у меня такая.
Имеется реляционная база. К ней требовалось организовать sparql доступ.
Я выбрал d2rq, написал маппинг.

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

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

Итак вопрос.
Известны ли вам такие средства?

Я нашёл единственный подобный алгоритм owl to rdb.
Но он без реализации.

Thumbs up +1 Thumbs down

2

Re: Генерация схемы базы данных по описанию онтологии

a8ter пишет:

История у меня такая.
Имеется реляционная база. К ней требовалось организовать sparql доступ.
Я выбрал d2rq, написал маппинг.

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

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

Итак вопрос.
Известны ли вам такие средства?

Я нашёл единственный подобный алгоритм owl to rdb.
Но он без реализации.

Существуют различные SQL2RDF Mapper. Из реализованных я видел только Semantic ORM для Ruby (и то в альфа версии).   Кроме того, можно посмотреть, как реализована хранение RDF  в реляционных базах данных http://infolab.stanford.edu/~melnik/rdf/db.html. И сделать (изоморфное) преобразование по аналогичным правилам. Единственно преобразование не будет однозначным, но можно выбрать какую то конкретную стратегию и все будет в порядке.

3

Re: Генерация схемы базы данных по описанию онтологии

IMHO, обычно нет необходимости что-то генерить автоматом. RDB обеспечивает существенные преимущества перед RDF как раз тогда, когда схема проектируется ручками под конкретные задачи и конкретные статистики данных.

Мне бы больше понравился не автоматический импортёр, а модуль в интерактивном редакторе схемы БД, который анализировал бы RDF дамп и делал несколько вариантов-черновиков схемы БД с предсказанием статистик для каждого варианта. Хорошая тема для дипломника, кстати smile

4

Re: Генерация схемы базы данных по описанию онтологии

Прошу прощения, что поднимаю старую тему, но для меня она вновь актуальна.

iv_an_ru пишет:

Мне бы больше понравился не автоматический импортёр, а модуль в интерактивном редакторе схемы БД, который анализировал бы RDF дамп и делал несколько вариантов-черновиков схемы БД с предсказанием статистик для каждого варианта. Хорошая тема для дипломника, кстати smile

Я представляю себе такой сценарий использования:
1) Пользователь загружает (например, в плагин для protege) онтологию.
2) Система строит по TBox онтологии несколько черновиков схемы базы данных.
По всей видимости, отличаться эти черновики будут лишь реализацией наследования. Поправьте, если не прав.
3) Пользователь правит один из черновиков под свои нужды.
4) Система приводит сравнение полученных черновиков.
5) Пользователь выбирает наилучший для него черновик.
6) Система создаёт схему базы данных.

В начале темы я поднимал вопрос об автоматическом написании маппингов для d2rq.
Написание маппингов самому достаточно трудоемкая задача.  Поэтому седьмой шаг:
7) Система создаёт маппинг файл для d2rq.

Честно говоря, я не знаком с virtuoso (уж очень тяжеловесным он мне показался), но я думаю седьмой шаг можно применить и для него.

Хотел бы услышать отзывы. Есть ли смысл заниматься таким проектом?

Thumbs up +1 Thumbs down

5

Re: Генерация схемы базы данных по описанию онтологии

не пойму зачем делать схему БД, если вы будете изменять схему в зависимости от действий пользователя в протеже... просто если есть схема БД, сделали для нее GUI интерфейс пользователя и все конечно хорошо. Далее, изменили схему БД, интерфейс надо менять, а это уже сложности. в этом контексте задача не имеет смысла. Если схему как то подругому использовать, то на Use Cases надо посмотреть (?)
вот создание  OWL RM (прослойки подобной ORM ) это имеет смысл, когда система пользователя будет работать поверх схемы OWL RM, но подобное уже есть тот же ARQ и SDB Jena
И если USE CASES еще будут, то ваш 7 пункт, тоже будет интересен

И конечно оптимизация таких автоматом созданных схем, будет очень большой проблемой, как верно говорит Иван, как раз профессиональное проектирование схемы бд зачастую дает высокую производительность БД (а это зависит ессно от конкретной задачи)

6

Re: Генерация схемы базы данных по описанию онтологии

Shcherbak пишет:

оптимизация таких автоматом созданных схем будет очень большой проблемой

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

На практике обнаруживается ещё один аргумент в пользу рыбогенерации. Когда данные приходят из инета в формате RDF, они часто содержат слишком много мусора, который нужно распознавать и удалать после загрузки. Если данные поступают регулярно, то возможные выигрыши денормализации легко могут быть перекрытызатратами на перевычисления зависимых значений после каждого выкидывания мусора. В итоге "2.5-нормальная форма" используется реже обычного, а ведь именно она доставляет больше всего хлопот при приготовлении из "рыбы" окончательного скрипта, который уже можно "скормить" администратору БД.

Так что вещь получится небесполезная.

7

Re: Генерация схемы базы данных по описанию онтологии

Shcherbak пишет:

не пойму зачем делать схему БД, если вы будете изменять схему в зависимости от действий пользователя в протеже... просто если есть схема БД, сделали для нее GUI интерфейс пользователя и все конечно хорошо. Далее, изменили схему БД, интерфейс надо менять, а это уже сложности. в этом контексте задача не имеет смысла. Если схему как то подругому использовать, то на Use Cases надо посмотреть (?)

Давайте будем смотреть на задачу "сверху-вниз", то есть нет никакой схемы, есть лишь онтология.

Shcherbak пишет:

вот создание  OWL RM (прослойки подобной ORM ) это имеет смысл, когда система пользователя будет работать поверх схемы OWL RM, но подобное уже есть тот же ARQ и SDB Jena
И если USE CASES еще будут, то ваш 7 пункт, тоже будет интересен

Если я вас правильно понял, то, зная отображение онтологии в схему, можно достаточно легко получить ORM для hibernate. Да, эта идея мне кажется весьма уместной. Вот только ничего подобного в ARQ и SDB jena я не увидел.
Кстати, я думаю, что можно также автоматически получить и код хранимых классов.

Тем самым можно описать следующие варианты использования:
1) полу-автоматическое построение схемы базы данных
2) автоматическое получение orm для hibernate и прочих средств
3) автоматическое получение кода хранимых классов для java и прочих средств
4) автоматическое получение отображения для d2rq и прочих средств

Само собой, что полученные результаты трудно будет назвать готовыми, но в качестве "рыбы" сойдут.

Thumbs up Thumbs down

Re: Генерация схемы базы данных по описанию онтологии

a8ter пишет:

Если я вас правильно понял, то, зная отображение онтологии в схему, можно достаточно легко получить ORM для hibernate. Да, эта идея мне кажется весьма уместной. Вот только ничего подобного в ARQ и SDB jena я не увидел.
Кстати, я думаю, что можно также автоматически получить и код хранимых классов.

Тем самым можно описать следующие варианты использования:
1) полу-автоматическое построение схемы базы данных
2) автоматическое получение orm для hibernate и прочих средств
3) автоматическое получение кода хранимых классов для java и прочих средств
4) автоматическое получение отображения для d2rq и прочих средств

Само собой, что полученные результаты трудно будет назвать готовыми, но в качестве "рыбы" сойдут.

a8ter, Вы пробовали реализовать какой-нибудь из этих  use case'ов?

Вопрос к  iv_an_ru и Shcherbak:
Хочу взять тему диплома, связанную с отображением онтологии в схему БД.
Мне кажется это интересная тема.
Вам известны какие-нибудь работы в этом направлении? К кому можно обратиться за консультацией?

Thumbs up Thumbs down

9

Re: Генерация схемы базы данных по описанию онтологии

Могу предложить вариацию этой темы, которая действительно интересна и актуальна. Называется ontology-based data access (OBDA).
Речь вот о чем: есть несколько реляционных баз данных, схемы которых частично пересекаются, но полного соответствия нет. Например, в одной БД у нас данные об автомобилях (таблица Automobile), а в другой -  о машинах (таблица Car). Соответствие между терминами (таблицами, сущностями) описывается в виде онтологии, в которой, например, может говориться, что Automobile SubClassOf Car.
Понятно, что из-за разности в терминах не получится взять SQL-запросы для одной БД и выполнить над другой.

Задача: создать систему, которая бы позволяла писать запросы в терминах онтологии, а затем адаптировала бы их для каждой БД, выполняла и интегрировала результаты. Т.е. для внешнего пользователя есть лишь одно общее хранилище данных и ему не важно, сколько там БД и насколько они совместимы. Онтология предоставляет ему термины для написания запросов, связи между ними, а дальше система сама переписывает запросы и выполняет над разными БД.

Задача сложна, очень актуальна и обсуждается давно (см., например, публикации Carsten'a Lutz'a, Enrico Franconi и др.). В рамках диплома ее не решить. Но покопаться в текущем состоянии дел и попробовать выделить кусочек для очень качественного диплома - вполне можно.

10

Re: Генерация схемы базы данных по описанию онтологии

PavelK пишет:

Задача: создать систему, которая бы позволяла писать запросы в терминах онтологии, а затем адаптировала бы их для каждой БД, выполняла и интегрировала результаты. Т.е. для внешнего пользователя есть лишь одно общее хранилище данных и ему не важно, сколько там БД и насколько они совместимы. Онтология предоставляет ему термины для написания запросов, связи между ними, а дальше система сама переписывает запросы и выполняет над разными БД.

Вы описываете поддержку RDF Views в SPARQL-процессоре Virtuoso smile

Re: Генерация схемы базы данных по описанию онтологии

PavelK, большое спасибо за ответ! Буду искать в этом направлении smile

iv_an_ru, поддержку RDF Views Вы имеете ввиду как описано здесь?

Thumbs up Thumbs down

12

Re: Генерация схемы базы данных по описанию онтологии

iv_an_ru пишет:

Вы описываете поддержку RDF Views в SPARQL-процессоре Virtuoso smile

Серьезно? Клево smile Впрочем, я очень плохо знаком с триплсторами (совсем другими вещами занимаюсь) и мне казалось, что подобные вещи подразумевают конвертацию табличных данных в RDF (даже если она делается динамически). Я могу быть 10000 раз неправ. Плюс многим интересен вариант, когда онтология не укладывается в RDFS.

Дипломнице я бы предложил начать с DL-Lite и разобраться с тем, как DL-Lite запросы переписываются в SQL на основе TBox. Для DL-Lite можно доказать, что такой query answering будет complete - т.е. мы не потеряем никаких данных.

PS. Со мной лучше на "ты".

13

Re: Генерация схемы базы данных по описанию онтологии

консультируйтесь на здоровье! Форум для этих целей и создан...

Кстати, в ветке http://forum.semanticfuture.net/viewtopic.php?id=58

альтернативный взгляд на хранение онтологий в бд на основе Графити http://semanticfuture.net/index.php?title=Graffiti

и еще в ветке http://forum.semanticfuture.net/viewtopic.php?id=149 мы подобный вопрос обсуждали

Re: Генерация схемы базы данных по описанию онтологии

Спасибо за ответы smile

Очень хотелось бы полистать книгу The Description Logic Handbook, на нее много ссылок из публикаций.
В сети нашла только отдельные главы, а на Amazon новый экземпляр стоит 500(!) долл.
Кто-нибудь знает, где можно найти эту книгу?

Thumbs up Thumbs down

15

Re: Генерация схемы базы данных по описанию онтологии

Книжка, конечно, полезная (у меня на столе лежит), но, в принципе, читать ее от корки до корки смысла особого не имеет. Большая часть глав - это адаптированные для начинающих статьи.
Если ты раньше с DL не сталкивалась, но я бы посоветовал начать с классической статьи Франца Баадера (одного из авторов DLHB) Logic-based Knowledge Representation. Она очень простая и понятная.
А по интересующим главам DLHB я могу посоветовать другие статьи.

16

Re: Генерация схемы базы данных по описанию онтологии

не увидел проблемы по нужному запросу  cool и на столе лежит соответствующий экземпляр  cool

Re: Генерация схемы базы данных по описанию онтологии

PavelK, спасибо, читаю статью Баадера.

Какие учебники/статьи по DL Вы можете порекомендовать (DL-lite)? Я так поняла, что DL-lite имеет наименьшую выразительность и, следовательно, более прост для понимания и применения.
Мне нужны самые основы.

Thumbs up Thumbs down

18

Re: Генерация схемы базы данных по описанию онтологии

Дело не столько в том, что она проста для понимания и применения, а в том, что она *вычислительно* проста. Насколько ты знакома с теорией вычислительной сложности? Спрашиваю без всякого сарказма, просто это достаточно важно.
При всей своей простоте DL-Lite - это важная логика. На ее основе даже был определен и стандартизирован специальный профиль OWL 2 - называется  OWL QL. Там же приведены ссылки на основы (если нет доступа к библиотекам, то напиши мне на email - я пришлю статьи).
Что касается диплома, то даже если ты сможешь написать реализацию "переписывателя запросов" из логической формы (т.е. к онтологии в DL-Lite) в SQL - то это уже близко к диплому. Если же удастся продемонстрировать его работу для нескольких БД с частично пересекающимися схемами, скрытых за одной онтологией - то это уже хороший диплом.

Отредактировано PavelK (2010-11-25 16:50:03)

19

Re: Генерация схемы базы данных по описанию онтологии

Екатерина Степалина пишет:

Тем самым можно описать следующие варианты использования:
1) полу-автоматическое построение схемы базы данных
2) автоматическое получение orm для hibernate и прочих средств
3) автоматическое получение кода хранимых классов для java и прочих средств
4) автоматическое получение отображения для d2rq и прочих средств

Само собой, что полученные результаты трудно будет назвать готовыми, но в качестве "рыбы" сойдут.

a8ter, Вы пробовали реализовать какой-нибудь из этих  use case'ов?

Как показала практика, кейсы 1-3 реализуются многими веб-фрейморками. Так например, Spring Roo. Только там используются НЕ онтологии для описания моделей, а какие-то свои объектные формализмы. Поэтому я считаю уместным решать кейсы 1-3 не напрямую, а через этот самый объектный формализм. Однако на нем нельзя описать множественное наследование, подсвойства (subproperty) и прочие, свойственные для owl, понятия.

Екатерина Степалина пишет:

Вопрос к  iv_an_ru и Shcherbak:
Хочу взять тему диплома, связанную с отображением онтологии в схему БД.
Мне кажется это интересная тема.
Вам известны какие-нибудь работы в этом направлении? К кому можно обратиться за консультацией?

Хотя вопрос не ко мне, все же отпишусь.
Можете посмотреть статью, указанную в первом посте - owl to rdb. После нее станет ясно, какие ограничения накладываются на онтологию. Более того, я могу выслать Вам пару дипломов, посвященных данной теме, которые, впрочем, являются "пересказанием" существующих англоязычных статей.

Итого. Я думаю, что тема "связанная с отображением онтологии в схему БД" уже исчерпала себя и вряд ли в нее можно внести что-то новое.

Ах да, есть еще четвертый кейс - построение маппингов для d2rq.
Как было замечено, современные средства решают задачи 1-3, в частности автоматически генерируют объектно-реляционное отображение по стандарту JPA. Так вот, задача построение маппингов для d2rq на основании объектной модели и orm к ней действительно имеет место быть. Но эта задача скорее техническая, нежели научная.


Екатерина Степалина пишет:

Очень хотелось бы полистать книгу The Description Logic Handbook, на нее много ссылок из публикаций.
В сети нашла только отдельные главы, а на Amazon новый экземпляр стоит 500(!) долл.
Кто-нибудь знает, где можно найти эту книгу?

У меня есть ebook, в которой 500 страниц. Могу выслать, но соглашусь с PavelK:

PavelK пишет:

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

Успехов.

Thumbs up +1 Thumbs down

20

Re: Генерация схемы базы данных по описанию онтологии

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

Thumbs up Thumbs down

21

Re: Генерация схемы базы данных по описанию онтологии

UML2OWL и OWL2UML помогают, но UML и онтологии на OWL далеко не одно и тоже.

22

Re: Генерация схемы базы данных по описанию онтологии

alexukua пишет:

онтологию можно отобразить в диаграму класов UML, а уже потом по диагреме построить схему базы данных.

Вернее, онтологию можно отобразить в черновик диаграмы класов UML, доработать черновик ручками, а уже потом по диаграме построить черновик схемы базы данных, и опять доработать ручками.