Разбор образца выгрузки в АБИС

Документ Версия: 0.1 draft

Подполе за подполем: что стоит в файле заказчика, что должно стоять по кадрам карт, какое правило из этого следует и где источники расходятся.

⟨/⟩ Исходник

1. Зачем этот разбор

Заказчик передал три вещи разом: кадры трёх карт на книги, один файл для АБИС, сделанный по этим же трём картам, и макет бланка с пометками полей. Ценность — в связи: по ней проверяется, какое правило превращает карту в текст.

Макет спецификацией не является. Он описывает бланк и в нескольких местах расходится с тем, что в файле; где расходится — верен файл, потому что его принимает АБИС.

Разбор — материал для спецификации конвертера, а не сама спецификация: у них разный срок жизни. Разбор останется как есть, спецификация будет меняться.

Карта на входе — InformationCardSpec, коды значений — каталог справочников. Файлы — в Export/Source/.

2. Материал

Карта Кадры Запись в файле Что за издание
531 Cards/260531/ 1-я, #920: SPEC Perrault, «Paralelle des anciens et des modernes», т. 1, Париж, 1692
532 Cards/260532/ 2-я, #920: SPEC то же издание, т. 2, 1693
048 Cards/26048/ 3-я, #920: PAZK Sweertius, «Selectae christiani orbis deliciae», Кёльн, 1608

Файл AbisFile/260531_260532_26048.TXTUTF-8 с BOM, CRLF, три записи, разделитель *****. Строка — одно поле: # + номер + : + пробел + значение; подполя — ^ + буква

Файл на три карты — АБИС принимает пачку. Имя файла — инвентарные номера через _.

Карты 531 и 532 — два тома одного издания: инвентарный номер один (26053), тома различает 910^N. Имена папок с кадрами — склейка номера и тома, а не инвентарный номер.

3. Подполе за подполем

Ряд — подполе. «Файл» — что стоит в переданном файле; «По правилу» — что получится, если применить правило к кадру карты, а не то, что на кадре написано. Значения помечены картой: 531, 532, 048; «то же» означает, что правило даёт ровно файл.

Пустая клетка «Файл» — правило даёт значение, а в файле его нет. Пустая клетка «По правилу» — правило не установлено либо оно не даёт ничего, а в файле значение есть.

