RUSMARC  
RUSMARC

Публикации

Схема UNIMARC XML Slim:
Жизнь в новом окружении

Владимир Скворцов,
Член Постоянного комитета ИФЛА по UNIMARC, Руководитель Национальной службы развития системы форматов RUSMARC, Российская национальная библиотека

Ольга Жлобинская,
Старший научный сотрудник, Российская национальная библиотека

Алла Пашкова,
Ведущий программист, Российская национальная библиотека

Резюме

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

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

Итак, настоящее сообщение посвящено «тонкой» схеме UNIMARC XML. Схема, о которой пойдет речь, является разработкой Центра компьютерных технологий Уральского государственного университета (Екатеринбург), выполненной под эгидой Российской национальной службы развития системы форматов RUSMARC

Строго говоря, тонкая схема потому и называется «тонкая», что сама по себе не требует долгого и детального обсуждения, что, впрочем, ничуть не умаляет ее достоинств. Здесь все происходит так же, как у людей: вы знаете, самый толстый человек совсем необязательно самый важный, и наоборот. То же справедливо и в отношении XML-схем. Однако, чтобы понять, почему важна «тонкая» XML-схема, необходимо понимать ее место в общем XML-окружении. Иначе говоря, прежде чем говорить о достоинствах схемы, нужно понимать, зачем вообще она нужна и как ее можно использовать

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

Рискнем предположить, что аудитория Всемирного библиотечного и информационного конгресса состоит не только из экспертов в области XML

Итак, прежде всего, необходимо понять – что такое XML?

XML (eXtensible Markup Language – расширяемый язык разметки) – это упрощенный диалект языка SGML, предназначенный для описания иерархических структур данных в World Wide Web. Он разрабатывается рабочей группой W3C с 1996 г.; в настоящее время принятой рекомендацией является третья редакция языка XML 1.0 (2004 г.)

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

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

Но действительно ли это необходимо?

Здесь может быть полезным напомнить основное назначение существующих MARC-форматов? Строго говоря, две основные функции любого MARC-формата – это хранение и передача данных

Хранение данных

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

Является ли XML и связанные с ним технологии базой данных в более строгом смысле этого слова, то есть системой управления базой данных? Ответ на этот вопрос: «нечто вроде». С одной стороны, XML позволяет реализовать многое из того, что можно обнаружить в обычных базах данных: хранение (XML-документы), схемы (DTD, язык XML-схем), языки запросов (XQuery, XPath, XQL, XML-QL, QUILT и т.д.), программные интерфейсы (SAX, DOM, JDOM) и т.д. С другой стороны, к недостаткам XML можно отнести отсутствие многих возможностей, имеющихся в настоящих базах данных: экономичность хранения, индексы, безопасность, транзакции и интегрированность данных, многопользовательский доступ, триггеры, запросы по многим документам и т.д

XML-документы хранятся в так называемых «истинных XML-базах данных». Этот термин впервые был использован применительно к базе данных Tamino от Software AG.

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

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

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

Передача данных

В настоящее время контейнер для передачи данных в MARC-формате определяется стандартом ISO 2709. По сравнению с ISO 2709 XML имеет ряд очевидных преимуществ

  1. XML снимает некоторые ограничения ISO 2709. Синтаксис ISO 2709 разрабатывался в соответствии с техническими условиями своего времени, и не во всем соответствует потребностям современной технологии. Например, в ISO 2709 максимальная длина записи – 99999 символов. Вследствие этого, в MARC-запись может не поместиться часть библиографической информации, (к примеру, в записи, содержащей достаточно объемный реферат, развернутые примечания). XML же не накладывает никаких ограничений на длину записи. Кроме того, ISO 2709 не предусматривает передачу двоичных (не текстовых) данных, таких как графическое изображение обложки или другие сопутствующие материалы – графические, аудио- или видеоматериалы. XML позволяет это сделать.
  2. XML-документ является человекочитаемым.

