СОВРЕМЕННЫЕ ТЕХНОЛОГИИ В ИНФОРМАЦИОННОМ ОБЕСПЕЧЕНИИ НАУКИ

СИСТЕМА ВИРТУАЛЬНОЙ ИНТЕГРАЦИИ
БИБЛИОГРАФИЧЕСКИХ ДАННЫХ

А.М. Сенько, М.М. Якшин
(БЕН РАН)

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

Многие организации сталкиваются с необходимостью предоставления доступа к своим информационным ресурсам в режиме онлайн. Часто для решения этой задачи разрабатывается специальная система, ориентированная на работу с конкретным информационным массивом. Примерами такого подхода являются, в частности, многочисленные системы работы с библиографической информацией. Такие системы обычно предоставляют пользователям специализированные интерфейсы доступа к данным, позволяющие получать детальную информацию, содержащуюся в поддерживаемой базе данных. В то же время, при работе с такими системами пользователь может столкнуться с рядом проблем, затрудняющих поиск информации. Эти проблемы могут быть вызваны различными причинами, в том числе:

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

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

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

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

В настоящее время получили распространение три основных подхода к интеграции разнородных коллекций:

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

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

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

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

Существует уже множество реализаций подобных систем. Получившей наибольшее распространение основой для них можно считать протокол Z39.50, пользующийся достаточной популярностью. Z39.50 - достаточно старый стандарт, и в целом он оправданно поддерживается во множестве библиографических систем по всему миру. Но, несмотря на все свои достоинства, у него есть существенные недостатки, к которым можно отнести, в первую очередь, его чрезмерную ориентированность на MARC-форматы, которые также устарели и медленно замещаются теперь форматами, базирующимися на XML. Хотя Z39.50 имеет средства передачи XML, он никак не использует преимущества таких форматов, фактически передавая XML, точно так же, как и любую другую информацию - без разбора в бинарном виде.

Но современные технологии не стоят на месте и появляются все новые подходы для организации транспортного уровня для систем подобного класса. В качестве одного из таких решений выступает протокол XMPP/Jabber - не так давно разработанный на базе системы мгновенного обмена сообщениями (сходной с популярной ICQ), а сейчас эволюционировавший в полноценный транспортный протокол XML-роутинга.

