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

Введение (версия 1.6)


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

Содержание

Что содержит документ

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

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

Зачем нужен Абриаль.

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

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

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

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

Языки семейства Лиспа, даже такие мощные как CLOS, поднимают на внешний, пользовательский уровень такие интимные детали реализации, которые могут создать свою субкультуру поклонников, но ставят крест на возможности использования этой идеологии в качестве общей платформы.

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

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

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

Электронные таблицы HTML, XML, etc... заслужили "всенародное" признание за простоту и наглядность интерфейса, но здесь данные так намертво привязаны к своему внешнему представлению, плоскому, или древовидному, что попытки как либо еще их повернуть или вывернуть заранее обречены на неудачу.

И т.д... можно продолжать это перечисление достаточно долго, но уже сейчас можно сделать важный вывод. Все эти идеологии и направления решают только какую-то одну сторону проблемы, и всё время получается по поговорке: "хвост вытянул, нос увяз". Между тем, общая платформа для ИИ должна иметь всё сразу: и хорошую модель данных, и хорошую вычислительную модель, и удобные средства внешнего представления, и много чего ещё.

Что же мешает получить все это сразу и без потерь? Рискну предложить свой ответ. Больше всего мешает то, что в фундамент всех этих компьютерных систем изначально закладывают принудительную ссылочную ориентацию, т.е. то, чего нет в природе, то, чего нет в мышлении, а есть только в докомпьютерной культуре человечества, основанной на книгах, текстах, словах, адресах, именах, ссылках.

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

Абриаль назван по имени автора модели данных бинарных семантических сетей. Там были введены функции доступа , отчасти пересекающиеся с понятием аспекта в настоящей системе. Стоит отметить, что модели данных Абриаля-человека и Абриаля-программы, имеют между собой мало общего. Используемая в программе модель данных гораздо ближе к знаменитой модели "сущность-связь" Чена.

Что делает программа

Абриаль помогает быстро строить сложные сетевые базы знаний (или базы данных). Для меня понятия: База Данных (БД), База Знаний (БЗ) или Семантическая сеть (SN) имеют примерно одинаковый смысл. Именно: БЗ есть сложная и легко изменяемая БД, SN есть БЗ для слов и понятий языка. Все эти три понятия в данном документе будут обозначаться одним словом: Сеть.

Информация вводится в Сеть либо вручную, т.е. через интерфейс пользователя, либо конвертируется во внешний формат хранения данных из различных БД или других источников с помощью дополнительных программ. Такое конвертирование реализуется относительно просто, т.к. достаточно прост текстовый формат хранения данных Сети.

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

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

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

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

С чего начать и как пользоваться программой.

Следует запустить программу abrial.exe. Желательно, чтобы в той директории, где запущена программа, находился файл CONFIG.AB,  поставляемый вместе с программой и содержащий настройки.

После запуска программы появляется пустое рабочее поле, в котором по ходу работы будут появляться окна трех типов: гипертабличные окна , древовидные окна и окна текстового редактора .

Основное окно интерфейса - гипертаблица. Чтобы открыть первую таблицу необходимо: выбрать в меню Файл->Таблица или нажать Ctrl-T. Появится стандартное окно выбора файла. Необходимо выбрать файл, содержащий БД. Это может быть файл с расширением AB, содержащие БД в текстовой форме, или AM, содержащие ранее сохранённые двоичные образы БД в памяти. Если отказаться от выбора (например, нажав Esc), то программа предложит создать новую, пустую Сеть. После загрузки файла или создания пустой Сети на рабочем поле появляется первая таблица (табличное окно).

То, что мы видим вначале - это таблица классов (классом называются типы объектов). Строки соответствуют классам. Первые два столбца содержат имя класса. В ячейках третьего столбца (озаглавленного ITEMS) видны списки имен представителей классов. Это "парадный вход" в систему. Отсюда можно за два-три или чуть больше щелчка мышью (нажатия на клавишу Enter) добраться до любого объекта Сети. Там пользователь может посмотреть необходимые ему данные (например, для справки, если это электронный справочник) или произвести нужные изменения, (например, если это система учета). Вот, собственно, и всё. Можно еще добавить, что при наличии изменений перед выходом из программы данные следует сохранить, нажав Ctrl-S и выбрав новое (или подтвердив старое) имя файла БД.

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

