Семантика баз данных
12.3.6 Примеры реализации смыслов
На рисунке 12.25 представлен реализованный интерфейс системы для работы со смыслами в приложении, представленном на сайте книги www.database-model-lang-struct-semantic.ru. Запросы к виртуальной табличной базе данных пишутся на языке QBE. Показаны запрос на QBE, соответствующий ему сформированный запрос на SQL, его результат, а также набор смыслов, которые можно добавить на форму для уточнения запроса. Подобный результат пользователь увидит при работе с системой в "лояльном" режиме. При добавлении смыслов на форму пользователь автоматически переводится в "строгий" режим работы.
В этом режиме пользователю предоставляется дерево смыслов, которые он может добавить на форму. При выполнении запроса с учетом выбранных смыслов транслятор может переформулировать или отменить исходный запрос. В итоге запрос, извлекающий смыслы данных, объединяется с запросом, извлекающим сами данные, и выполняется, а результат и весь текст запроса предоставляются пользователю (рисунок 12.26).
Пользователь может сразу перейти в "строгий" режим работы, если он знает, какие смыслы ему нужны для составления запроса. Таким образом, с каждым смыслом можно связать два сценария — для "строгого" и "лояльного" режимов.
Заметим, что некоторые сценарии с учетом смыслов могут выполняться автоматически, без обращения к пользователю.
Как уже упоминалось, предусмотрен вариант отказа пользователя от работы со смыслами. В этой ситуации семантику интерпретирует сам пользователь.
Остановимся на возможностях повторного использования смыслов. Поскольку смыслы, помещаемые в базу, определяются в основном предметной областью и в меньшей мере — базой данных, желательно смыслы выделить и обеспечить их повторное использование. Такую возможность предоставляет схема, приведена на рисунке 12.27.
В схему хранения смыслов, представленной на рисунке 12.23, добавлена таблица "Приложение", отмеченная на рисунке 12.27 цифрой 5, которая позволит выделить информацию о смыслах из разных приложений.
Информация о приложении, использующем смыслы, будет влиять только на таблицы "Связь таблиц данных и смыслов", "Сценарий", "Связь смысла и наборов его возможных значений", "Соответствие значений из разных наборов". Остальные таблицы содержат данные, описывающие смыслы и не зависящие от приложения.
Не вдаваясь в подробности, отметим, что такая система представляет некоторую разновидность базы знаний предметной области, ориентированной на реализацию в базах данных. Понятно, что для эффективного ее использования необходимо решить целый ряд теоретических проблем, связанных с заданием сходства и связанности смыслов, их контекстности. Предлагаемый подход существенно расширяет семантику, реализуемую в базах данных. В базе появляются связи, которые ранее не могли быть созданы. Можно считать, что введены семантические расширения реляционных и объектных моделей, реализуемые программно.
Подводим итог. Базы данных, насыщенные семантикой, можно эмулировать за счет использования претрансляторов, которые в исходной инструкции обнаруживают прикрепленные смыслы и реализуют их, преобразуя исходную инструкцию автоматически или после диалога с пользователем, а затем передавая полученный результат на исполнение.
Для создания семантических расширений СУБД реляционного типа и объектно-реляционных необходимо:
- обеспечить хранение метаданных смыслов в словаре (не обязательное условие);
- добавить триггеры на чтение данных;
- разрешить пользователю создание и использование сценариев, связанных со смыслами, предусматривающих переформулирование исходной инструкции, может быть, в диалоге с пользователем, и отмену выполнения исходной инструкции. Мы полагаем, что производителям СУБД было бы нетрудно внести необходимые изменения. Возможность работы с использованием и без использования смыслов не ухудшит быстродействия в обычном режиме.
12.3.7 Семантика задачи
В обычных базах данных команды манипулирования данными и запросы однозначно определяют результат. Все, что получено в ответе, в равной степени необходимо и адекватно заданию. Поэтому запросы к базе данных можно противопоставить запросам в поисковых системах, которые могут не давать точного ответа и характеризуются двумя основными свойствами — релевантностью и пертинентностью.
Релевантность определяет степень соответствия смыслового содержания ответа семантике запроса. Именно так, расплывчато, мы и будем понимать термин "релевантность" далее. Пертинентность это соотношение объема полезной информации к общему объему полученной информации. Не будем вдаваться в тонкости определений этих понятий и, тем более, производных понятий, таких как точность поиска (отношение числа выданных релевантных фактов к общему числу ответов) и полнота поиска (отношение числа выданных релевантных фактов к общему числу имеющихся в базе релевантных фактов).
В базах данных насыщенных семантикой исполняемый запрос может перестраиваться, уточняться. При этом релевантность ответа повышается за счет дополнительной информации извлекаемой либо из пользователя, либо из хранимой семантики. Возможно как расширение, так и сужение запроса. Если, например, ищутся люди с указанной заработной платой, скажем, 10000, то может быть уместным уточнение смысла запроса. Выясним, мы ищем человека, про которого не известно ничего кроме зарплаты, или нам нужны люди с зарплатой примерно 10000. В последнем случае запрос может быть расширен путем замены точного значения на интервал, например, [9900, 10100].
В обычной базе нетрудно найти человека с фамилией Иванов, если в одной из таблиц есть столбец "Фамилия". В двухслойной базе, работающей с регулярными выражениями, Иванова можно найти даже в столбце "Фамилия, имя, отчество", а вот найти людей с "лошадиными" фамилиями не удастся. Необходимо иметь семантическую сеть с концептом "лошадь", сведения о том, как строятся фамилии в русском языке, и, может быть справочник фамилий. Необходимо также представлять какие именно понятия связываются у человека с лошадью непосредственно. Транслятор исходного запроса, написанного на некотором фрагменте естественного языка, должен трансформировать его с учетом указанных сведений о предметной области и схемы базы. Заметим, что результат будет очень похож на ответ поисковой системы. И обычные для поисковых систем оценки релевантности и пертинентности здесь будут вполне уместны.
В общем случае для работы с семантикой задач необходимы некоторые информация о структуре и особенностях исходных заданий, онтологии и/или семантические сети предметных областей, а также сведения о связях используемых концептов и отображениях концептов в базу данных. Возможно потребуется уточнение задачи "на ходу".