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

Основные понятия


В данном разделе вводятся основные понятия "изотропной" модели данных Абриаля. Проще говоря, здесь рассказано, как устроена сеть данных.

Объекты и связи.

Сеть, или база знаний представляется пользователю состоящей из элементов двух видов: из объектов и связей.

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

Типы, классы, отношения

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

Можно мысленно представлять себе всё множество однотипных связей как отношение. Однако чтобы не возникало ложных ассоциаций с реляционными СУБД, надо сказать, что Абриаль не манипулирует отношениями или таблицами, как это делают реляционные СУБД. Гипертаблицы Абриаля только похожи на реляционные таблицы, но природа у них иная.

Категории классов

Объекты делятся на следующие категории:

  1. Сущности
  2. Структуры
  3. Значения

Соответственно классы объектов делятся на следующие категории: ITEM, DATA, VALUE, SUPER.

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

Объекты категории DATA называются структурами и отличаются от сущностей тем, что не имеют имен. Эти объекты (так же как значения) могут быть только вторичными по порядку доступа. Они могут представлять многомерные точки, даты, адреса, и т.д.

VALUE-классы содержат элементарные значения:

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

Классы категории SUPER являются абстрактными, и не имеют представителей. Они играют роль общих предков для своих классов наследников.

Размерность связей и отношений

Каждое отношение имеет определенную размерность . Размерность отношения есть число объектов, которое входит в связи данного отношения. Практически, большинство отношений  имеют размерность 2, и называются эти отношения бинарными или двухместными . Но наравне с бинарными отношениями в системе могут использоваться унарные отношения (с размерностью 1), а также отношения большей размерности (многоместные), в том числе тернарные (с размерностью 3). Подчеркнём, что все связи одного отношения имеют одинаковую размерность.

Слоты и аспекты

Место соединения одного объекта с одной связью мы будем называть слотом . Можно считать, что каждая связь состоит из стольких слотов , какова размерность связи. Слоты имеют типы, и мы назовём эти типы слотов аспектами . Если одна связь, как представитель отношения, состоит из слотов, то всё отношение состоит из типов слотов, т.е. из аспектов. Аспектом объекта , (не путать с просто аспектом) мы будем называть множество однотипных слотов, связанных с одним объектом. Система Абриаль является объектной, и поэтому основной взгляд на данные в ней принят со стороны объектов. В этой связи понятие аспекта объекта приобрело здесь ключевую роль. В частности гипертаблицы главного интерфейса отображают единовременно содержимое одного аспекта некоторого объекта. Если глядеть со стороны объекта, то содержимое одного его аспекта, видится как совокупность связей или как множество фактов, в которых данный объект упомянут в определённом смысле.

Виды аспектов.

Аспекты разделяются на виды по нескольким критериям...

Категории аспектов

Наиболее важной характеристикой аспекта является его категория.

Одиночные аспекты характерны тем, что у объекта в одном таком аспекте может находиться только одна связь. Для множественных аспектов - в одном аспекте объекта может быть много связей, их порядок поддерживается системой, и среди связей не может быть полностью идентичных. Списочные аспекты таковы, что внутри одного аспекта объекта может находиться список (упорядоченный набор) связей. В данном случае порядком внутри этого списка управляет пользователь. Для списочных аспектов вопрос об идентичности связей не стоит, т.к. различные позиции в списке всегда нарушают идентичность. Есть ограничение: списочный аспект в отношении может быть только один.

Пример. В бинарном отношении Мать-Дитя имеются два аспекта: аспект Мать, примыкающий к объекту, выступающему в роли матери и соответственно - аспект Дитя, примыкающий к "детскому" объекту. Одна такая связь между объектами М и Д показана на следующей схеме.

       М ------ Мать-Дитя -------- Д

В этом случае аспект Мать является множественным аспектом, т.к. у одной матери может быть несколько детей, или списочным аспектом, т.к. список может отражать порядок появления детей, а Дитя есть, очевидно, аспект одиночный.

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

Простые аспекты и атрибуты объектов

Следует выделить часто встречающийся вид аспектов называемых простыми , которые соответствуют традиционному понятию атрибут объекта (или слот объекта из теории фреймов). Простыми аспектами мы будем называть одиночные бинарные аспекты. Для такого аспекта у объекта, с противоположной стороны бинарной связи может находиться только один объект, который мы можем представлять себе как значение некоторого атрибута первого объекта.

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

Владеющие и ссылочные аспекты

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

Если удаление связей вслед за объектом происходит безусловно, то обратное справедливо только для определенных условий. Аспекты, называемые владеющими, имеют признак HOLD, это означает что слоты данного аспекта  как бы "содержат" связанные с ними объекты. При удалении связи зависимый от неё объект также должен удаляться. Благодаря этому механизму агрегаты данных, состоящие из многих объектов, удаляются как одно целое, и при удалении не образуется мусора из "потерянных" объектов.

Аспекты (и соответственно их слоты) не являющиеся владеющими называются ссылочными.

Домен аспекта, атрибуты класса.

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

Например, пусть отношение Сотрудник-Отдел состоит из двух аспектов Сотрудник и Отдел, и должно отображать, какие сотрудники в каких отделах работают. При этом аспект Сотрудник имеет домен-класс Сотрудники, а у аспекта Отдел доменом является класс Отделы.

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

Имена объектов.

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

Глобальные и локальные имена

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

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

Метаданные и дескрипторы.

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

Ядро сети.

Поскольку объекты-дескрипторы типов и их связи тоже должны иметь типы, и они также должны описываться дескрипторами, то из этого следует, что в сети всегда должно присутствовать некое не удаляемое ядро, описывающее саму систему дескрипторов. Это ядро появляется в сети в момент её инициализации и не может ни удаляться из сети, ни как-либо изменяться. Ядро системы состоит из дескрипторов системных классов (и других типов) и их связей. Все дескрипторы классов имеют тип CLASS. Среди них есть объект CLASS, имеющий тип CLASS, т.е. он сам для себя является типом. Отношения описываются дескрипторами типа LINK, аспекты - дескрипторами типа SLOT. Сами объекты LINK и SLOT имеют тип CLASS. Все системные объекты и их связи защищены от удаления и от изменения.

Наследование классов.

Классы (точнее их дескрипторы) могут связываться между собой бинарным отношением наследования ISA. Если класс A является наследником класса B, что записывается как

ISA(A,B)

Это значит, что помимо всех своих атрибутов, класс A наследует все атрибуты класса B.

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

По отношению к классу А, класс В называется его прямым предком.

Ключи

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

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

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

Целостность данных.

Существует ряд встроенных ограничений, не позволяющих создавать в сети некоторые некорректные структуры данных. Кроме того, есть система правил связанных с удалением данных. Все эти правила и ограничения обеспечивают так называемую целостность базы знаний. Рассмотрим в общих чертах, о каких именно ограничениях и правилах здесь идет речь.

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

 


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

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