По крайней мере в том смысле, что XML-документ может быть проанализирован человеком de visu без проблем, которые возникли бы у него при попытке проанализировать запись ISO 2709

  1. Одним из важных достоинств XML-документов является то, что при относительно простом способе создания и обработки (обычный текст может редактироваться любым текстовым процессором и обрабатываться стандартными XML парсерами), они позволяют создавать структурированную информацию, которую хорошо «понимают» компьютеры.
  2. XML имеет строгий синтаксис, что позволяет формализовать контроль на этапе создания документа.
  3. XML поддерживает иерархические отношения, что позволяет отражать иерархическую структуру библиографических записей.
  4. XML-документ может содержать информацию о форме представления данных при выводе на экран или печать (например, форму библиографической карточки, если необходимо); такая информация передается с помощью языка описания стилей (XSL).
  5. Важным достоинством XML является его природная интеграция с web-интерфейсом, и как следствие  – поддержка производителей соответствующих программных продуктов, таких как web-броузеров.

Все это де-факто делает XML стандартом для обмена данными через web-интерфейс

Нам кажется, это достаточно объясняет энтузиазм библиографического сообщества относительно XML, о котором мы говорили выше

Итак, мы хотим XML; но что это означает на практике?

Что необходимо, чтобы мы действительно могли сказать: «у нас есть XML»?

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

Необходимо иметь  по крайней мере два XML-документа:

  1. «Тонкая» XML схема

«Тонкая» (или транспортная) схема определяет MARC форматы на самом общем уровне и в этом смысле играет ту же роль, что и ISO 2709. В силу этого «тонкая» схема является основой для создания нормативной схемы, о которой пойдет речь ниже

«Тонкая» схема должна быть представлена на Web, и этот адрес должен быть известен всем заинтересованным организациям и лицам

Нормативная схема обязательно должна содержать ссылку на «тонкую» схему, на основе которой она создана

«Тонкая» схема должна быть достаточно простой и обеспечивать преобразование данных без потерь в ISO 2709 и обратно в XML. Основное свойство «тонкой» схемы – устойчивость схемы по отношению к любым изменениям MARC-формата. «Тонкая» схема позволяет проверить структурную правильность данных (но не семантическую их корректность)

  1. Нормативная XML-схема.

Нормативная схема фактически представляет собой MARC-формат, переведенный в XML

«Тонкая» и нормативная схемы – два основных элемента нашего набора

  1. Кроме того, целесообразно дополнить этот набор следующим программным обеспечением:

- утилиты для преобразования ISO 2709 – XML и XML – ISO 2709
- средства проверки XML-документа на соответствие его «тонкой» схеме
- средства проверки XML-документа на соответствие его нормативной схеме
- таблицы стилей для вывода записей в понятном для пользователя виде (тег – содержание)
- средства проверки корректности библиографической записи средствами XSLT-преобразований

Теперь, когда мы представляем, что именно нам нужно, вернемся к нашей «тонкой» схеме

В настоящее время наиболее широко используемой и известной является «тонкая» схема MARC21XML/Slim, разработанная Библиотекой Конгресса. Однако при использовании этой схемы применительно к UNIMARC возникает ряд проблем, в отличие от ISO 2709, который подобных проблем уже не вызывает

В частности, схема MARC21XML/Slim не предусматривает отражения встроенных полей, которые широко используются в UNIMARC и ряде национальных форматов семейства UNIMARC; кроме того, диапазон значений индикаторов в UNIMARC несколько шире, чем предусмотрено в MARC21XML/Slim. Поэтому совершенно необходимо обеспечить механизм для представления встроенных полей в XML – как для обеспечения конвертирования без потерь данных, так и для адекватного выражения синтаксиса и семантики таких записей

Итак, при разработке «тонкой» XML-схемы для UNIMARC мы видели свою задачу в том, чтобы, базируясь на схеме MARC21XML/Slim и сохранив все ее основные элементы и принципы, построить XML-схему, которая может быть использована для любого из существующих MARC-форматов. Схема (Рис. 1) разработана, как уже говорилось, Центром компьютерных технологий Уральского государственного университета (Екатеринбург) совместно с Российской национальной службой развития системы форматов RUSMARC

Основные принципы построения Схемы:

- преобразование без потерь данных MARC-записи, представленной в ISO 2709, в XML-документ

- проверка корректности структуры записи средствами XML-парсера

- учет специфических характеристик формата UNIMARC

- максимально возможная независимость от какого бы то ни было диалекта MARC-формата

