Разбор образца выгрузки в АБИС
Подполе за подполем: что стоит в файле заказчика, что должно стоять по кадрам карт, какое правило из этого следует и где источники расходятся.
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.TXT — UTF-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 O — M и 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 | Какого объёма пачка и по какому признаку карты в неё собираются? | это устройство расписания выгрузки |
Структурные связи
Использует
- Документ Справочники заказчика
- Доменная сущность Выгрузка
- Доменная сущность Информационная карта
Связанные артефакты
Документы
- Документ Справочники заказчика
- Доменная сущность Информационная карта