Поле Подполе Значения (файл) Значения (ожидаемые по правилу) Правило Расхождения
920 531 SPEC · 532 SPEC · 048 PAZK то же заполнена графа «номер алл./тома» → SPEC, пуста → PAZK
101 531 fre · 532 fre · 048 lat то же код языка из jz.mnu по графе «Язык издания» («франц.», «латин.»)
910 ^A всюду 0 то же всегда заполняется константой 0 на бланке источника нет, способ заполнения не указан
910 ^D всюду RADZIF_ОФО то же код места хранения экземпляра на бланке источника нет, способ заполнения не указан
910 ^B 531 26053 · 532 26053 · 048 26048 то же графа «Инв. номер»
910 ^R 531 IDa/XIII · 532 IDa/XIII · 048 IDa/XI то же строка из графы «Шифр»: кириллица преобразуется к латинице, пробелы удаляются рукописную строку 531 I Да /XIII · 532 I Да /XIII · 048 I Да /XI надо преобразовывать: шифр записан с использованием кириллицы и содержит пробелы, в файле ожидается латиница без пробелов
910 ^N 531 1 · 532 2 то же графа «номер алл./тома»; графа пуста — подполе не пишется, поэтому у однотомника его нет
907 ^C всюду КОН то же всегда заполняется константой КОН на бланке источника нет, способ заполнения не указан
907 ^A 531 20101122 · 532 20101122 · 048 20101101 531, 532 — то же · 048 20101201 графа «Дата», приведённая к ГГГГММДД 048: на карте 1.XII.10, в файле ноябрь
961 ^Z 531 ДА · 532 ДА то же всегда заполняется константой ДА в первом повторении поля на бланке источника нет, способ заполнения не указан
961 ^A 531 два поля: Perrault; Coignard · 532 Perrault 531 Perrault · 532 Perrault первую подстроку или первую строку до , в графе «Автор» считаем фамилией не понятно, как получить ожидаемое значение из строки Perrault [Charles] de l'Académie Françoise. Второе повторение поля с издателем правилом не предусмотрено
961 ^B 531 два поля: C.; J. B. · 532 C. пустая строка остаётся пустым: всё, что не фамилия, пишется в 961^G способ заполнения не известен
961 ^G 531 два поля: Charles; Jean Baptist · 532 Charles 531 [Charles] de l'Académie Françoise · 532 то же остаток графы «Автор» после фамилии в файле стоит Charles: скобки сняты, хвост de l'Académie Françoise отброшен — способ заполнения не известен
961 ^4 531 570 изд. способ заполнения не известен на бланке источника нет, способ заполнения не указан
200 ^F 048 Per Franciscvm Sweertivm E Antverpiensem способ заполнения не известен в карте этого текста нет, способ заполнения не указан
200 ^V 531 T.1 · 532 T.2 то же графа «номер алл./тома» у многотомника
200 ^A 048 Selectae christiani orbis deliciae ex Vrbibus, Templis, Bibliothecis, et aliunde 048 Selectae christiani orbis deliciae ex Urbibus, … графа «Заглавие» однотомника на карте строка оборвана многоточием, в файле заглавие полное: чем оно дописано, не установлено
461 ^C 531 Paralelle des anciens et des modernes… Et une Epistre en Vers sur le Genie · 532 Paralelle des anciens et des modernes en ce qui regarde l'eloquence то же графа «Заглавие» многотомника
461 ^D 532 A Paris [Paris] 531 Paris · 532 Paris графа «Место издания» 531: подполя нет, хотя графа заполнена. У 532 в файле A Paris [Paris] — откуда предлог и повтор в скобках, не установлено
461 ^F 532 Par M. Perrault, de l'Académie Françoise способ заполнения не известен в карте этого текста нет, способ заполнения не указан
461 ^G 532 Chez la Veuve de Jean Baptiste Coignard… ruё S. Jacques á la Bible d'or 531, 532 — текст графы «Издатель» графа «Издатель» 531: подполя нет, хотя графа заполнена. У 532 в файле к издателю добавлена графа «Типография» и слова Chez, Et — способ не установлен
461 ^H 532 1692 531 1692 · 532 1693 графа «Год издания» 531: подполя нет, хотя графа заполнена. У 532 в файле стоит год первого тома
461 ^Z 532 1697 способ заполнения не известен в карте этого года нет, способ заполнения не указан
461 ^P 532 seconde edition 531, 532 — то же приписка справа от графы «Заглавие» 531: подполя нет, хотя приписка на карте есть
461 ^R 532 16 см 531, 532 16 (8°) графа «Формат» 531: подполя нет, хотя графа заполнена. У 532 в файле 16 см: единица дописана, (8°) отброшено
461 ^X 532 Perrault, Charles 531, 532 Perrault, [Charles] de l'Académie Françoise графа «Автор» в форме «фамилия, имя» 531: подполя нет, хотя графа заполнена. У 532 скобки сняты и хвост отброшен — то же, что в 961^G
210 ^A 048 Köln то же графа «Место издания»; нет города — Б.м. у 532 место ушло в 461^D, у 531 его нет ни в одном поле
210 ^C 048 Gvalteri Bernardi то же графа «Издатель»; нет издательства — Б.и. у 532 издатель ушёл в 461^G, у 531 — во второе повторение 961: три способа на три записи
210 ^G 048 Agrippinae Sumptivus то же графа «Типография» у 532 типография слита с издателем в 461^G, у 531 её нет ни в одном поле
210 ^D 531 1692 · 532 1693 · 048 1608 то же графа «Год издания» — единственное, что у многотомника остаётся в 210
215 ^A 531 [40], 252, 34 · 532 [20], 399, [1] · 048 [32], 673, [23] то же графа «Количество страниц» почерк неразборчив, числа требуют сверки
215 ^1 всюду c. то же всегда заполняется константой c. на бланке источника нет, способ заполнения не указан
215 ^D 048 16 см 048 16 см (8°) графа «Формат» у однотомника в файле отброшено (8°) — способ не установлен. Макет говорит 215^F
398 ^A 531 Ex Bibliotheca Ducali Radivilliani Nesvisiensi (60×45 мм) 531, 532 Ex Bibliotheca Ducali Radivilliana Nesvisiensi (6×4 см) графа «Описание экслибриса» 532: подполя нет, хотя графа заполнена. У 531 размер пересчитан в миллиметры (и 6×4 см дало 60×45, а не 60×40), окончание Radivilliana заменено на Radivilliani
396 048 Adscriptus Bibliothecae Arcis Nesvisiensis Cathalogo не установлено: графа «Др. свидетельства принадлежности» — только клетка, текста на бланке нет отметка стоит на всех трёх картах, а поле есть лишь у 048, и с текстом неизвестного происхождения. В образце поле без подполя ^A
316 ^A 531 — 11 строк · 532 — 6 · 048 — 1 048 — то же · 531 — 5 строк · 532 — 2 каждый комментарий графы «Комментарии» — отдельное повторение поля в файле больше, чем на карте: переплёт, каптал, обрез, следы пожара — этого в графе нет, данные пришли не с бланка
316 ^G 048 1 048 — то же · 531, 532 1 отметка наличия элемента данных → 1; может стоять в строке комментария 531, 532: потеряно
316 ^D^E^F^H «Первонач. акад. штамп», «Камерный каталог», «Маргиналии», «Рукописные листы»: клетки не отмечены — подполя не пишутся
140/141 «Иллюстрации», «Отд. листы», «Конволют»: клетки не отмечены — поля не пишутся
318 ^A всюду 0 то же всегда заполняется константой 0 на бланке источника нет, способ заполнения не указан; по макету ^A — «Реконструкция», но эта клетка не отмечена ни на одной карте
318 ^D 531 1 · 532 1 531, 532 — то же · 048 1 «Реставрация» книги, задано 048: потеряно
318 ^E 531 1 531 — то же · 532 1 «Ремонт» книги, задано 532: потеряно
318 ^I ^J всюду 2 то же «Гигиенич. обработка», «Помещение в контейнер»
318 ^L всюду 1 то же переплёт, «Реставрация», задано
318 ^N всюду 2 то же переплёт, «Чистка»
318 ^O 531 2 · 532 2 то же переплёт, «Умягчение»
318 ^P 048 1 то же блок, «Реставрация», задано
318 ^R 531 1 · 532 1 то же блок, «Ремонт», задано
318 ^T всюду a то же условия хранения, «выполнено»; значение — код условия (a вертикальное) ^S («задано») не пишется, когда отмечены обе клетки
393 ^A^B^C 531 и 532 162 100 61 · 048 163 108 62 то же размеры переплёта, мм на бланке перед ними ещё число (12548, 5460) — в файл не идёт
393 ^D всюду b то же состояние переплёта, sost1.mnu
393 ^E всюду b то же состав, sostav.mnu
393 ^F 531 и 532 a · 048 b то же материалы покрытия, matpok.mnu графа «Переплет» на 1-м листе — свободный текст («Радзивиллов»), материал берётся со 2-го листа; на 048 туда вписали материал
393 ^G всюду b то же материалы основы, matosn.mnu
393 ^I 531 b · 532 b то же декор, тиснение, dekor1.mnu макет говорит ^H
393 ^K 048 b то же декор, украшения, dekor2.mnu макет говорит ^J
393 ^N всюду b то же декор, обрез, dekor3.mnu макет говорит ^M
393 ^P^X 531 b c d e g h i · 532 то же · 048 b c d e f g i h i всюду b c d e f g h i множественная отметка раскладывается по подполям подряд от ^P к ^X, значение — код из fismat1.mnu. Буква — позиция, смысла не несёт 531, 532: потеряно «Затеки» (f), раскладка начата с ^Q. 048: i дважды и лишнее b — похоже, так записали «Карбонизирован»
393 ^Y всюду 3 то же степень физ.-мех. повреждения, stpov.mnu
393 ^4 531 a · 532 a то же энтомологические, enm.mnu
393 ^8 531 1 · 532 1 то же степень энтомологических, stpov.mnu
393 ^Z ^3 микробиологические и их степень: клетки не отмечены — подполя не пишутся
394 ^A 048 b 048 — то же · 531, 532 b состояние блока, sost2.mnu 531, 532: потеряно
394 ^B 531 c 531 — то же · 532, 048 c тетради, tet.mnu («Нарушено шитьё») 532, 048: потеряно
394 ^E 531 a · 532 a то же листы, list.mnu («Выпадают»)
394 ^D ^F ^G 531 c c · 532 c c c · 048 c c способ заполнения не установлен на бланке нет отметки, которая давала бы эти подполя; число подполей у трёх карт разное
394 ^J^K^L^O всюду d f g e всюду d e f g физ.-мех. повреждения блока, fismat2.mnu, раскладка по подполям подряд буквы идут J K L OM и N пропущены
394 ^R 531 1 · 532 2 · 048 1 то же степень физ.-мех. повреждения блока, stpov.mnu
392 ^A 531 6.95 · 532 7.01 (без подполя) · 048 7.19 и 7.30 то же величина pH; каждый замер — отдельное повторение поля 532: подполе ^A опущено
399 ^f^g^h всюду Консерватор 20101207 Ефимова Ю.А. то же строка экспертизы: эксперт, дата, ФИО эксперт записан текстом, хотя exp.mnu даёт код К; ФИО текстом, хотя isp.mnu даёт код
399 ^i 531 без изменений графа «Результат» строки экспертизы; графа пуста — подполе не пишется значение есть в файле, а на бланке источника нет: способ заполнения не указан
399 ^j 531 выпадают отдельные листы - ремонт то же комментарий
399 ^C^D^E всюду 20101208 ЛЕЮ отр. то же строка мониторинга: дата, исполнитель, результат исполнитель здесь кодом isp.mnu, а в строке экспертизы — текстом
правила нет: «Карбонизирован» приписано от руки вне клеток бланка приписка стоит на всех трёх картах, дважды на каждой, и не выгружается совсем
правила нет: число перед длиной, шириной и высотой («12548», «5460») графа заполнена на всех трёх картах и не выгружается совсем; назначение её не установлено