Таким образом, программа ведет себя как обычный многооконный редактор, с той лишь разницей, что обычно редакторы позволяют редактировать одновременно несколько файлов, а Абриаль позволяет работать через несколько окон, но только с одной Сетью. Если требуется работать одновременно с двумя и более Сетями, то для этого придется запускать программу повторно. Итак, один запуск работает ровно с одной Сетью.

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

Устройство Сети.

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

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

Условные обозначения.

Обозначения объектов

Классы и соответственно их объекты делятся на три категории 

  1. Именованные объекты (сущности).
  2. Неименованные объекты (структуры).
  3. Примитивные объекты (значения).

Именованные объекты обозначаются так:

     Имя-Объекта :Имя-Класса 

Например, Петров:Мужчина или Сидоров:Сотрудник. В тех случаях, когда класс объекта известен из контекста, двоеточие с именем класса может быть опущено.

Неименованные объекты (или Структуры) обозначаются двумя способами: либо "снаружи", т.е. со стороны старших объектов в форме:

  Имя-класса [...Содержание... ]

например, Дата[День=21,Месяц=Август,Год=1991], либо "изнутри", т.е. со стороны подчиненных объектов:

  Имя-класса (...Принадлежность... )

например: Дата(Когда=Событие[Конец=СССР])

Значения - это примитивные объекты, т.е. строки символов или числа изображаются в своей традиционной форме, т.е. в форме литералов. Строки ограничиваются двойными кавычками: "Пример изображения строки". Строки изображаются в обычной десятичной форме: целые без точки, действительные - с точкой.

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

#2345

или так

#4321:Date

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

Например, допустив, что имена улиц уникальны в пределах города, а номера домов - в пределах улицы, получим составные имена: 

  • Москва\Тверская:Улица
  • Москва\Строителей:Улица
  • Санкт Петербург\Строителей:Улица
  • Москва\Строителей\22:Дом
  • Санкт Петербург\Строителей\22:Дом

Наименование аспектов

Аспекты локально именуются в пределах своих отношений. И соответственно, полное имя аспекта состоит из имени отношения и имени аспекта внутри отношения. Например, отношение Брак может иметь два аспекта Муж и Жена, полные имена которых соответственно есть Брак\Муж и Брак\Жена.

На объекты можно смотреть как на комнаты, а на связи - как на коридоры, их соединяющие. Тогда аспект объекта это как бы дверь из комнаты в коридор (точнее тип дверей) а имя аспекта - табличка на этой двери. Но на каждую дверь табличку можно повесить с двух сторон, и естественно ожидать, что таблички должны быть разные. Представим себе, как осложнилась бы жизнь, если бы таблички "М" и "Ж" помещались бы на противоположной стороне дверей, а на их обычном месте было бы написано "Выход"! Поскольку имена аспектов по умолчанию используются в качестве указателей для навигации, т.е. для заголовков столбцов, для заголовков таблиц и т.д., то при выборе имен для аспектов, особенно для двухместных (бинарных) отношений нужна особая предусмотрительность. Иначе вместо указателя того, куда ведет та или иная "дверь", пользователь будет с недоумением видеть, откуда он движется.

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

Обозначения аспектов объектов.

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

Устройство гипертаблиц.

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

