Абриаль 2.1 Начало Выше Дальше29/09/04 А.И.Пацкин [packin.ru]
[ Вводная статья ] Основные понятия ] Обзор ] Строение системы ] Датацентрические системы ] Введение (версия 1.6) ] История ] Глоссарий ]

Вводная статья


Данный документ в основном повторяет содержание статьи ".Пацкин А.И. Программа ABRIAL - конструктор баз знаний в системе ИНФО-Т. Труды 7-й национально конференции по искусственному интеллекту КИИ-2000. Переславль-Залесский 2000."

Программа Абриаль представляет собой конструктор баз знаний (БЗ). Данные или знания, с которыми работает Абриаль, состоят, из множества объектов и множества фактов (или высказываний об этих объектах). Все объекты принадлежат определённым типам, называемым классами объектов. Факты также имеют типы, называемые отношениями. Часть объектов могут иметь имена, позволяющие описывать факты, касающиеся этих объектов, в тексте на формальном языке.

Факты рассматриваются в Абриале не сами по себе, а как связи между объектами. То есть всё множество объектов и связующих эти объекты фактов образует некоторую сеть, по которой, с помощью Абриаля можно эффективно путешествовать, и которую можно строить и перестраивать с помощью представляемого Абриалем наглядного и привычного для большинства пользователей гипертабличного интерфейса.

Объекты и факты.

Например, есть два объекта с именами "Алексей" и "Петр". Оба объекта имеют тип (принадлежат к классу) "Человек". Записывается это так

Алексей:Человек
Петр:Человек

И есть факт

Родитель(Алексей,Петр)

что означает "Алексей есть отец Петра". Слово Родитель здесь означает имя отношения, к которому относится данный факт. Позже мы узнаем, что и отношения, такие как "Родитель", и классы, такие как "Человек", представлены в БЗ самостоятельными объектами дескрипторами. При этом слова "Родитель" и "Человек" есть ни что иное, как имена этих дескрипторов.

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

Отношение Родитель является бинарным или двухместным отношением. Возможны также унарные или одноместные отношения и факты, например факт

Белая(Роза)

говорит о существовании объекта Роза, обладающего свойством Белая. Система допускает и многоместные или N-арные отношения, например факт

Получил(Иванов И.И.,Май,Зарплата,1000)

связывает четыре объекта, и смысл этого факта очевиден: Иванов получил зарплату за Май в размере 1000 (евро:-). Заметим, что последний объект из этой четверки, именно число 1000, не имеет имени, но зато имеет внутри себя значение, в данном случае - числовое, хотя могут быть объекты, содержащие строчные значения.

Кстати отметим, что и сами имена, являются не чем-то внутренне присущим объекту; на самом деле, имена есть самостоятельные объекты строчного типа. Но пока, на данном уровне рассмотрения, мы можем считать, что объекты и их имена есть одно целое.

Особенностью непоименованных объектов-значений является то, что, как правило, они участвуют в одном и только одном факте, и их можно без ущерба для понимания, рассматривать просто как часть этого факта.

Взгляд на факты изнутри объектов.

Итак, Абриаль работает со знаниями, представленными в виде объектов и фактов. Однако читателю, знакомому с проблематикой БЗ, должно быть известно, что существует множество систем для работы с данными, устроенными приблизительно таким образом. Поэтому нужно объяснить, зачем понадобилось к тысяче систем добавлять тысяча первую.

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

Действительно, в факт, записанный в виде формулы, вместо простого имени или значения можно подставить сколь угодно сложное выражение и таким образом строить некую грамматику, призванную выражать всё более сложные взаимосвязи вроде бы наиболее интуитивно понятным способом.

Но это не только не естественно, а даже наоборот - неприемлемо, если мы хотим построить объектный броузер, т.е. программу, позволяющую пользователю путешествовать по сети из объектов. Для такого путешествия необходим другой взгляд на факты, именно взгляд со стороны объектов, или, другими словами, взгляд изнутри объекта.

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

Не следует смешивать это с объектно-ориентированным подходом (ООП). Хотя Абриаль имеет некоторые пересечения с идеологией ООП, (классы, наследование и т.д.), но с точки зрения фундаментальных принципов, идеи Абриаля во многом противоречат ООП.

Связи и аспекты.

С точки зрения объекта факты выглядят в системе Абриаль как связи данного объекта с другими объектами.

Например, факт

Родитель(Алексей,Петр)

Выглядит изнутри объекта Алексей как

.....Сын=Петр......

а изнутри объекта Петр как

.....Отец=Алексей.....