4. Что из этого следует

Множественная отметка раскладывается по подполям подряд. Внутри поля подполе не повторяется, поэтому каждая отмеченная клетка занимает свою букву: физ.-мех. повреждения переплёта — от ^P к ^X, блока — от ^J. Буква не значит ничего, значение — код справочника. Это ровно то место, где макет описывает другое устройство (одно подполе ^P со значениями), и он неверен.

Одиночная отметка даёт признак 1, групповая — код своей группы. «Записи есть» — 316^G1; «переплёт повреждён» — 393^Db. Неотмеченное не выгружается: пустых подполей в файле нет.

Пара «задано / выполнено» сворачивается в одно подполе. Отмечено «задано» — значение 1, отмечены обе — 2; «выполнено» без «задано» в образце не встретилось. Условия хранения устроены иначе: два подполя, ^S задано и ^T выполнено, значение — код условия.

Выходные данные зависят от вида записи. У однотомника место, издатель, типография и год — в 210, формат — в 215^D. У многотомника в 210 остаётся только год, всё остальное собирается в 461, а формат уходит в 461^R.

Пять подполей заполняются константой: 910^A = 0, 318^A = 0, 907^C = КОН, 961^Z = ДА, 215^1 = c.. Источника на бланке нет ни у одного, и во всех трёх записях образца значение одно и то же, но способ заполнения нигде не указан. Правило снято с образца и подлежит подтверждению.

