Использование протокола Z39.50
в БЕН РАН
В.П. Варакин, С.А. Власова
(БЕН РАН)
В настоящее время протокол Z39.50, наряду с протоколом HTTP, используется для доступа к базе данных, содержащей сводный электронный каталог книг и продолжающихся изданий БЕН РАН. В его состав входят серии, труды различных организаций и обществ, материалы конференций. Каталог отражает поступления в ЦБС БЕН РАН отечественной литературы, начиная с 1993 года, и зарубежной, начиная с 1995 года.
База данных, поддерживающая каталог, имеет нестандартную структуру и нетрадиционный язык манипулирования данными, что существенно осложнило прямое использование макетного динамического провайдера, поставляемого с сервером ZooPARK (разработан ОИГГиМ СО РАН в рамках проекта Libweb), на основе которого осуществляется доступ к каталогу.
В связи с этим дополнительно были реализованы:
Предоставленный макетный провайдер данных содержит библиотеку динамических функций, которые были модифицированы в соответствии с внутренней структурой базы данных каталога.
Изменены функции поиска - dll_search и представления - dll_present: в частности, в них добавлено обращение к новым специальным функциям (proc_record, search_Z39), обеспечивающим поиск записей в электронном каталоге книг и продолжающихся изданий БЕН. В качестве алгоритма поиска был взят соответствующий алгоритм системы представления данного каталога в Интернет под протоколом HTTP.
Строка запроса sQueryBuf, передаваемая в функции исходного провайдера данных, имеет синтаксис:
sQueryBuf ::= 'a=' AttrSet rpnString
AttrSet ::= VAL_BIB1 | VAL_GILS | VAL_EXP1 |...
rpnString ::= aptString | '(o=' operator aptString aptString ')'
aptString ::= '(' ['['attrList ']'] termLen '"' term '"' ')'
term ::= string
termLen ::= integer
attrList ::= AttrSet aTyp aValue [attrList]
aTyp ::= integer
aVal ::= integer
Например, запрос на поиск записей изданий автора "Иванова", названия которых содержат термин "Геолог" с правым усечением, будет иметь вид:
a=4 (o=0 ([4 1 1003] 6 "Иванов")([4 1 4 4 5 1] 6 "Геолог"))
Функции proc_record распаковывает строку запроса, помещая данные в следующие переменные:
term1,term2,term3 - поисковые термины;
field1,field2,field3 - номера поисковых полей в БД БЕН;
comb_out12,comb_out23 - логические связки между строками запроса.
Номера поисковых полей определяются из файла TABL.INI, имеющего следующую структуру:
<номер в строке запроса - aValue > <номер поля в БД БЕН>
Функция search_Z39 принимает приведенные выше переменные, осуществляет поиск в базе данных и возвращает количество найденных записей. Найденные в результате поиска записи помещаются в файл в формате GILS, из которого производится их выдача пользователю функцией dll_present.
Созданный провайдер данных, представляющий собой динамическую библиотеку функций, был реализован в среде Windows 2000 c использованием средств Microsoft Visual C++ 6.0 и включен в систему сервера ZooPARK. Данный провайдер обеспечивает поиск в каталоге книг и продолжающихся изданий по запросам, содержащим от одного до трех поисковых терминов (допускается правое усечение), связанных логическими "И", "ИЛИ", "НЕ".
В настоящее время на стадии реализации провайдер данных для каталога НАУКА РОССИИ.
Наряду с этим осуществлена разработка нового интерфейса и модификация исполнительной части GATEWAY Z39.50 (базовый вариант разработан ОИГГиМ СО РАН).
На текущий момент GATEWAY Z39.50 БЕН РАН обеспечивает доступ к следующим базам данных.
Базы документов "Агрос" ЦНСХБ РАСХН.
В настоящее время разрабатывается новая версия GATEWAY Z39.50, обладающая дополнительными функциональными возможностями.