Здесь появляется понятие аспекта. Аспект это одна из сторон отношения. Каждой объектной позиции внутри факта (или отношения) соответствует аспект. "Сын" и "Отец" в данном примере есть два аспекта отношения "Родитель".

Таким образом, объект, если смотреть изнутри него, выглядит как бы окруженный множеством аспектов. В каждом аспекте объекта находится один или несколько фактов. Например, имея три факта

Родитель(Алексей,Федор)
Родитель(Алексей,Иван)
Родитель(Алексей,Петр)

мы видим их изнутри объекта Алексей таким образом

.....Сын=(Федор,Иван,Петр)...

т.е. наименование отношения заменено аспектом, а первая позиция фактов (примыкающая к объекту "Алексей" и потому - общая) отброшена.

Тут мы кстати наталкиваемся на одно принципиальное отличие Абриаля от систем логического программирования (язык Пролог) или реляционных СУБД (язык SQL и т.п.).

Именно: в Абриале возможно произвольное упорядочивание фактов внутри объекта по любому аспекту. Так в нашем примере может отражаться порядок старшинства сыновей (т.е. фактов по аспекту "Сын"), что может быть принципиально важно допустим, для темы престолонаследия :). Ни Пролог, ни реляционные СУБД не имеют базисных средств для такого упорядочивания. Более того: такое упорядочивание в корне противоречит основам указанных идеологий.

Таким образом, в системе Абриаль мы не видим фактов, как таковых, вместо них мы видим множество аспектов некоторого объекта, а внутри этих аспектов наборы связей с другими объектами.

Особенности системы Абриаль.

Итак, мы определили, что Абриаль относится к классу систем, работающих с объектными сетями, т.е. развивает классические идеи: ER-сетей Чена, бинарных сетей Абриаля (в честь которого программа получила имя), а также, так называемых семантических сетей.

Но систем такого рода довольно много, и требуется определить особенности и претензии на новизну, выделяющие Абриаль среди этого множества. Перечислим эти особенности.

  1. Абриаль представляет эффективное программное воплощение идеологии объектных сетей. Используя подход Абриаля, можно работать с сетями неограниченной сложности и неограниченного объема, без потери эффективности. Это связано с тем, что Абриаль основан на собственной изотропной модели памяти, в которой не используются односторонние ссылки, вложенные структуры любого вида и глобальные механизмы. С другой стороны объектные сети такого рода, традиционно строятся на базе диалектов Лиспа, Смолтока и других языков, само устройство которых мешает создать эффективные объектные сети сколько-нибудь крупного размера. Дело тут не в мощности компьютеров, которая быстро растет, а в использовании механизмов (вроде сборки мусора), которые зависят от размера базы линейно или более чем линейно. В Абриале таких механизмов нет. Точнее, нет принципиальной, теоретической опоры на глобальные механизмы, хотя в текущей "настольной" версии глобальные механизмы могут использоваться из соображений простоты реализации.
  2. Абриаль представляет унифицированный гипертабличный интерфейс пользователя, позволяющий осуществлять и навигацию по сети, и ввод данных, и конструирование через единообразный набор действий с гипертаблицами. Изучить этот интерфейс не сложнее, чем работу с простой электронной таблицей. Во многом он может напоминать электронные таблицы. Можно сказать даже, что Абриаль - это электронные таблицы для объектных сетей.
  3. Абриаль воплощает концепцию программирования без программирования. Программирование в широком смысле это конструирование активных структур в виртуальном мире, а в узком смысле - это написание текстов на формальных языках. Абриаль дает возможность строить сложные активные структуры непосредственно в объектной сети, без написания даже единой строчки программного текста. Т.е. текст на формальном языке, как некая лишняя промежуточная ступень между разумом программиста и активными объектами в компьютере, просто обходится.
  4. Формат данных, используемый в файлах Абриаль, может быть предложен в качестве кандидата на стандартный формат обмена данных в распределённых объектных средах. Если для интерфейса с человеком формально-языковый текст есть избыточное звено, то для интерфейса между различными частями распределенной системы хранения информации удачный язык может сыграть решающую роль. Язык (или формат), используемый в файлах Абриаль для хранения баз знаний, совмещает в себе функциональную полноту, достаточную для представления данных из любых областей, простоту - для легкой автоматической обработки, и главное достаточную внятность и читабельность - для просмотра и правки человеком через текстовые редакторы. Есть определённая надежда, что этот или подобный язык (формат) может стать основой для построения модели распределённой объектной среды в глобальных сетях.
 

Все права защищены. © 2000-2004 РосНИИ ИИ
http://artint.ru
Copyright. © 2000-2004 by RRIAI
Александр Иосифович Пацкин [mailto:aleksandr@tochka.ru].
29/09/04

К началу документа.