Строка «Автор» делится надвое. Фамилия — первая подстрока либо первая строка до запятой; всё остальное идёт в ^G целиком, ^B остаётся пустым. Разбирать остаток на личные имена, отчества и звания правило не пытается: признака, по которому одно отделяется от другого, в материале нет.

/// <summary>Разбор графы «Автор» на подполя 961 (700, 702).</summary>
public static AuthorSubfields Parse(string source)
{
    // Графа пуста — поле не пишется вовсе (карта 048).
    if (string.IsNullOrWhiteSpace(source))
        return AuthorSubfields.None;

    // ^A: первая подстрока либо первая строка до запятой.
    // «Perrault [Charles] de l'Académie Françoise» → «Perrault»
    var surname = source.Split(',')[0].Split(' ')[0];

    // ^G: остаток строки целиком. ^B: пусто.
    var rest = source[surname.Length..].Trim();

    return new AuthorSubfields(surname, initials: string.Empty, expanded: rest);
}

Образцу это правило не соответствует: в файле ^B = C., а ^G = Charles — то есть скобки сняты, хвост de l'Académie Françoise отброшен, имя сокращено до инициала. Каким способом, неизвестно, и из трёх записей не выводится. То же с издателем: как из фразы La veuve de Jean Baptiste Coignard, Imprimeur du Roy… получаются Coignard и Jean Baptist, правило не объясняет.