Несколько простых правил для работы с таблицами.

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

  1. Текст в ячейках, щелкнув по которым, можно перейти в другую таблицу, выглядит как ссылка интернета, т.е. обычно он синий, подчеркнутый, и над ним привычно видоизменяется указатель мыши.
  2. Если текст выглядит иначе, значит, в этой ячейке данные можно корректировать на месте.
  3. Если текст в ячейке не заключен в скобки, значит в ячейке находится (и может поместиться ровно) один объект.
  4. В фигурные скобки: {А1,А2,А3} заключаются элементы множеств. Множества автоматически упорядочиваются системой и не могут содержать одинаковых элементов.
  5. В круглых скобках: (а4,а1,а1,а8) изображаются списки, которые могут содержать повторяющиеся элементы, и порядком в списках управляет пользователь.
  6. Если внутри скобок (любого типа) заключена последовательность скобочных структур - это аспект сложного, многоместного отношения. Тогда внутренние скобки соответствуют строчкам таблицы, "упакованной" в данной ячейке, знак "*" внутри этих скобок обозначает исходный (текущий) объект, т.е. тот объект, со стороны которого мы смотрим.
  7. Если щелкнуть по тексту в скобках, делается переход на таблицу соответствующего аспекта, если щелкнуть по одиночному элементу в ячейке - происходит переход на таблицу (форму) данного объекта, или для простых объектов - значений - начинается редактирование значения прямо в данной ячейке.
  8. Если слева таблицы виден столбец с номерами - строки таблицы можно перетаскивать в этом столбце мышью, меняя порядок строк, и  новый порядок будет зафиксирован в данных. 
  9. Ширина столбцов регулируется мышью в верхней заголовочной строке таблицы. Щелчок мышью по заголовку настраивает ширину соответствующего столбца по максимальной длине содержимого в ячейках.  Ширина столбцов запоминается системой. Порядок столбцов тоже может быть изменен мышью, но измененный порядок забывается при первом обновлении таблицы.
  10. Заголовок можно откорректировать на месте, если щелкнуть по нему, держа нажатой клавишу Ctrl.
  11. Везде где можно что-то вставить, для вставки работает клавиша Insert.
  12. Везде где можно что-то удалить, для удаления работает клавиша Delete.

Разновидности (гипер)таблиц.

Таблицы делятся на следующие разновидности:

  • Таблицы объектов или формы
  • Таблицы аспектов или аспектные таблицы (делятся не множественные и списочные)
  • Таблицы представителей классов (или просто таблицы представителей)

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

Таблицы аспектов содержат все однородные связи одного определенного объекта (т.е. один аспект объекта). Например так выглядит таблица для объектов красного цвета, т.е. по аспекту "Цвет для" объекта Красный.

Аспектную таблицу может образовать не всякий аспект, а только  множественный или списочный, т.е. допускающий множество однородных связей. Например, аспект Дети может сформировать таблицу - например, Дети(Шмидт), но такие аспекты, как Мать нормально не являются множественными, и по аспекту объекта Мать(Власов) таблица не образуется.

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

Таблица представителей содержит все именованные объекты некоторого класса

Частным случаем такой таблицы является таблица классов (т.е. представителей класса CLASS) с которой, как мы уже выяснили, начинается работа пользователя, и которая является наиболее удобной исходной точкой навигации.

Содержимое ячеек таблиц.

Во-первых, ячейки делятся по типу столбца:

  • на ячейки объектных столбцов и 
  • на ячейки аспектных столбцов

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

Во-вторых, аспектные столбцы делятся по размерности соответствующего отношения. 

  • Унарные (одноместные) аспекты могут содержать только одну "вырожденную" связь. Т.е. соответствующие ячейки могут находиться только в двух состояниях: (включено/выключено). Соответственно в ячейке отображается либо название аспекта (состояние "включено") либо ничего (состояние "выключено").
  • Множества бинарных (двухместных)  связей одного объекта выглядят как множества (или списки) объектов. Если у связи всего два конца, и у пучка таких связей один конец фиксирован, то вместо пучка связей вполне можно представлять себе множество "смежных" объектов,  прикрепленных к противоположным концам этих связей. Поэтому соответствующие ячейки содержат либо один объект, либо множество объектов в фигурных скобках: {А1,А2,А3}, либо список объектов в круглых скобках: (А4,А2,А2,А5).   
  • Трехместные и другие многоместные связи представляют собой наиболее общий случай, когда в одной ячейке таблицы как бы упакована другая таблица, в которую можно попасть, если щелкнуть по данной ячейке.

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

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

Навигация (перемещение) по таблицам.

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

Принцип движения так же прост, как в интернете: старайтесь давить мышью на всё синее и подчеркнутое, а если занесёт не туда, пользуйтесь кнопкой "назад" .

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

Из любой точки навигации всегда можно вернуться "в начало", т.е. в таблицу классов, просто нажав Ctrl K. Можно отметить (Mark) некую точку комбинацией Ctrl M, и потом вернуться (Jump) к отмеченной точке с помощью комбинации Ctrl J.

Нажатием Ctrl W можно открыть дополнительное окно (Window) "просмотра". В нем будет показываться табличка, отражающая  состояние основной таблицы "на шаг вперед", т.е. по мере изменения активной ячейки в основной таблице содержание этой ячейки будет показываться в дополнительной таблице.

