В. А. Капустин Содержание Лекция
Вид материала | Лекция |
- В. А. Капустин Содержание Формальные структуры текстовых документов 1 Курс лекций, 1163.92kb.
- Содержание разделов дисциплины, объем в лекционных часах-60 часов, 48.53kb.
- Содержание: Лекция Становление экономической цивилизации. Стр., 23.46kb.
- Учебно-методический комплекс по дисциплине «Международное публичное право» Автор-составитель, 463.79kb.
- Улучшение смазывающих свойств дизельных топлив, 106.59kb.
- «University Library» Editorial Council, 8102.22kb.
- Ахромеева Т. С., Капустин М. А., Кащенко С. А., Куракин П. В., Малинецкий Г. Г., Медведев И., 459.22kb.
- «Социальная стратификация и социальная мобильность», 46.19kb.
- Лесохозяйственный регламент, 3846.17kb.
- Наименование и краткое содержание лекций № Тема лекций. Краткое содержание. Количество, 67.09kb.
Лекция 2.Коммуникативный формат Z39.2
Настала пора от классификационных языков описания и каталогизации артефактов культуры и искусства перейти к атрибутивным. Атрибутивные языки описания и каталогизации артефактов культуры и искусства можно рассматривать как дальнейшее развитие фасетных классификаций: каждому существенному аспекту описания соответствует отдельный атрибут. Поскольку возможных аспектов описания и каталогизации артефактов культуры и искусства может быть много (в зависимости от целей описания и каталогизации), то и наборы используемых атрибутов, как правило, велики. При этом более традиционные классификаторы, такие, как, например, УДК, выступают просто как один из атрибутов.
Наиболее широкое применение среди таких языков получили MARC7 — MAchine-Readable Catalog, — и DC — Dublin Core7. История MARC как формата данных (его часто называют коммуникативным библиографическим форматом) началась в 70-е годы XX века. В настоящее время в России применяется несколько диалектов этого формата: RUSMARC, UNIMARC, MARC21. Собственно Dublin Core родился в конце прошлого века как попытка (не до конца удавшаяся) создать более простую альтернативу MARC, и MARC, несомненно, оказал значительное влияние на DC. Кроме того, MARC оказал влияние и на наборы атрибутов (описания артефактов), применяемые в рамках протокола Z39.50.
Но сам MARC развивался под сильным влиянием ещё более старых, уже истинно коммуникативных форматов данных, ориентированных на перенос данных (вовсе не обязательно связанных с артефактами культуры и искусства) на магнитной ленте. Сейчас магнитная лента как среда переноса данных ушла в историю, но последовательная передача данных (через канал связи) остаётся актуальной, поэтому подход конца 50-х – начала 60-х годов XX века всё ещё работает. Чтобы понять, как устроен MARC, нам придётся познакомиться с одним из таких коммуникативных форматов — Z39.27. Формально говоря, современные версии MARC используют не Z39.2, а ISO27097 — международного наследника Z39.2. ISO2709 определяет более бедную структуру записи, чем Z39.2, поэтому для понимания происхождения MARC мы будем изучать именно Z39.2.
Структура записи Z39.2
Данные в формате Z39.2 передаются в виде последовательности записей.
Запись Z39.2 состоит из лидера, справочника и собственно данных (Рисунок 1). Лидер имеет фиксированную длину (24 октета). Справочник имеет переменную длину и состоит из сегментов фиксированной длины — по числу полей в данных в записи. Поля данных имеют переменную длину и могут присутствовать в записи в любом количестве, в том числе и отсутствовать вовсе. Длина записи Z39.2, включая лидер, справочник и все ограничители, не должна превышать 99 999 октетов.
| ||||
Лидер1 | Справочник | ОП | Идентификатор записи | ОП |
Управляющее поле | ОП | ● ● ● | Управляющее поле | ОП |
Поле данных | ОП | ● ● ● | Поле данных | ОП | ОЗ |
Рисунок 1 — Структура записи Z39.2
Данные подразделяются на поля. Поля отделяются друг от друга ограничителями поля (ОП, см. раздел «Ограничитель поля» ниже). Ограничитель поля также используется для отделения справочника от данных. Запись завершается ограничителем записи (ОЗ, см. раздел «Ограничитель записи» ниже). Лидер, справочник и собственно данные записи Z39.2 (но необязательно ограничители) содержат только символьные данные.
Поля данных записи Z39.2 принадлежат к одной из трёх категорий:
- Идентификатор записи. Это поле (если оно есть) — обязательно первое поле данных записи.
- Управляющее поле. Управляющие поля следуют за идентификатором записи, но находятся перед собственно полями данных. Управляющие поля должны содержать информацию, необходимую для корректной обработки собственно данных.
- Поле данных содержит собственно данные и может иметь внутреннюю структуру (индикаторы и подполя, см. раздел «Поля данных» ниже).
Структура лидера
Лидер записи Z39.2 занимает ровно 24 октета (байта). Он состоит из 12 полей фиксированной длины (см. Рисунок 2); последний — 23-й — октет зарезервирован и должен содержать 0:
- Длина записи (5 октетов с 0 по 4). Эти октеты должны содержать 5 десятичных цифр (с ведущими нулями), определяющих число, равное длине записи (от начала справочника и включая ограничитель записи).
- Статус (один октет — 5-й). Должен быть печатаемым символом. Обозначает отношение записи к другим записям (например: новая запись, обновление, указание об удалении и т.п.)
- Тип записи (один октет — 6-й). Должен быть печатаемым символом. Служит для краткого обозначения структуры и назначения записи.
- Число индикаторов поля (один октет — 10-й). См. раздел «Индикаторы».
- Длина идентификатора подполя (один октет — 11-й). См. раздел «Подполя и идентификаторы подполей».
- Базовый адрес данных (5 октетов с 12-го по 16-й). 5 десятичных цифр (с ведущими нулями). Номер октета, следующего непосредственно за первым ограничителем поля в записи (с этого октета и начинаются собственно данные).
- Длина элемента сегмента справочника, хранящего длину поля данных (один октет — 20-й). Одна десятичная цифра. Для дальнейшего я обозначу значение этого поля как LL. В этом поле может быть записано значение 0, и тогда соответствующий элемент сегмента справочника отсутствует.
О структуре справочника см. следующий раздел.
- Длина элемента сегмента справочника, хранящего смещение поля данных (один октет — 21-й). Одна десятичная цифра. Для дальнейшего я обозначу значение этого поля как LO. В этом поле может быть записано значение 0, и тогда соответствующий элемент сегмента справочника отсутствует.
- Длина элемента сегмента справочника, зависящего от приложения (один октет — 22-й). Одна десятичная цифра. Для дальнейшего я обозначу значение этого поля как LA. В этом поле может быть записано значение 0, и тогда соответствующий элемент сегмента справочника отсутствует.
- Два поля, отведённые для использования приложениями (октеты 7–9 и 17–19).
| |||||||||||||||||||||||
Длина записи | Статус | Тип записи | Для приложения | Число индикаторов | Длина идентификатора | Базовый адрес данных | Для приложения | Длины разделов справочника | 0 | ||||||||||||||
| | | | | | | | | | | | | | | | | | ||||||
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
Рисунок 2 — Структура лидера записи Z39.2
Структура справочника
Справочник состоит из сегментов, описывающих отдельные поля данных. Длина каждого сегмента справочника (количество октетов в сегменте) одинакова и равна 3+LL+LO+LA (см. Рисунок 3).
| |||
Метка | Длина поля данных | Смещение поля данных | Для приложения |
← 3 → | ← LL → | ← LO → | ← LA → |
Рисунок 3 — Структура справочника записи Z39.2
Значения следующих элементов сегмента справочника: «Метка», «Длина поля данных» и «Смещение поля данных», — числовые и должны записываться десятичными цифрами. Значение элемента сегмента справочника «Для приложения» может содержать произвольные печатаемые символы.
Элементы сегмента справочника имеют следующую интерпретацию:
- Метка. Значение метки (три алфавитно-цифровых символа кода ASCII2) является обозначением некоторого поля данных. Например, в стандарте MARC7 поле с меткой 200 должно содержать информацию о заглавии (названии или ином идентификаторе) артефакта, а поле 700 — о лице (физическом, юридическом или ином), создавшем артефакт.
Допускается использование повторяющихся меток и, соответственно, повторяющихся полей (например, авторов может быть ни одного, один или несколько). См., например, метку 070 в приложении «Приложение А».
- Длина поля данных. Десятичное число, равное длине соответствующего поля данных (идентификатора записи, управляющего поля или собственно поля данных), включая ограничитель поля и индикаторы (если они есть, т.е. если 10-й октет лидера не равен 0).
Если необходимо использовать поля длины большей, чем число, которое может быть записано в элементе «Длина поля данных»3 сегмента справочника, то для описания такого поля в справочнике используется группа последовательных сегментов, имеющих одну и ту же метку. При этом значение элемента «Длина поля данных» во всех этих сегментах, кроме последнего, должно быть нулём, что означает, что длина части поля, к которой относится данный сегмент справочника, равна 10LL. В элементе «Длина поля данных» последнего сегмента справочника, относящегося к такому длинному полю, при этом должно стоять число, равное остатку от деления длины поля на 10LL.
- Смещение поля данных. Десятичное число, равное количеству октетов, расположенных между ограничителем поля, завершающим справочник, и первым октетом поля данных (смещение относительно базового адреса данных, определённого в лидере).
Смещение первого поля данных (чаще всего это идентификатор записи) равно 0.
Стандарт не специфицирует описание смещений для таких длинных полей, которые требуют для своего описания не одного, а нескольких сегментов справочника.
- Для приложения. Этот элемент должен иметь одинаковую интерпретацию для всех полей. Сама интерпретация зависит от приложения.
Как уже говорилось (см. раздел «Структура лидера» выше), любое из значений LL, LO или LA может быть нулём. Стандарт Z39.2 запрещает одновременное обнуление LL и LO: либо длина поля данных, либо смещение поля данных, либо оба элемента вместе должны присутствовать в сегментах справочника.
Стандарт ISO2709, использующий структуру записи, аналогичную структуре записи Z39.2, требует одновременного присутствия в сегменте справочника и длины, и смещения поля данных. В приложении (Приложение А) приведён пример записи ISO2709.
Последовательность сегментов справочника и последовательность полей данных в записи
Если запись имеет идентификатор, то метка идентификатора должна быть равна 001, и соответствующий сегмент справочника должен быть первым.
Управляющие поля должны иметь метки, начинающиеся с двух цифр 00 (001 — 00z; идентификатор считается управляющим полем). Элементы справочника, соответствующие управляющим полям, следуют в лексикографическом порядке меток, т.е. в начале поля́ с цифровыми метками, а затем поля́ с метками, оканчивающимися на буквы латинского алфавита.
Поля данных имеют метки, не начинающиеся с двух нулей, и могут идти в записи (а соответствующие им сегменты в справочнике) в произвольном порядке, при этом порядок следования сегментов справочника может не совпадать с порядком следования полей в записи. Стандарт ISO2709, однако, требует совпадения последовательности полей данных и соответствующих им сегментов справочника.
Поля данных
Поля данных в записи должны быть расположены в следующем порядке:
- Идентификатор записи (метка 001).
- Управляющие поля (метки с 002 до 00z).
- Собственно поля данных (метки от 010) в любом порядке.
Идентификатор записи
Поле идентификатора записи содержит символьную строку, однозначно идентифицирующую запись среди всех записей, созданных одной организацией.
Управляющие поля
Управляющие поля расположены в том же порядке, что и соответствующие сегменты справочника записи, т.е. в порядке возрастания меток. Управляющие поля могут иметь внутреннюю структуру, определяемую приложением, которое использует запись. Эта структура не регулируется стандартом Z39.2.
Поля данных
Поля данных могут иметь внутреннюю структуру (см. Рисунок 4).
| ||||||||||
I1 | ● ● ● | In | D | ID1 | SF1 | ● ● ● | D | IDm | SFm | FT |
← индикаторы → | ← подполе 1 → | ● ● ● | ← подполе m → | ОП | ||||||
←──────────── подполя ──────────→ |
Рисунок 4 — Структура поля данных
Индикаторы
Первые символы каждого поля (в количестве, равном числу индикаторов, указанном в октете 10 лидера) называются индикаторами. Количество индикаторов для всех полей одинаково, и может лежать в интервале от 0 (отсутствие индикаторов) до 9. Значения индикаторов используются для указания способов обработки поля. Индикаторы широко используются в MARC (каждое поле записи MARC содержит 2 индикатора).
Подполя и идентификаторы подполей
Поле может подразделяться на подполя. Чтобы обеспечить такую возможность, октет 11 лидера (длина идентификатора) должен содержать ненулевое значение, которое я обозначу IL.
Если длина идентификатора равна 1 (IL=1), то фактически подполя невозможно идентифицировать, поскольку в этом случае в качестве разделителя подполей используется единственный символ (обозначенный как D, Рисунок 4), т.е. в этом случае первый символ значения поля, следующий за последним индикатором, должен быть использован как разделитель подполей. В таком случае подполя идентифицируются их порядком.
Если длина идентификатора больше 1 ( IL>1), то первый символ значения поля, следующий за индикаторами, должен интерпретироваться как разделитель подполей, а IL-1 символов, следующие за разделителем подполей, должны интерпретироваться как собственно идентификатор подполя. В этом случае порядок следования подполей неважен.
Ограничитель поля
Ограничитель поля (FT, ОП) — один символ. Стандарт Z39.2 в качестве ограничителя поля использует символ с кодом 0x1E.
Ограничитель записи
Ограничитель записи (ОЗ, Рисунок 1) — один символ с кодом 0x1D.
И ограничитель поля, и ограничитель записи — непечатаемые символы (не имеют глифа — графического изображения).