Даты приводятся к восьми цифрам. На бланке они написаны как угодно: 8.12.2010, 07.12.10, 22.XI.10.

Справочное значение выгружается кодом. Язык — fre, исполнитель — ЛЕЮ, материал — a. Исключение — эксперт и его ФИО в строке экспертизы: там текст, хотя справочники есть.

5. Насколько образцу можно верить

Правило восстановилось почти везде, и это само по себе результат: большинство подполей сошлось с кадрами точно, включая всю консервацию и все справочные коды. Отсутствие поля там, где графа на бланке пуста, — тоже совпадение: у карты 048 нет автора, и поля 961 в записи нет.

Но в файле не хватает двенадцати отметок, которые на картах стоят: состояние блока у двух карт, «Затеки» у двух, «Нарушено шитьё» у двух, экслибрис, свидетельства принадлежности, отметка «Записи», формат первого тома, две отметки консервации. Плюс дата карты 048 сдвинута на месяц, а издатель записан двумя способами: у 531 — персоной во втором повторении 961, у 532 — текстом в 461^G.

Потери не складываются в правило — они разные у разных карт, и одна и та же отметка то выгружается, то нет. Значит, это не правило, а неаккуратность: файл, скорее всего, набивался руками либо получен из АБИС после ручной правки.

Обратное тоже верно: в файле есть то, чего на карте нет — одиннадцать комментариев против пяти у карты 531, результат экспертизы «без изменений», 961^Z, 907^C. Часть данных пришла не с бланка, а из записи АБИС.

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

6. Открытые вопросы

Вопрос Почему важно
OQ-EX-1 Считается ли переданный файл эталоном? Двенадцать отметок с карт в него не попали иначе не с чем сверять готовый конвертер
OQ-EX-2 Сколько подполей отведено под множественную отметку и что делать, когда отмечено больше, чем есть букв? у переплёта их девять, у блока — неизвестно
OQ-EX-3 910^A, 318^A, 907^C, 961^Z, 215^1 — всегда константы или зависят от чего-то, чего нет в образце? Чем заполняется 961^4 сейчас конвертер будет писать первые пять константой, а 961^4 — нечем
OQ-EX-4 Что значат 394^D, ^F, ^G со значением c? на бланке нет отметки, которая их порождает
OQ-EX-5 Эксперт и ФИО — код справочника или текст? В соседних строках по-разному от этого зависит, нужен ли справочник экспертов при выгрузке
OQ-EX-6 Обязательно ли подполе ^A, если оно в поле единственное? В образце 392 и 396 встречаются без него принимающая сторона может быть строже
OQ-EX-7 Куда девать написанное вне клеток? «Карбонизирован» стоит на всех трёх картах существенное свойство, а места ему нет
OQ-EX-8 Что такое число перед размерами («12548», «5460»)? графа заполнена на всех картах и никуда не выгружается
OQ-EX-9 Задан ли формат шифра — латиница, римская цифра, разделитель? по нему строится преобразование рукописной строки и проверка результата
OQ-EX-10 Что писать в ^B и ^G: остаток строки целиком или разобранные имя и инициалы? В образце — второе, но способ разбора не известен. И как из фразы графы «Издатель» получается персона, а у второго тома та же фраза уходит текстом в 461^G? от ответа зависит, нужен ли справочник личных имён
OQ-EX-11 Какого объёма пачка и по какому признаку карты в неё собираются? это устройство расписания выгрузки

Связанные артефакты

Документы