Описываемая система является рабочим прототипом системы, показывающей основные возможности и преимущества решений на основе Jabber. Так как схема клиент-серверного взаимодействия на этой платформе разработана уже довольно давно, и существуют значительные объемы соответствующих программных средств и развитая система полезных дополнений (в частности, система JEP'ов - Jabber Enhancement Proposals - предложений о расширении Jabber), платформа обеспечена готовыми решениями, например, для обеспечения безопасности соединений посредством механизмов SSL и PGP, межсерверного обмена, распределения и балансировки нагрузки и многими другими современными атрибутами.

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

Основными задачами проекта являлись следующие:

  1. Организация серверной части проекта - транспорта для Jabber-сервера и модуля-конвертера для него, обеспечивающего работу с одной базой данных;

  2. Создание удобного интерфейса клиентской части системы для создания поисковых запросов;

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

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

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

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

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

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

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

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

Одна и та же сущность, например, "человек", всегда задается одним и тем же элементом (в данном случае - "person"). Если сущность исполняет некую роль в данном контексте, например, человек является автором, то это отражается XML-атрибутами, например - type="author". Атрибут type предоставляет формализованную возможность задания роли сущности, т.е. в DTD формата прописаны все возможные константы-значения атрибута type. В случае, если необходимо определить какую-то разновидность роли, сложно формализуемую, можно использовать атрибут role, который позволяет задавать неформализованные описания в виде обычного текста.

Пример библиографического описания в формате BibXML приведен ниже. Этот пример описания взят из приложений к ГОСТ 7.1-84:

<?xml version = '1.0'?>

<!DOCTYPE resource SYSTEM "bibxml.dtd">

<resource type="book">

<person type="author">

<name type="first">Владимир</name>

<name type="father">Ильич</name>

<name type="last">Ленин</name>

</person>

<title type="main">Задачи союзов молодежи: (Речь на III Всерос. съезде Рос. Ком. Союза Молодежи 2 окт. 1920 г.)</title>

<place type="publication">М.</place>

<organization type="publisher">

<name>Политиздат</name>

</organization>

<date type="publication">

<year>1982</year>

</date>

<pages units="pages">169</pages>

<pages units="sheets" role="ил.">1</pages>

<size type="height" units="cm">17</size>

<comment>Текст на одной стороне л.</comment>

<price units="roubles">0.35</price>

<quantity>10000</quantity>

</resource>

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

Рассмотрим общую структуру системы, представленную на рис. 1.

Рис.1

Основой системы, как и любой системы, основанной на XMPP/Jabber, является связка Jabber-сервера и Jabber-клиента. Все сущности, обменивающиеся XML-пакетами в XMPP/Jabber, имеют свой уникальный идентификатор, т.н. Jabber ID или JID, который обычно выглядит как адрес e-mail: user@host. Jabber-сервер используется любой стандартный, поддерживающий механизм подключения к нему дополнительных модулей через механизм connect/accept. В данном случае, такой подключаемый модуль, т.н. "транспорт", предоставляет пространство виртуальных JID'ов, по одному на каждую поддерживаемую базу данных. Запрос от пользователя в данном случае отправляется с JID'а пользователя вида user@host на JID базы данных вида db@transport.host, поддерживаемой транспортом. В случае необходимости посылки запроса сразу нескольким базам данных, JID'ы могут объединены в группы, которым можно посылать запрос.

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

Ядро выполняет следующие функции:

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

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

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

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

Можно выделить три типа наиболее распространенных пользовательских интерфейсов для поиска:

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

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

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

Для описываемой системы был разработан клиент, предоставляющий универсальный интерфейс для составления поисковых запросов, базирующийся на логике формата BibXML и способный представлять принимаемые ответы на запросы в виде стандартных библиографических описаний по ГОСТ 7.1-84. Пользовательский интерфейс выглядит следующим образом: в окне строится дерево всех сущностей, имеющих соответствующие элементы XML в формате, причем, так как фактически дерево бесконечно рекурсивное, строится оно динамически по запросам пользователя. Каждому узлу дерева пользователь может поставить в соответствие строку поиска, причем при поиске действуют следующие правила:

  • Строка поиска, заданная в узле, распространяется на все потомки этого узла. Таким образом мы получаем два крайних варианта: задав строку в листе дерева, мы можем искать точное совпадение заданного поля, а задав строку в корне дерева, мы задаем поиск по всем полям. При этом также существует множество промежуточных вариантов, задающих поиск по некоторой группе полей.

  • Если в дереве задается точное указание элемента соответствующим атрибутом type (например, resource[@type="article"]), то в результаты поиска попадают только записи, точно подпадающие под это указание. Если атрибут не задается, то поиск ведется по всем возможным типам, т. е. в случае resource, будут затронуты article, work, book, journal и т. п. Это позволяет вести достаточно сложные поиски, например, найти все публикации, к которым имеет отношение заданный человек в различных качествах.

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

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

После посылки запроса перед клиентом стоит вторая задача - прием ответов и интерпретация их в стандартном виде в соответствии с ГОСТ 7.1-84.

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

Описанные подходы были реализованы в виде системы, обеспечивающей поиск и передачу библиографической информации. Эта система может рассматриваться в качестве прототипа для исследования возможностей создания более сложных систем с использованием вышеназванных технологий. Как показала практика, использование в качестве транспортного уровня XMPP/Jabber значительно упрощает построение подобных систем и предоставляет достаточно много дополнительных возможностей по сравнению с другими известными подходами. В частности, разработанная концепция системы позволяет в дальнейшем легко наращивать функциональность, добавляя для пользователей возможности не только поиска, но и заказа изданий, получения их полных текстов и т.п. Для библиотекарей может быть реализована возможность удаленного редактирования и администрирования баз данных. При реализации распределенного поиска могут быть проще решены задачи объединения различных ответов от серверов и ранжирования данных за счет готового транспортного уровня, основанного на XML. В текущей реализации системы доступны Jabber-транспорт (BibXML-сервер) и отдельный специализированный Jabber-клиент. В перспективе возможно создание большего разнообразия клиентов на различных платформах (при этом существенно упрощается процесс создания клиентов для минимальных встроенных платформ - карманных ПК, мобильных телефонов и т.п.) и расширение функциональных возможностей системы.