Язык представления данных и знаний IRL.
В качестве модели представления данных и знаний была выбрана сеть фреймов. Понятие фрейма широко используется в областях, связанных с искусственным интеллектом. Фрейм позволяет описывать как абстрактные объекты и понятия, так и конкретные объекты, имеющие точные числовые характеристики. Также представляется очень существенной возможность представления в виде фреймов иерархических объектов. Фрейм, как известно, состоит из слотов, описывающих конкретные свойства понятия или объекта. Для работы с фреймами был разработан специальный язык, названный нами Intelligent Request Language, или сокращенно IRL. Грамматика этого языка представлена ниже. Она относится к классу Q-грамматик, так как содержит правила вида N:empty. Грамматики этого типа допускают нисходящий грамматический разбор. Общий вид грамматики представлен ниже.
<ОписаниеПонятия>: <ИмяПонятия> <Предок> <Источник> <Состав> <ОписанияСлотов> { <Источник> <Состав> <ОписанияСлотов>
<Предок>: :<ИмяПредка> { {
<Источник>: <ИсточникДанных>=<ОписаниеИсточника> empty
<ОписаниеИсточника>: "<ИмяФайла>"; "<IP-адрес>";
<Состав>: <Состоит> { <ОписаниеСостава>
<ОписаниеСостава>: <ОписаниеПонятия> <ОписаниеКоличества> <ОписаниеСостава> }
<ОписаниеКоличества>: :<ЧислоВхождений>; ;
<ОписанияСлотов>: <ИмяСлота> <ЗначениеСлота> <ОписанияСлотов> }
<ЗначениеСлота>: <Число> <ЕдиницаИзмерения> <Продолжение> [<Число>,<Граница>] <ЕдиницаИзмерения> <Продолжение> "<Строка>" <Продолжение> ~<ОписаниеСтолбца> <ЕдиницаИзмерения> <Продолжение> #<ИмяСлота> <Продолжение> <ОписаниеПонятия> <Продолжение> ?;
<ЕдиницаИзмерения>: (<ИмяЕдиницы>) empty
<Граница>: <Число> > <
<Продолжение>: ; | <ЗначениеСлота>
<ОписаниеСтолбца>: <Столбец><ПродолжениеОписанияСтолбца>
<ПродолжениеОписанияСтолбца>: :<ИмяФайла>:<Столбец>=<Столбец><ПродолжениеОписанияСтолбца> empty
Достоинством языка IRL можно считать возможность описания двух таких важных сущностей, как наследование и включение. По нашему мнению, машинный язык может адекватно представлять устройство мира с человеческой точки зрения только в том случае, если он отображает эти понятия. Как видно из грамматики, в частном случае фрейм языка IRL может иметь только имя, и ничего больше. В этом случае он является описанием базового понятия, то есть, понятия, не имеющего предка. В качестве базовых понятий используются:
1. Действие (Action).
2. Свойство (Property).
3. Отношение (Relation).
4. Объект (Object).
Некоторые из базовых понятий имеют свойства (слоты), другие - нет. К числу первых относятся действие и отношение, к числу вторых - свойство и объект. Базовое действие имеет следующие слоты:
Название.
Объект действия.
Субъект действия.
Время действия.
Место действия.
Что имеется в начале действия.
Что имеется в конце действия.
Последние два слота предназначены для того, чтобы система могла анализировать действие не только по названию, но и по сути. Базовое отношение в свою очередь имеет слоты:
Объект.
Субъект.
При описании конкретного действия или отношения каждый слот получает соответствующее значение. Все остальные понятия наследуются из базовых. По умолчанию фрейм-потомок наследует все слоты фрейма-предка, а к ним уже может добавлять любое количество своих слотов. Кроме наследования, грамматика языка IRL позволяет реализовать такую важную вещь, как понятие включения. Для этого введен специальный слот <Состоит>. Объект может состоять из любого числа других объектов, которые, в свою очередь, могут быть составными. Если характеристика объекта может быть выражена с помощью чисел, то язык предоставляет следующие возможности:
Использование единиц измерения по усмотрению пользователя. Единицы измерения, используемые пользователем, с помощью таблиц преобразования приводятся к унифицированным.
Использование числовых диапазонов. Для них предусмотрен специальный синтаксис. Кроме понятий и объектов система может хранить отдельные факты и правила-продукции, или, говоря другими словами, каждый фрейм является своего рода правилом-продукцией. Остановимся для начала на фактах. Факт любого рода может быть представлен в виде фрейма, описывающего конкретное действие. Например, если мы хотим занести в базу знаний системы тот факт, что Колумб открыл Америку в 1492 году, это будет выглядеть следующим образом:
Открыл : Действие { Объект = "Колумб" Субъект = "Америка" Время действия = "1492 год" }
Фреймов с одинаковым названием в системе может храниться сколь угодно много. Нужно лишь, чтобы они отличались друг от друга. Благодаря уникальной конструкции файловой системы поиск нужного фрейма происходит очень быстро. Обратимся вновь к грамматике языка IRL. Слот <Источник> может присутствовать в любом фрейме, но он не является обязательным. Это значит, что если данные хранятся в конкретной базе данных, то мы ее указываем, а если нет - это будет факт общего вида, пример которого и был приведен выше. Следует остановиться еще на одном важном моменте. В реальной практике довольно редко встречаются обособленные файлы баз данных. Как правило, для увеличения быстродействия систем обработки данных информация хранится во множестве различных файлов, связанных между собой. Язык IRL позволяет описывать связанные базы данных. Мы не будем касаться конкретного синтаксиса. Приведем лишь общий вид некоторого факта, а именно: описание объекта "Фирма", данные о котором хранятся в одной базе данных, а данные о продукции, выпускаемой фирмой - в другой базе данных. Естественно, что эти базы должны быть связаны между собой.
Список литературы:
1.”Искусственный интеллект”. 2-й том под редакцией Поспелова.
2.