packin.ru

Публикации

Программа ABRIAL - конструктор баз знаний в системе ИНФО-Т

Труды 7-й национальной конференции по искусственному интеллекту КИИ-2000. Переславль-Залесский 2000.

А.И. Пацкин

РосНИИ Искусственного интеллекта, Москва

aleksandr@tochka.ru

 

Роль центрального компонента разрабатываемой в РОСНИИИИ интеллектуальной оболочки баз данных ИНФО-Т заняла программа ABRIAL. Как выяснилось в ходе разработки, эта программа может представлять самостоятельный интерес.

 

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

 

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

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

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

          Алексей:Человек

          Петр:Человек

И есть факт

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

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

 

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

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

Белая(Роза)

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

Получил(Иванов И.И.,Май,Премия,1000)

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

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

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

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

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

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

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

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

Программу ABRIAL среди множества псевдо-аналогов выделяет именно такой объектный взгляд.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Дело в том, что в системе ABRIAL возможно произвольное упорядочивание фактов внутри объекта по любому аспекту. Так в нашем примере может отражаться порядок сыновей (т.е. фактов по аспекту "Сын"), что может быть принципиально важно для пользователя, если тот, скажем, интересуется вопросом престолонаследия. :-)

Но ни Пролог, ни реляционные СУБД не имеют средств для такого упорядочивания. И вовсе не потому, что кто-то забыл сделать эти средства, а потому что такое упорядочивание в корне противоречит идеологии указанных систем.

Нельзя сказать, что эта проблема в принципе неразрешима в рамках реляционных СУБД, но цена такого решения всегда значительна, а зачастую и неприемлема.

Таким образом, в системе ABRIAL мы не видим фактов, как таковых, вместо них мы видим множество аспектов некоторого объекта, а внутри

этих аспектов наборы связей с другими объектами.

Особенности системы ABRIAL.

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

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

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

2)      ABRIAL представляет унифицированный табличный интерфейс пользователя, позволяющий осуществлять и навигацию по сети, и ввод данных, и  конструирование через единообразный набор действий с таблицами. Изучить этот интерфейс не сложнее, чем работу с простой электронной таблицей (без "наворотов" современного Excel'а). Во многом он может напоминать электронные таблицы. Можно сказать даже, что ABRIAL  - это электронные таблицы для объектных сетей.

3)      ABRIAL представляет свою вычислительную модель, основанную на виртуальных отношениях. Виртуальные отношения в отличие от реальных отношений, не представляются реальными фактами, а вычисляются динамически, но со стороны объекта аспекты виртуальные выглядят также как реальные и по виртуальным связям возможна такая же навигация по объектной сети. Например, на основе реального отношения Родитель можно задать виртуальное отношение "Братство" и другие более далекие родственные отношения. Заметим, что виртуальные отношения задаются в близкой к живому языку декларативной форме, полностью избавленной даже от намека на, какой бы то ни было, порядок вычисления. Здесь используется принцип управления по данным, когда порядок вычислений определяется готовностью.

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

5)      Формат данных, используемый в файлах ABRIAL, может быть предложен в качестве кандидата на стандартный формат обмена данных в распределённых объектных средах. Если для интерфейса с человеком формально-языковый текст есть избыточное звено, то для интерфейса между различными частями распределенной системы хранения информации удачный язык может сыграть решающую роль. Язык (или формат), используемый в файлах ABRIAL для хранения баз знаний, совмещает в себе  функциональную полноту, достаточную  для представления данных из любых областей, простоту для легкой автоматической обработки, и главное достаточную внятность и читабельность для просмотра и правки человеком через текстовые редакторы. Есть определённая надежда, что этот или подобный язык (формат) может стать основой для построения модели распределённой объектной среды в глобальных сетях.

6)      ABRIAL это практическая система. В ней собраны черты многих исследовательских систем представления знаний и систем программирования. Если даже по отдельности многие из этих черт не новы, то в комбинации, в составе такого прагматического дайджеста, как ABRIAL, могут представлять некое новое качество. Автору неизвестны примеры компактных и простых для освоения непрофессионалами в информатике, систем конструирования объектных баз знаний. Есть факто-ориентированные экспертные системы, но это нечто совсем иное, как было показано выше. Есть, очевидно, дорогие и громоздкие надстройки над реляционными СУБД, требующие высокой квалификации пользователя и многих месяцев для освоения. Но территория, на которую претендует ABRIAL, в настоящее время, похоже, не заселена.

Литература:

1.      Abrial J.R. (1974) Data semantics - In Data Base Management, North Holland, Amsterdam.

2.      Booch, G. (1991) Object Oriented Design with Applications, The Benjamin/Cummings Publishing Comp. Inc NY

3.      Chen P.P. (ed.) (1980) Entity-Relationship Approach to System Analysis and Design. North Holland, Amsterdam.

4.      Findler N. (ed.) (1979) Associative Networks.Academic Press, NY