Строение системы
|
Документ воспроизводит статью "Датацентрическая архитектура системы Абриаль 2. Труды 9-й национальной конференции по искусственному интеллекту КИИ-2004. Тверь 2004." А.И. Пацкин РосНИИ Искусственного интеллекта. Россия, 125190, Москва, а / я 85, Рос НИИ ИИ, Факс (095) 155-45-30 Ключевые слова: Интернет, Представление знаний, Разработка программного обеспечения, Интерфейс пользователя, Семантические сети, NLP, вычислительная модель, модели данных. Abstract The application in environment of system Abrial 2 has data-centric organization: it represents an active database in the active interface hypertext shell. The activity is accomplished by built-in database computation constructs or by the shell functional system. In present paper the architectural aspects of realization of data-centric principles on an example of knowledge representation system Abrial 2 are discussed. 1. ВведениеВ данной работе обсуждаются архитектурные особенности системы программирования семантических сетей Абриаль 2, ("Абриаль" - имя мужского рода) разработанной автором в РОСНИИ ИИ в период с 2000-го по 2003-й годы, и рассматриваемой здесь как воплощение датацентрической идеологии, принципы которой были изложены в [4]. 2. Основные целиПри разработке Абриаля ставились две цели: 1) наглядная и эффективная работы пользователя со сложными семантическими сетями большого размера, и 2) эффективная реализация ассоциативных вычислительных моделей для сложных расчетов на сетях такого рода. Под сложными задачами здесь подразумеваются такие задачи, в которых количество комбинаций состояний в процессе вычисления превышает некоторый порог, до которого программист способен предусмотреть порядок вычислительных событий и встроить этот порядок в вычислительные структуры (программы, выражения) как это происходит в процедурном или в функциональном программировании. 3. Программирование в ограниченияхИменно такие задачи принято относить к области искусственного интеллекта, и для их решения разработаны методологии продукционного и логического программирования, а также программирование в ограничениях (constraint programming). Для последнего направления характерна декларативность в конструировании вычислительных структур, обратимость входных и результирующих параметров, отсутствие предопределенного порядка вычислений. Этим направлением РОСНИИ ИИ активно занимается с начала 80-х годов под руководством А.С. Нариньяни. Выполнен ряд разработок объединяющих программирование в ограничениях с недоопределенными моделями [2]. Основные результаты, однако, получены для числовых вычислений. Вместе с тем, применение аналогичной парадигмы для такой типичной задачи ИИ, как анализ ЕЯ-текста (Natural Language Processing, NLP), пока встречает серьезное сопротивление материала, как в плане реализации, так и на уровне теории. Также и более традиционные методологии продукционного и логического программирования не дали до сих пор достаточно эффективной и универсальной методики решения для указанного класса задач. Поэтому разработка теоретической платформы, распространяющей очевидные достоинства (декларативность и обратимость) программирования в ограничениях на NLP и обработку семантических сетей, может рассматриваться как серьезное достижение в области ИИ. Тем более актуальна универсальная программная реализация этой методологии, эффективно работающая на реальных текстах с реальными объемами словарей. 4. Главная проблема: сложность vs эффективностьВ области NLP типична дилемма: применяя "в лоб" методики "обычного" процедурного программирования, мы приходим к сверх-громоздким и негибким частным решениям, применяя же интуитивно более понятное "новое" программирование для ИИ – мы получаем экспоненциально растущие времена расчетов при первом приближении к реальным данным. 5. Метафора одеждыАнализу причин неудовлетворительной работы в задачах NLP моделей программирования, созданных специально для задач ИИ, выходит за рамки данной статьи, но если попытаться выразить эти причины совсем кратко, можно обратиться к помощи метафоры. Почти всякую одежду можно носить в вывернутом наизнанку виде. Но обычно невозможно даже надеть любой предмет одежды, вывернутый не полностью, например, рубашку с вывернутым одним рукавом. Между тем, все известные автору технологии нового программирования именно этим и грешат: они пытаются вывернуть наизнанку что-то одно, всё прочее оставляя как есть. Подробный анализ данной темы проведен А.С. Нариньяни в статье "Модель или Алгоритм" [1]. Соглашаясь в целом с её выводами, хотелось бы немного по-другому расставить акценты. Если Нариньяни делает упор на понятии "недоопределенности", то для автора ключевым понятием является тотальная обратимость, инвертируемость.
6 Тотальная инвертируемость – ключ к решению проблемыНа этом тезисе основана разработка системы Абриаль. Чтобы вычисления работали во все стороны, и чтобы структуры, управляющие вычислениями, можно было бы задавать в декларативной форме, должны стать инвертируемыми (или инвертабельными) все элементы вычислительной модели, а именно: Инвертируемые ссылки являются основой для инвертабельности всех остальных компонентов системы; Инвертируемые объекты – вместо инкапсуляции внутри объекта всех связей в виде ссылок или вложенных объектов (тезис ООП), к объекту нужен доступ со стороны любой связи как от "главной", "порождающей" связи. Инвертируемые функции – все функции должны быть обобщены до ассоциаций, в которых потенциально любой параметр может стать как исходным, так и результирующим. Инвертируемые выражения – необходим отказ от вложенности выражений, поток данных должен свободно проходить внутри выражения во всех направлениях одинаково просто. Инвертируемые примитивные операции – инвертируемые выражения можно построить, только если все самые примитивные операции также инвертируемы, т.е. любой операнд в принципе способен при определенных обстоятельствах стать результатом операции. Инвертируемые образцы в продукциях – любой элемент образца должен быть способен стать стартующим для процедуры сравнения образца. Инвертируемые отношения – кортежи и атрибуты отношений должны быть открыты для доступа не только со стороны отношения, но и со стороны объектов кортежей. Инвертируемые факты – должны быть доступны как одно целое все факты, относящиеся к одному объекту, то есть все кортежи всех отношений, в которые входит данный объект. Инвертируемый интерфейс пользователя – пользователь работает с объектами своей проблемной области, видя их не извне, а изнутри, то есть из владельца множества объектов, он превращается в "сетепроходца", погружаясь внутрь потенциально бесконечной сетевой среды, при этом каждый объект может выглядеть по-разному с разных точек зрения и со стороны разных направлений доступа. Технология разработки инвертируется по отношению к традиционной, т.к. разработка начинается с моделирования проблемной области в виде системы объектов, которые сразу становятся доступными для работы, через стандартную оболочку. В дальнейшем эти объекты обретают свою, более адаптированную оболочку для доступа Таким образом, за основу принимается принцип последовательного инвертирования программных механизмов на всех уровнях: от микро-уровня, на котором инвертируются все ссылки, до макро-уровня, т.е. до организации интерфейса пользователя и технологии разработки, инвертирование которых как раз и реализует идею датацентрической системы, заявленную в работе [4]. 7. Краткая история разработкиСпособ реализации глобальной инвертируемости всех связей (ссылок) внутри системы представления знаний был выработан автором до 1999-го года, (времени прихода в РОСНИИ ИИ) и в начале эта "изотропная модель данных" сопрягалась с объектно-ориентированной вычислительной парадигмой. Но по настоянию А.С. Нариньяни вычислительная составляющая была переведена в русло разработок института, то есть в русло вычислительной парадигмы управления данными. Опыт показал, что многосторонняя парадигма организации данных удачно сочетается с "многосторонними" моделями организации вычислений. Таким образом, два самостоятельных направления исследований соединились, и результатом этого слияния стал Абриаль 1, разработанный в 2000-м – 2001-м годах [3]. В первой версии система состояла из ядра, реализующего модели данных и вычислений, и из интерфейса пользователя в виде гипертаблиц, т.е. специфической формы электронных таблиц для просмотра и редактирования сети объектов. Этот интерфейс был достаточно удобен для продвинутого пользователя, понимавшего и чувствующего внутреннее устройство сети объектов и саму идею навигации. Но для неподготовленного пользователя уровень интерфейса гипертаблиц был недостаточен; к тому же, вычислительная модель ядра, нацеленная более на специфические задачи ИИ, не обладала достаточной универсальностью, для удобного решения простых задач организации интерфейса пользователя. 8. Инвертируемый гипертекстовый (датацентрический) интерфейс Абриаля 2Для организации связи между наивным пользователем и данными, то есть, для доступа к объектам сложной сети, необходимо было построить технологию наглядного автоматического отображения объектов ядра системы во внешнее представление, доступное массовому пользователю без предварительной подготовки. В настоящее время таким внешним представлением является, по-видимому, только веб-интерфейс, показывающий систему данных в виде некоторого виртуального сайта, где пользователь может работать с данными, выбирая ссылки и заполняя формы. Итак, задача сводилась к построению стандартной технологии отображения объектной сети на веб-интерфейс, т.е. на HTML. Эта задача была решена автором в период за 2002-й 2003-й годы. В Абриаль был встроен браузер (вариант MSIE) которому на отображение представлялись HTML страницы, сгенерированные из объектной сети с помощью специальных макросов, т.е. текстовых шаблонов, написанных на смеси HTML и специально для этой технологии разработанного объектно-ориентированного языка "Абрис". Действия пользователя в среде этого встроенного браузера, перехватывались Абриалем и интерпретировались как действия с объектной сетью, т.е. либо изменяли данные внутри сети, либо генерировали гипертекстовые изображения других объектов, обеспечивая навигацию. Так строится двухсторонняя связь между неподготовленным пользователем и сложной объектной сетью Абриаля. Вообще говоря, строить такого рода связь можно по-разному. Например, как это характерно для ОС Windows, каждое отдельное окно может не играть самостоятельной роли, а лишь всё множество окон в целом выступает в роли интерфейса приложения. Однако, для гипертекстового интерфейса Абриаля была избрана иная, датацентрическая парадигма: страницы гипертекста и ссылки на страницах должны логически ассоциироваться с некоторыми объектами базы данных, причем не с какими-то служебными объектами, а с объектами проблемной области, известными пользователю априори. Этот принцип снимал необходимость какой-либо значимой подготовки и позволял делать сеть объектов практически неограниченной по сложности. Все состояния и вся функциональность концентрируются внутри некоторых конкретных объектов, но вся система в целом не имеет ни состояний, ни функциональности. В результате пользователю предлагается уже не цельное "приложение", а прозрачное окно в бесконечную среду разнообразных объектов, доступных вполне стандартным и общеизвестным образом. 9. Датацентрическая технология разработкиИз такого кардинального изменения принципа построения интерфейса пользователя непосредственно вытекает изменение традиционной технологии разработки. Разработка начинается с определения логической структуры классов объектов и отношений между ними, и сразу же эта структура приобретает некоторую стандартную систему доступа для навигации/просмотра или ввода/модификации. В дальнейшем эта система может постепенно дорабатываться и адаптироваться, но просматривать и изменять объекты данных (может быть не самым оптимальным образом) становится возможным с самого начала разработки. 10. Варианты исполнения системы Абриаль 2.Основной (клиентский) вариант – стандартная визуальная Windows-программа, обеспечивающая работу всех компонентов на (локальном) компьютере пользователя. Для гипертекстового интерфейса в этом варианте используется специальная версия браузера, встроенная в программу Абриаль. Серверный вариант – CGI программа (скрипт), работающая в среде Веб-сервера MS IIS. Реализует только основной, гипертекстовый интерфейс пользователя на основе технологии CGI. Работает через Интернет по протоколу HTTP, взаимодействуя с любым браузером на любой платформе (как с "тонким клиентом"). Для серверного варианта существует пока только прототип с рядом существенных ограничений функциональности. 11. Архитектура системы.Структура Абриаля 2 отображена на следующей схеме:
·Программные компоненты ·Ядро системы: обеспечивает реализацию: логической сетевой модели данных (объекты, связи, классы, отношения); ассоциативной вычислительной модели: виртуальные отношения; продукционной вычислительной модели: правила; · Система хранения данных. Обеспечивает несколько способов сохранения базы данных на диске. 1. Текстовый файл на языке описания данных (Abrial DDL) типа *.AB. Содержит полную базу данных или её часть. Обеспечивает удобный визуальный анализ данных, например, для сопровождения, а также служит каналом передачи данных между Абриалем и другими системами. 2.Многофайловая распределенная система, сопоставляющая одному объекту базы данных определенный файл в локальной или сетевой файловой системе. 3. Двоичный файл образа памяти, обеспечивает быстрое сохранение и загрузку баз данных. · Интерфейс гипертаблиц (аналог электронных таблиц для абриалевской сети). · Конструктор схем баз данных (быстрое создание и модификация структуры базы данных) · Подсистема гипертекстового доступа к данным. Включает макрогенератор, который, используя систему макросов на специальном объектно-ориентированном языке программирования Абрис, обеспечивает двустороннее отображение между сетью объектов и гипертекстом HTML-странички браузера. · Встроенный браузер обеспечивает основной интерфейс пользователя в клиентском варианте программы. В клиентском варианте гипертекст отображается встроенным в программу браузером. · Серверный CGI-скрипт, обеспечивающий интерфейс пользователя в серверном варианте программы. (Вебриаль). · Компоненты интерфейса пользователя 1. Гипертекстовое окно встроенного браузера (основной интерфейс пользователя). 2. Удаленный "тонкий клиент" - стандартный Интернет-браузер – в серверном варианте полностью эмулирующий работу локального пользователя (см. предыдущий пункт). 3. Гипертаблицы – средства быстрого доступа и редактирования данных для продвинутых пользователей 4. Конструктор схем, инструмент дизайнера баз данных. · Языковые компоненты: 1. Язык представления данных (DDL) служит для сохранения в текстовом виде в файлах всего содержимого абриалевских баз данных, в частности: § Описателей объектов § Описаний связей между объектами в форме "фактов", аналогичных фактам языка Пролог. § Описаний структуры (схемы) базы данных, а именно: · Типов объектов или классов (классы это тоже объекты). · Отношений (типов связей). · Ассоциаций, или виртуальных отношений, т.е. типов связей не хранимых, а рассчитываемых на лету. · Правил, реагирующих на изменения базы данных, или же на посылку в базу данных "событий"; событиями считаются связи, с малым временем жизни, ограниченным бэктрекингом или транзакцией. 2. Абрис – объектно-ориентированный язык, на котором программируются макросы, составляющие оболочки для базы данных. Функции Абриса следующие: § Макрогенерация гипертекста, обеспечивающего наглядное отображение объекта или некоторого участка сети объектов. § Обеспечение обработки своих специальных ссылок таким образом, чтобы пользователь, выбирая ссылки, мог переходить от объекта к объекту, осуществляя навигацию по сети как по веб-сайту. § Обеспечение обработки данных из заполненных пользователем HTML-форм, таким образом, чтобы пользователь мог строить или изменять сеть. § Служить медиумом для связи абриалевской сети с другими средами, файлами, ОС, другими базами данных, в частности для импорта или экспорта больших массивов данных. · Компоненты гипертекстовой оболочки. Оболочку, генерирующую внешнее представление данных сети составляют макросы на языке Абрис, собранные в библиотеки, частично хранимые на диске, частично – внутри самих баз данных. Логически гипертекстовая оболочка делится на следующие разделы: o Общая оболочка – обеспечивает вход пользователя в систему и регулярное хранилище/реестр всех используемых баз данных; через эту оболочку пользователь может создать новую базу данных или присоединить к системе готовую, например изготовленную в другой среде и импортированную. Оболочка позволяет группировать базы данных в любом удобном пользователю порядке. o Стандартная оболочка – для доступа к каждой вновь образованной базе данных первоначально используется универсальная оболочка, позволяющая осуществлять наиболее типичные механизмы навигации и редактирования. o Специальные оболочки для баз данных. Постепенно, по мере развития базы данных к её оболочке достраиваются собственные специфические макросы, перекрывающие действие общих, унаследованных от стандартной оболочки. o Библиотеки макросов. Как в общей, стандартной, так и в частных оболочках баз данных, многие управляющие конструкции повторяются и их удобно создавать заранее и группировать в библиотеки, подключаемые при исполнении к новым макросам, (как библиотеки подпрограмм, или классы в ООП). o Схемы оформления (дизайна) – элементы оформления интерфейса пользователя (цвета, шрифты, размеры, иконки…) целесообразно доверять профессиональным художникам и не встраивать в макросы, а собирать в специальные таблицы стилей (CSS), с тем, чтобы оформление страницы или её части легко было изменить заменой одного параметра, задающего имя стиля. Разные стили могут визуально характеризовать те или иные базы данных, классы объектов, режимы работы, или же могут быть отданы на откуп пользователю для его комфортной работы. · Базы данных – базы данных представляют собой файлы разных форматов (см. выше "Система хранения…"), загружаемые в память и сохраняемые на внешний носитель целиком. Файлы в текстовом формате, на языке DDL загружаются несколько дольше, чем двоичные файлы образа памяти, за счет времени требуемого на упорядочивание связей в памяти. Однако файлы образа памяти могут работать только с целыми базами данных, что ограничивает их размеры памятью компьютера. С другой стороны, текстовые файлы позволяют хранить информацию по принципу файл-объект, что дает возможность строить распределенные базы данных практически неограниченных размеров, т.к. в этом случае оперативная память используется только для кеширования активной части сети, а сами файлы-объекты могут быть распределены по всему интернету. Список литературы5. http://www.artint.ru/packin/abrial/ http://packin.narod.ru/pro/ |
|