ApplicationNote
biblioteka/entity/application_note.jsonПроизвольная заметка, прикреплённая к любой сущности для контекста, комментариев или дополнительной информации.
Произвольная заметка, прикреплённая к любой сущности для контекста, комментариев или дополнительной информации.
Авторская идентичность, связанная с одной или несколькими персонами и используемая для атрибуции литературных произведений.
Конкретное опубликованное издание литературного произведения, определяемое издателем, годом и форматом. Обычно связывается с литературными произведениями через contains_work, с автором через authored_by и с издательством через published_by. Физические экземпляры отслеживаются как сущности book_exemplar, связанные через exemplar_of.
Физический экземпляр книжного издания, представляющий единицу в личной библиотеке. Связан с книжным изданием через exemplar_of. Изображения (обложки, страницы) прикрепляются через has_image. Место хранения отслеживается через located_in. Несколько связей exemplar_of указывают на конволют (несколько книг, переплетённых вместе).
Открытая тематическая книжная серия, издаваемая под общим брендом (напр. ЖЗЛ, Библиотека поэта). Книги связываются через part_of_series с необязательным номером серии. Книга может входить в несколько серий. Издательство связывается через published_by.
Многотомное издание, объединяющее несколько книг в нумерованную коллекцию (напр. собрание сочинений). Отдельные тома представлены как сущности book, связанные через volume_of с номером тома. Издательство связывается через published_by.
Физический предмет эфемеры в личной коллекции, такой как открытка, поздравительная карточка, закладка, газетная вырезка, письмо или фотография. Представляет коллекционные объекты уровня экземпляра. Изображения прикрепляются через has_image. Место хранения отслеживается через located_in.
Абстрактное творческое произведение, независимое от конкретного издания или перевода. Опубликованные издания отслеживаются как сущности book, связанные через contains_work. Авторство фиксируется через authored_by, связывая с персоной.
Типография, ответственная за физическое производство книг.
Издательство или импринт, ответственный за выпуск книжных изданий. Книги, книжные комплекты и книжные серии связываются с издательствами через published_by.
Примечательная цитата, приписываемая персоне или извлечённая из литературного произведения. Авторство фиксируется через attributed_to. Источник отслеживается через taken_from или contains_quote.
Перевод литературного произведения на другой язык. Связан с оригинальным произведением через поле originalWorkId. Переводчик связывается через translated_by. Может входить в книгу через contains_work.
Связывает литературное произведение (левая сторона: письмо или открытое обращение) с адресатом (правая сторона: персона, автор, организация или издатель).
Связывает цитату (левая сторона) с её предполагаемым автором или говорящим (правая сторона: персона или автор).
Связывает произведение (левая сторона: книга или литературное произведение) с автором (правая сторона: персона).
Связывает издание книги (левая сторона) с персоной, выполнившей иллюстрации (правая сторона: иллюстратор).
Связывает произведение (левая сторона: книга, литературное произведение или перевод) с персоной, предоставившей комментарии, предисловие или примечания (правая сторона: комментатор).
Связывает произведение (левая сторона: книга, литературное произведение или перевод) с цитатой, использованной в качестве эпиграфа (правая сторона: цитата).
Связывает произведение (левая сторона: книга, литературное произведение или перевод) с цитатой, упомянутой в тексте (правая сторона: цитата).
Связывает издание книги или книжный набор (левая сторона) с литературным произведением, которое оно содержит (правая сторона: литературное произведение или перевод).
Связывает литературное произведение (левая сторона: литературное произведение или перевод) с правообладателем (правая сторона: издатель, персона или автор).
Связывает произведение (левая сторона: книга или литературное произведение) с лицом, посвятившим его (правая сторона: персона или автор).
Связывает произведение (левая сторона: книга или литературное произведение) с тем, кому оно посвящено (правая сторона: персона, автор или литературное произведение).
Событие посвящения: лицо A посвятило литературное произведение лицу B. Первая подассоциация (dedicated_by) связывает произведение с посвятителем; вторая (dedicated_to) связывает то же произведение с адресатом посвящения.
dedicated_by: literary_work → persona, authordedicated_to: literary_work → persona, authorСвязывает произведение (левая сторона: книга, литературное произведение или перевод) с дизайнером или художником, ответственным за визуальное оформление (правая сторона: персона или автор).
Связывает произведение (левая сторона: книга, литературное произведение или перевод) с редактором, ответственным за его подготовку (правая сторона: персона или автор).
Связывает физический экземпляр книги (левая сторона: экземпляр) с изданием книги (правая сторона: книга).
Связывает литературное произведение (левая сторона: литературное произведение или перевод) с книгой, в которой оно впервые было опубликовано (правая сторона: книга).
Связывает предмет эфемеры (левая сторона: экземпляр эфемеры) с физическим экземпляром книги, в котором он был обнаружен при приобретении (правая сторона: экземпляр книги). Более специфично, чем общее хранение или транзакция.
Связывает персону (левая сторона: персона или автор) с организацией, которую она основала (правая сторона: издатель, типография или компания).
Событие дарения: лицо A подарило предмет лицу B. Первая подассоциация (gifted_by) связывает предмет с дарителем; вторая (gifted_to) связывает тот же предмет с получателем.
gifted_by: book_exemplar → persona, authorgifted_to: book_exemplar → persona, authorСвязывает физический экземпляр книги (левая сторона: book_exemplar) с лицом, подарившим его (правая сторона: персона или автор).
Связывает физический экземпляр книги (левая сторона: book_exemplar) с лицом, получившим его в подарок (правая сторона: персона или автор).
Связывает любую сущность (левая сторона) с прикладной заметкой, содержащей дополнительные метаданные или аннотации (правая сторона: прикладная заметка).
Связывает импринт издательства (левая сторона: издатель) с головным издательством (правая сторона: издатель). Представляет иерархию издательств.
Связывает физический экземпляр книги (левая сторона: book_exemplar) с лицом, оставившим надпись, автограф или пометку (правая сторона: персона или автор). Охватывает автографы, дарственные надписи, экслибрисы и штампы.
Связывает лицо, оставившее надпись (левая сторона: персона или автор), с фотографией этой надписи (правая сторона: изображение). Позволяет одному изображению участвовать в нескольких ассоциациях без конфликтов.
Связывает литературное произведение (левая сторона: интервью как литературное произведение) с персоной, проводившей интервью (правая сторона: интервьюер).
Связывает произведение (левая сторона: литературное произведение, кинематографическое произведение или программное обеспечение) с любой сущностью, упомянутой в нём (правая сторона: любой тип сущности, включая персон, другие произведения, организации, места, населённые пункты и т. д.).
Связывает книгу или книжный комплект (левая сторона: издание или многотомник) с тематической серией (правая сторона: книжная серия), с необязательным номером в серии.
Связывает издание книги (левая сторона: книга) с типографией, ответственной за её печать (правая сторона: типография).
Связывает издание книги или книжный набор (левая сторона: книга или книжный набор) с издателем, ответственным за публикацию (правая сторона: издатель).
Связывает опубликованное произведение (левая сторона: книга или книжный комплект) с населённым пунктом или местом, где оно было издано (правая сторона: населённый пункт или место).
Связывает издание книги (левая сторона) с более ранним изданием, перепечаткой или производным которого оно является (правая сторона). Охватывает перепечатки, последующие издания и другие производные издания.
Связывает литературное произведение (левая сторона: продолжение) с литературным произведением, которое оно продолжает (правая сторона: предшественник). Представляет порядок в серии.
Связывает цитату (левая сторона) с литературным произведением, из которого она была извлечена (правая сторона: литературное произведение или перевод).
Связывает произведение (левая сторона: литературное произведение или перевод) с географическим местом, где происходит действие (правая сторона: населённый пункт или место).
Связывает произведение (левая сторона: книга, литературное произведение или перевод) с переводчиком, выполнившим перевод (правая сторона: персона или автор).
Связывает переводное литературное произведение (левая сторона: переводное литературное произведение) с оригинальным литературным произведением, с которого был выполнен перевод (правая сторона: литературное произведение).
Связывает книгу (левая сторона: отдельный том) с многотомным изданием (правая сторона: набор книг), указывая номер тома.
Коммерческое или промышленное предприятие.
Связывает две сущности в соревновании или матче (левая и правая стороны взаимозаменяемы: персона, программное обеспечение, компания или организация). Примеры: шахматные матчи, деловая конкуренция или спортивные состязания.
Связывает компанию (левая сторона) с населённым пунктом или местом, где расположена её штаб-квартира (правая сторона: населённый пункт или место).
Связывает компанию (левая сторона) с государством или юрисдикцией, в которой она юридически зарегистрирована (правая сторона: государство).
Именованное географическое место, не являющееся населённым пунктом.
Населённый пункт, такой как город, посёлок или деревня.
Связывает сущность (левая сторона: место, населённый пункт, организация, экземпляр книги, экземпляр эфемеры или место хранения) с местоположением, в котором она находится (правая сторона: населённый пункт, штат/область или место хранения).
Физическое место хранения экземпляров книг с поддержкой иерархии (полка, шкаф, комната, квартира). Экземпляры книг связываются через located_in. Иерархия строится через located_in между местами хранения (транзитивно). Может связываться с географической иерархией через located_in к settlement.
Сущность изображения, представляющая бинарный файл изображения с описательными метаданными.
Связывает любую сущность (левая сторона) с изображением (правая сторона: изображение), с указанием роли изображения (например, обложка, портрет).
Фиксирует явный выбор пользователя, назначающий одно изображение (правая сторона: изображение) в качестве основного визуального представления любой сущности (левая сторона). Допускается не более одной связи primary_image на сущность. Это пользовательское предпочтение для отображения, а не внутреннее свойство сущности или самого изображения. Указанное изображение также должно иметь связь has_image с той же сущностью.
Документированная, оспариваемая, традиционная или вымышленная фигура с биографическими атрибутами. Обычно связывается как автор через authored_by, переводчик через translated_by или редактор через edited_by. Места рождения и смерти фиксируются через born_in_settlement/born_in_state и died_in_settlement/died_in_state.
Связывает персону (левая сторона) с населённым пунктом или городом, где она родилась (правая сторона: населённый пункт).
Связывает персону (левая сторона) с государством или страной, где она родилась (правая сторона: государство).
Связывает две персоны, являющиеся соавторами произведения (левая и правая стороны взаимозаменяемы: персона).
Связывает персону (левая сторона) с населённым пунктом или городом, где она скончалась (правая сторона: населённый пункт).
Связывает персону (левая сторона) с государством или страной, где она скончалась (правая сторона: государство).
Связывает две персоны в дружеских отношениях (левая и правая стороны взаимозаменяемы: персона).
Связывает персону (левая сторона) с организацией или государством, присвоившим ей титул, степень или награду (правая сторона: организация или государство).
Связывает интервьюера (левая сторона: персона) с респондентом, которого он интервьюировал (правая сторона: персона).
Связывает персону (левая сторона) с населённым пунктом или местом, где она проживала (правая сторона: населённый пункт или место).
Связывает родителя (левая сторона: персона) с ребёнком (правая сторона: персона).
Связывает две персоны родственными отношениями (левая и правая стороны взаимозаменяемы: персона).
Связывает персону (левая сторона) с государством или страной, в которой она проживала в течение определённого периода (правая сторона: государство).
Связывает две персоны в романтических отношениях (левая и правая стороны взаимозаменяемы: персона).
Связывает две персоны в брачных отношениях (левая и правая стороны взаимозаменяемы: персона).
Связывает персону (левая сторона) с персоной или организацией, на которую она работала (правая сторона: персона или организация).
Фильм, документальное кино или иное кинопроизведение.
Одно представление или событие — конкретная дата и время в определённом месте с определённым составом исполнителей.
Конкретная постановка сценического произведения определённым режиссёром, театральной труппой или фестивалем в рамках определённого сезона.
Абстрактная композиция для исполнительских искусств — опера, балет, пьеса или мюзикл — независимо от конкретной постановки или исполнения.
Связывает сценическое или кинематографическое произведение (левая сторона) с литературным произведением, на котором оно основано (правая сторона: литературное произведение).
Связывает сценическое произведение или постановку (левая сторона) с его хореографом (правая сторона: персона).
Связывает сценическое произведение (левая сторона) с его композитором (правая сторона: персона).
Связывает кинематографическое произведение или постановку (левая сторона) с его режиссёром (правая сторона: персона).
Связывает представление (левая сторона) с исполнителем, принявшим в нём участие (правая сторона: персона), с возможным указанием роли и типа инструмента/голоса.
Связывает представление (левая сторона) с постановкой, к которой оно относится (правая сторона: постановка).
Связывает сценическое произведение (левая сторона) с его либреттистом (правая сторона: персона).
Связывает представление (левая сторона) с площадкой, где оно состоялось (правая сторона: место или организация).
Связывает постановку (левая сторона) с организацией, которая её осуществила (правая сторона: организация).
Связывает постановку (левая сторона) со сценическим произведением, которое она воплощает (правая сторона: сценическое произведение).
Персона читателя, используемая для отслеживания истории чтения и предпочтений.
Пользовательский именованный список произвольных сущностей (напр. список «Desiderata» книг для приобретения, проект чтения «2026», подборка «Рекомендации от N», список книжных магазинов для посещения). Элементы прикрепляются через схему подтипа по типу списка (файл `
Связывает пользовательский custom-список (левая сторона: user_list с listType='custom') с произвольным элементом, который он содержит (правая сторона: сущность любого типа). Включает обобщённую модель состояния (pending, done, abandoned) для случаев, не подпадающих ни под один предопределённый listType. Поддерживает опциональный флаг приоритета и опциональную позицию (1-based), когда родительский user_list упорядочен.
Связывает desiderata-список (левая сторона: user_list с listType='desiderata') с произвольным элементом, который он содержит (правая сторона: сущность любого типа, напр. книга, литературное произведение, персона). Отражает состояние приобретения желаемого (pending, found, abandoned), дату приобретения и опциональный флаг приоритета для выделения предметов, которые пользователь хочет найти в первую очередь.
Связывает читательский проект (левая сторона: user_list с listType='reading_project') с произведением, которое он содержит (правая сторона: книга, литературное произведение или перевод). Хранит и членство в списке, и состояние чтения произведения в контексте этого списка — те же enum status и поля дат, что и в reads_v1 (to_read, reading, finished, abandoned). Когда произведение находится в читательском проекте, эта запись является объединённым источником истины и для «в списке», и для «состояния чтения»; отдельная запись reads_v1 для этого пересечения не требуется.
Связывает персону-читателя (левая сторона: персона читателя) с произведением, представляющим опыт чтения (правая сторона: книга, литературное произведение или перевод).
Связывает recommendations-список (левая сторона: user_list с listType='recommendations') с произвольным элементом, который он содержит (правая сторона: сущность любого типа). Отслеживает реакцию пользователя на рекомендацию: pending, followed_up или dismissed; опционально фиксирует дату обращения к рекомендации.
Связывает reference-список (левая сторона: user_list с listType='reference') с произвольным элементом, который он содержит (правая сторона: сущность любого типа, напр. персона, литературное произведение, населённый пункт). Справочные списки — это аналитические группировки, полученные в результате исследования (напр. «авторы, упомянутые в „Империи должно умереть“»); элементы либо включены, либо нет, поэтому в этом подтипе нет поля status. Опциональное поле position фиксирует канонический порядок в источнике (напр. порядок упоминания).
Связывает wishlist-список (левая сторона: user_list с listType='wishlist') с произвольной неприобретаемой целью, которую он содержит (правая сторона: место, населённый пункт, организация, представление и т. п.). Отслеживает, посещена ли цель (pending, visited, abandoned), опционально фиксирует дату посещения, поддерживает опциональный флаг приоритета для обязательных к посещению и опциональную позицию (1-based), когда wishlist намеренно упорядочен.
Формальная организация, учреждение или группа.
Политическое образование, такое как страна, империя или автономная территория.
Программное приложение, инструмент, видеоигра или веб-сервис.
Связывает программное обеспечение (левая сторона: программное обеспечение) с его разработчиком (правая сторона: персона, компания или организация).
Каждая запись содержит поле $schema с URL-адресом схемы. Проверить соответствие записи схеме можно с помощью любого инструмента, поддерживающего JSON Schema 2020-12. Например, с помощью ajv-cli (Node.js):
npm install -g ajv-cli ajv-formats
ajv validate -s https://public-schema.com/biblioteka/entity/book.json -d record.json
Валидация по JSON-схеме проверяет структуру и типы, но не все бизнес-правила. Deno-скрипты ниже проверяют ограничения, выходящие за рамки JSON Schema — например, контрольные суммы ISBN/ISNI, согласованность массива имён и требования связного графа для мульти-ассоциаций.
Скрипты читают JSON из stdin и выводят ошибки в stderr. Режим без разрешений:
cat record.json | deno run https://public-schema.com/dist/validate.ts
Deno агрессивно кеширует удалённые скрипты. Добавьте --allow-net=public-schema.com, чтобы скрипт мог проверить хеш кешированной версии:
cat record.json | deno run --allow-net=public-schema.com https://public-schema.com/dist/validate.ts
Если кешированная копия устарела, скрипт завершится с кодом 2. Обновите командой:
deno cache --reload https://public-schema.com/dist/validate.ts