- устойчивость к изменениям формата UNIMARC

Результат нашей работы представлен ниже.

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="collection">
<xs:complexType>
<xs:sequence>
<xs:element ref="record" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="record" type="recordType"/>
<xs:complexType name="recordType">
<xs:sequence>
<xs:element name="leader" type="leaderType"/>
<xs:element name="control" type="controlType" maxOccurs="unbounded"/>
<xs:choice maxOccurs="unbounded">
<xs:element name="field" type="fieldType"/>
<xs:element name="built-in" type="built-inType"/>
</xs:choice>
</xs:sequence>
<xs:attribute name="type" use="optional">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="Bibliographic"/>
<xs:enumeration value="Authority"/>
<xs:enumeration value="Holdings"/>
<xs:enumeration value="Classification"/>
<xs:enumeration value="Community"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="format" use="optional">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="UNIMARC"/>
<xs:enumeration value="RUSMARC"/>
<xs:enumeration value="MARC21"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
<xs:simpleType name="notEmptyString">
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="leaderType">
<xs:restriction base="xs:string">
<xs:pattern value="\d{5}[ 0-9A-Za-z]{5}22\d{5}[ 0-9A-Za-z]{3}450[ 0-9A-Za-z]"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="controlTag">
<xs:restriction base="xs:string">
<xs:pattern value="00[1-9a-zA-Z]"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="controlType">
<xs:simpleContent>
<xs:extension base="notEmptyString">
<xs:attribute name="tag" type="controlTag" use="required"/>
<xs:attribute name="id" type="xs:ID" use="optional"/>
<xs:attribute name="idref" type="xs:IDREF" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:simpleType name="fieldTag">
<xs:restriction base="xs:string">
<xs:pattern value="(0[1-9][0-9])|([1-9][0-9]{2})"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="fieldType">
<xs:sequence>
<xs:element name="subfield" type="subfieldType" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="tag" type="fieldTag" use="required"/>
<xs:attribute name="i1" type="indicatorType" use="required"/>
<xs:attribute name="i2" type="indicatorType" use="required"/>
<xs:attribute name="id" type="xs:ID" use="optional"/>
<xs:attribute name="idref" type="xs:IDREF" use="optional"/>
</xs:complexType>
<xs:simpleType name="indicatorType">
<xs:restriction base="xs:string">
<xs:whiteSpace value="preserve"/>
<xs:pattern value="[\da-z \|]"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="built-inType">
<xs:choice maxOccurs="unbounded">
<xs:element name="control" type="controlType"/>
<xs:element name="field" type="fieldType"/>
</xs:choice>
<xs:attribute name="tag" type="fieldTag" use="required"/>
<xs:attribute name="i1" type="indicatorType" use="required"/>
<xs:attribute name="i2" type="indicatorType" use="required"/>
<xs:attribute name="id" type="xs:ID" use="optional"/>
<xs:attribute name="idref" type="xs:IDREF" use="optional"/>
</xs:complexType>
<xs:simpleType name="subfieldIdentifier">
<xs:restriction base="xs:string">
<xs:pattern value="[\da-zA-Z]"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="subfieldType" mixed="true">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:any processContents="lax"/>
</xs:sequence>
<xs:attribute name="code" type="subfieldIdentifier" use="required"/>
<xs:attribute name="id" type="xs:ID" use="optional"/>
<xs:attribute name="idref" type="xs:IDREF" use="optional"/>
</xs:complexType>
</xs:schema>

Рис. 1. Тонкая схема UNIMARC XML Slim

На Рис. 2 приведен пример библиографической записи в UNIMARC, представленной с помощью схемы UNIMARC XML Slim

Запись UNIMARC в XML

Рис. 2. Запись UNIMARC в XML

Представленная «тонкая» XML-схема, в отличие от схемы MARC21XML/Slim, действительно применима к любому MARC-формату, так как, будучи основанной на MARC21XML/Slim, в ней предусмотрены встроенные поля и расширен диапазон значений индикаторов в соответствии с положениями UNIMARC

Схема UNIMARC XML Slim представлена по адресу: http://www.rba.ru/soft/rusmarc_slim.xsd

Дата обновления: 12-11-2015