Таких таблиц (как связанных отношением просмотра, так и независимых) можно открыть на рабочем поле любое количество. При этом Сеть наблюдается одновременно с нескольких точек зрения, что особенно полезно, если в данные вносятся изменения.

Редактирование сети

Изменение сети (т.е. редактирование) состоит из следующих действий. 

Рассмотрим несколько общих правил, как делать изменения.

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

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

Чтобы создать или удалить примитивный объект, т.е. число или строку, нужно создать или удалить связь, от которой зависит данный объект. Всякий примитивный объект зависит ровно от одной связи. Внешне такое создание выглядит просто: в пустой ячейке нужно непосредственно начать вводить строчное или числовое значение; после окончания ввода (когда нажата клавиша Enter) примитивный объект будет создан. Удаление примитивного значения производится нажатием на клавишу Delete в соответствующей ячейке.

Чтобы создать неименованный объект (или структуру ), нужно в пустой клетке таблицы, в которой ожидается структура данного типа, нажать Enter. Объект-структура создастся, сначала как бы пустой, и в нее можно будет войти, нажав еще раз Enter. После этого можно дальнейшие связи этой структуры образовывать уже изнутри объекта-структуры. Чтобы удалить структуру, нужно разорвать такую ее связь, от которой структура зависит. Обычно для этого достаточно нажать Delete в ячейке, ссылающейся на данную структуру.

Способ создания и удаления связей зависит от их размерности. 

Унарные (одноместные) связи создаются и удаляются нажатием на Enter в соответствующей ячейке таблицы. Фактически они видны со стороны объектов как двоичные переключатели (включено/выключено).

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

Итак, мы разобрались с именами. Если же с противоположной стороны связи должно появиться значение, то его следует прямо вводить в ячейку. После окончания ввода - появится как новый объект-значение, так и связь с ним. Новые безымянные структуры и связи с ними создаются простым нажатием на Enter либо в пустой ячейке (если аспект простой), либо в последней строке (если аспект множественный).

Удаление для всех вариантов бинарных связей - производится способом, аналогичным вставке, только вместо Insert надо использовать Delete.

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

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

Перетаскивание данных через буфер или с помощью мыши.

Перетаскивание данных - это, во-первых, способ обмена данными между различными базами данных, и, во-вторых, удобный способ ввода данных в сеть. Словом данные мы здесь называем не только просто данные, как в обычных БД, но и метаданные, описывающие структуру данных, а также описания интерфейса, различные настройки, и главное - программный материал, т.е. ассоциации и правила. Всё это хранится в одинаковой форме, и в принципе всё это можно вводить вручную через табличный интерфейс, как описано выше. Однако для метаданных и "программизма" гораздо более удобным может оказаться традиционный, т.е. языковый способ ввода.

Перетаскивать данные можно между таблицами и текстовыми окнами в обоих направлениях, между двумя текстами или между двумя таблицами. Наиболее общий случай -- перетаскивание через буфер: выделить то, что собираемся перетаскивать. Нажать Ctrl Insert. Перейти в целевое окно (и в нужное место, если это текст). Нажать Shift Insert. Готово. Но перетаскивание мышью для каждого направления имеет свои нюансы.

Перетаскивание из таблицы в текст. Выделяется кусок таблицы либо мышью (тащить при нажатой левой кнопке), либо клавишами со стрелками при нажатом Shift, либо клавишей Ctrl A выделяется вся таблица. Далее: тащить иногда удается левой кнопкой, а если не получается, нужно тащить правой, или тащить при нажатом Ctrl. Текст из таблицы перетаскивается только внутри одной задачи. Перетащить в другую задачу можно только "с пересадкой" через текст, а напрямую - только через буфер.

Перетаскивание из текста в таблицу. Выделяется текст либо мышью (тащить при нажатой левой кнопке), либо клавишами со стрелками при нажатом Shift, либо клавишей Ctrl A выделяется всё. Перетаскивание в таблицу возможно только правой кнопкой мыши и только в пределах одной задачи.

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

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

О древовидных окнах.

Каждое древовидное окно (далее - просто дерево) показывает иерархическую структуру ровно одного объекта. Корнем дерева является сам объект, ветвями - аспекты и слоты, листьями служат либо примитивные объекты, которые прямо на месте можно изменять,  либо указатели на смежные объекты в связях. Если нажать Enter или стрелку вправо на таком листе, то происходит переход к смежному объекту и картинка как бы выворачивается.

Деревья удобны для того, чтобы разобраться с тем, как на самом деле устроена сеть, но для практических задач они малополезны: область обзора слишком мала.

Горячие клавиши общие.

Клавиша Действие клавиши
Ctrl D Открывает новое древовидное окно. Для самого первого окна - загружает сеть из файла.
Ctrl I  Показ информационной таблицы (статистики).
Ctrl L

Установка уровня доступа (действует только для таблиц).

  1. Обозреватель - невозможно изменение данных. Минимальный уровень обзора. Видны только "пользовательские" классы.
  2. Пользователь - Обзор минимальный, но можно менять данные.
  3. Разработчик - Видны все свойства классов и все необходимые разработчику классы.
  4. Эксперт - становятся видны системные классы и системные отношения. Т.е. видно и доступно всё.
Ctrl N Открыть новое пустое окно текстового редактора.
Ctrl O Загрузить текстовый файл в новое окно текстового редактора.
Ctrl Q Закончить работу.
Ctrl T Открывает новое табличное окно. Для самого первого окна - загружает сеть из файла.
Ctrl Tab Переход к следующему активному окну.

Горячие клавиши в таблицах.

Клавиша Действие клавиши
Ctrl A Выделяет все содержимое таблицы. (Для переноса мышью в текстовое окно или копирования в буфер).
Ctrl B Возврат на шаг назад.
Ctrl F Повторное движение на шаг вперед (после возвратов).
Ctrl G Загрузка дополнительного файла в уже открытую сеть.
Ctrl J Прыжок в ранее отмеченную (с помощью Ctrl M) точку.
Ctrl K Установить таблицу классов.
Ctrl M Отметить текущую точку навигации.
Ctrl R Установить таблицу отношений.
Ctrl S Сохранить текущую сеть в исходный файл. В первый раз спрашивается подтверждение имени файла.
Ctrl W Открыть дополнительное окно просмотра.
F2 Сохранить текущую сеть в файл. Всегда спрашивается имя файла.
Ctrl Insert Выделенная часть таблицы помещается в буфер (для переноса в текст или в другую Сеть).
Shift Insert Вставляет (загружает в текущую сеть) текст из буфера

Горячие клавиши в гипердеревьях.

Клавиша Действие клавиши
Ctrl B Возврат на шаг назад.
Ctrl F Повторное движение на шаг вперед (после возвратов).
Ctrl G Загрузка дополнительного файла в уже открытую сеть.
Ctrl J Прыжок в ранее отмеченную (с помощью Ctrl M) точку.
Ctrl K Установить дерево классов.
Ctrl M Отметить текущую точку навигации.
Ctrl R Установить дерево отношений.
Ctrl S Сохранить текущую сеть в исходный файл. В первый раз спрашивается подтверждение имени файла.
Ctrl W Открыть дополнительное окно просмотра.
F2 Сохранить текущую сеть в файл. Всегда спрашивается имя файла.

Горячие клавиши в текстовом редакторе.

Клавиша
Действие клавиши в текстовом редакторе.
Ctrl A Выделяет весь текст.  (Для копирования в буфер или переноса мышью в таблицу)
Ctrl C Копирует редактируемый текст в буфер
Ctrl S  Сохранить текущий текст в исходный файл. В первый раз спрашивается подтверждение имени файла.
Ctrl V Вставить текст из буфера
Ctrl X Вырезать текст в буфер
Ctrl Z Отменить последние изменения.
F2  Сохранить текущий текст в новый файл. Всегда спрашивается имя файла.
Ctrl Insert Копирует выделенный текст в буфер
Shift Insert Вставляет текст из буфера

Заключение

Для начала практической работы в Абриалем материала видимо достаточно. Продолжать более глубокое изучение системы следует по Руководству.


Версия программы: 1.6.

Последнее обновление: 23 января 2002г.

Автор: Пацкин Александр Иосифович.

Организация: Российский НИИ Искусственного Интеллекта.

 


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

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