Список схем

⚠️ Эта онтология находится в разработке. Схемы и описания могут изменяться без предварительного уведомления.

Biblioteka

Сущности

biblioteka/entity/application_note.json

Произвольная заметка, прикреплённая к любой сущности для контекста, комментариев или дополнительной информации.

biblioteka/entity/author.json

Авторская идентичность, связанная с одной или несколькими персонами и используемая для атрибуции литературных произведений.

biblioteka/entity/book.json

Конкретное опубликованное издание литературного произведения, определяемое издателем, годом и форматом. Обычно связывается с литературными произведениями через contains_work, с автором через authored_by и с издательством через published_by. Физические экземпляры отслеживаются как сущности book_exemplar, связанные через exemplar_of.

biblioteka/entity/book_exemplar.json

Физический экземпляр книжного издания, представляющий единицу в личной библиотеке. Связан с книжным изданием через exemplar_of. Изображения (обложки, страницы) прикрепляются через has_image. Место хранения отслеживается через located_in. Несколько связей exemplar_of указывают на конволют (несколько книг, переплетённых вместе).

biblioteka/entity/book_series.json

Открытая тематическая книжная серия, издаваемая под общим брендом (напр. ЖЗЛ, Библиотека поэта). Книги связываются через part_of_series с необязательным номером серии. Книга может входить в несколько серий. Издательство связывается через published_by.

biblioteka/entity/book_set.json

Многотомное издание, объединяющее несколько книг в нумерованную коллекцию (напр. собрание сочинений). Отдельные тома представлены как сущности book, связанные через volume_of с номером тома. Издательство связывается через published_by.

biblioteka/entity/ephemera_exemplar.json

Физический предмет эфемеры в личной коллекции, такой как открытка, поздравительная карточка, закладка, газетная вырезка, письмо или фотография. Представляет коллекционные объекты уровня экземпляра. Изображения прикрепляются через has_image. Место хранения отслеживается через located_in.

biblioteka/entity/literary_work.json

Абстрактное творческое произведение, независимое от конкретного издания или перевода. Опубликованные издания отслеживаются как сущности book, связанные через contains_work. Авторство фиксируется через authored_by, связывая с персоной.

biblioteka/entity/printer.json

Типография, ответственная за физическое производство книг.

biblioteka/entity/publisher.json

Издательство или импринт, ответственный за выпуск книжных изданий. Книги, книжные комплекты и книжные серии связываются с издательствами через published_by.

biblioteka/entity/quote.json

Примечательная цитата, приписываемая персоне или извлечённая из литературного произведения. Авторство фиксируется через attributed_to. Источник отслеживается через taken_from или contains_quote.

biblioteka/entity/translated_literary_work.json

Перевод литературного произведения на другой язык. Связан с оригинальным произведением через поле originalWorkId. Переводчик связывается через translated_by. Может входить в книгу через contains_work.

Ассоциации

biblioteka/association/addressed_to.json

Связывает литературное произведение (левая сторона: письмо или открытое обращение) с адресатом (правая сторона: персона, автор, организация или издатель).

biblioteka/association/attributed_to.json

Связывает цитату (левая сторона) с её предполагаемым автором или говорящим (правая сторона: персона или автор).

biblioteka/association/authored_by.json

Связывает произведение (левая сторона: книга или литературное произведение) с автором (правая сторона: персона).

biblioteka/association/book_has_illustrator.json

Связывает издание книги (левая сторона) с персоной, выполнившей иллюстрации (правая сторона: иллюстратор).

biblioteka/association/contains_comments_by.json

Связывает произведение (левая сторона: книга, литературное произведение или перевод) с персоной, предоставившей комментарии, предисловие или примечания (правая сторона: комментатор).

biblioteka/association/contains_epigraph.json

Связывает произведение (левая сторона: книга, литературное произведение или перевод) с цитатой, использованной в качестве эпиграфа (правая сторона: цитата).

biblioteka/association/contains_quote.json

Связывает произведение (левая сторона: книга, литературное произведение или перевод) с цитатой, упомянутой в тексте (правая сторона: цитата).

biblioteka/association/contains_work.json

Связывает издание книги или книжный набор (левая сторона) с литературным произведением, которое оно содержит (правая сторона: литературное произведение или перевод).

biblioteka/association/copyright_held_by.json

Связывает литературное произведение (левая сторона: литературное произведение или перевод) с правообладателем (правая сторона: издатель, персона или автор).

biblioteka/association/dedicated_by.json

Связывает произведение (левая сторона: книга или литературное произведение) с лицом, посвятившим его (правая сторона: персона или автор).

biblioteka/association/dedicated_to.json

Связывает произведение (левая сторона: книга или литературное произведение) с тем, кому оно посвящено (правая сторона: персона, автор или литературное произведение).

мульти

biblioteka/multi_association/dedication.json

Событие посвящения: лицо A посвятило литературное произведение лицу B. Первая подассоциация (dedicated_by) связывает произведение с посвятителем; вторая (dedicated_to) связывает то же произведение с адресатом посвящения.

  • dedicated_by: literary_work → persona, author
  • dedicated_to: literary_work → persona, author

biblioteka/association/designed_by.json

Связывает произведение (левая сторона: книга, литературное произведение или перевод) с дизайнером или художником, ответственным за визуальное оформление (правая сторона: персона или автор).

biblioteka/association/edited_by.json

Связывает произведение (левая сторона: книга, литературное произведение или перевод) с редактором, ответственным за его подготовку (правая сторона: персона или автор).

biblioteka/association/exemplar_of.json

Связывает физический экземпляр книги (левая сторона: экземпляр) с изданием книги (правая сторона: книга).

biblioteka/association/first_published_in.json

Связывает литературное произведение (левая сторона: литературное произведение или перевод) с книгой, в которой оно впервые было опубликовано (правая сторона: книга).

biblioteka/association/found_with.json

Связывает предмет эфемеры (левая сторона: экземпляр эфемеры) с физическим экземпляром книги, в котором он был обнаружен при приобретении (правая сторона: экземпляр книги). Более специфично, чем общее хранение или транзакция.

biblioteka/association/founder_of.json

Связывает персону (левая сторона: персона или автор) с организацией, которую она основала (правая сторона: издатель, типография или компания).

мульти

biblioteka/multi_association/gift.json

Событие дарения: лицо A подарило предмет лицу B. Первая подассоциация (gifted_by) связывает предмет с дарителем; вторая (gifted_to) связывает тот же предмет с получателем.

  • gifted_by: book_exemplar → persona, author
  • gifted_to: book_exemplar → persona, author

biblioteka/association/gifted_by.json

Связывает физический экземпляр книги (левая сторона: book_exemplar) с лицом, подарившим его (правая сторона: персона или автор).

biblioteka/association/gifted_to.json

Связывает физический экземпляр книги (левая сторона: book_exemplar) с лицом, получившим его в подарок (правая сторона: персона или автор).

biblioteka/association/has_application_note_attached.json

Связывает любую сущность (левая сторона) с прикладной заметкой, содержащей дополнительные метаданные или аннотации (правая сторона: прикладная заметка).

biblioteka/association/imprint_of.json

Связывает импринт издательства (левая сторона: издатель) с головным издательством (правая сторона: издатель). Представляет иерархию издательств.

biblioteka/association/inscribed_by.json

Связывает физический экземпляр книги (левая сторона: book_exemplar) с лицом, оставившим надпись, автограф или пометку (правая сторона: персона или автор). Охватывает автографы, дарственные надписи, экслибрисы и штампы.

biblioteka/association/inscription_image.json

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

biblioteka/association/interviewed_by.json

Связывает литературное произведение (левая сторона: интервью как литературное произведение) с персоной, проводившей интервью (правая сторона: интервьюер).

biblioteka/association/mentions.json

Связывает произведение (левая сторона: литературное произведение, кинематографическое произведение или программное обеспечение) с любой сущностью, упомянутой в нём (правая сторона: любой тип сущности, включая персон, другие произведения, организации, места, населённые пункты и т. д.).

biblioteka/association/part_of_series.json

Связывает книгу или книжный комплект (левая сторона: издание или многотомник) с тематической серией (правая сторона: книжная серия), с необязательным номером в серии.

biblioteka/association/printed_by.json

Связывает издание книги (левая сторона: книга) с типографией, ответственной за её печать (правая сторона: типография).

biblioteka/association/published_by.json

Связывает издание книги или книжный набор (левая сторона: книга или книжный набор) с издателем, ответственным за публикацию (правая сторона: издатель).

biblioteka/association/published_in.json

Связывает опубликованное произведение (левая сторона: книга или книжный комплект) с населённым пунктом или местом, где оно было издано (правая сторона: населённый пункт или место).

biblioteka/association/reprint_of.json

Связывает издание книги (левая сторона) с более ранним изданием, перепечаткой или производным которого оно является (правая сторона). Охватывает перепечатки, последующие издания и другие производные издания.

biblioteka/association/sequel_of.json

Связывает литературное произведение (левая сторона: продолжение) с литературным произведением, которое оно продолжает (правая сторона: предшественник). Представляет порядок в серии.

biblioteka/association/taken_from.json

Связывает цитату (левая сторона) с литературным произведением, из которого она была извлечена (правая сторона: литературное произведение или перевод).

biblioteka/association/takes_place_in.json

Связывает произведение (левая сторона: литературное произведение или перевод) с географическим местом, где происходит действие (правая сторона: населённый пункт или место).

biblioteka/association/translated_by.json

Связывает произведение (левая сторона: книга, литературное произведение или перевод) с переводчиком, выполнившим перевод (правая сторона: персона или автор).

biblioteka/association/translation_of.json

Связывает переводное литературное произведение (левая сторона: переводное литературное произведение) с оригинальным литературным произведением, с которого был выполнен перевод (правая сторона: литературное произведение).

biblioteka/association/volume_of.json

Связывает книгу (левая сторона: отдельный том) с многотомным изданием (правая сторона: набор книг), указывая номер тома.

Business

Сущности

business/entity/company.json

Коммерческое или промышленное предприятие.

Ассоциации

business/association/competed_against.json

Связывает две сущности в соревновании или матче (левая и правая стороны взаимозаменяемы: персона, программное обеспечение, компания или организация). Примеры: шахматные матчи, деловая конкуренция или спортивные состязания.

business/association/headquartered_in.json

Связывает компанию (левая сторона) с населённым пунктом или местом, где расположена её штаб-квартира (правая сторона: населённый пункт или место).

business/association/incorporated_in.json

Связывает компанию (левая сторона) с государством или юрисдикцией, в которой она юридически зарегистрирована (правая сторона: государство).

Geography

Сущности

geography/entity/place.json

Именованное географическое место, не являющееся населённым пунктом.

geography/entity/settlement.json

Населённый пункт, такой как город, посёлок или деревня.

Ассоциации

geography/association/located_in.json

Связывает сущность (левая сторона: место, населённый пункт, организация, экземпляр книги, экземпляр эфемеры или место хранения) с местоположением, в котором она находится (правая сторона: населённый пункт, штат/область или место хранения).

Library

Сущности

library/entity/storage_location.json

Физическое место хранения экземпляров книг с поддержкой иерархии (полка, шкаф, комната, квартира). Экземпляры книг связываются через located_in. Иерархия строится через located_in между местами хранения (транзитивно). Может связываться с географической иерархией через located_in к settlement.

Media

Сущности

media/entity/image.json

Сущность изображения, представляющая бинарный файл изображения с описательными метаданными.

Ассоциации

media/association/has_image.json

Связывает любую сущность (левая сторона) с изображением (правая сторона: изображение), с указанием роли изображения (например, обложка, портрет).

media/association/primary_image.json

Фиксирует явный выбор пользователя, назначающий одно изображение (правая сторона: изображение) в качестве основного визуального представления любой сущности (левая сторона). Допускается не более одной связи primary_image на сущность. Это пользовательское предпочтение для отображения, а не внутреннее свойство сущности или самого изображения. Указанное изображение также должно иметь связь has_image с той же сущностью.

People

Сущности

people/entity/persona.json

Документированная, оспариваемая, традиционная или вымышленная фигура с биографическими атрибутами. Обычно связывается как автор через authored_by, переводчик через translated_by или редактор через edited_by. Места рождения и смерти фиксируются через born_in_settlement/born_in_state и died_in_settlement/died_in_state.

Ассоциации

people/association/born_in_settlement.json

Связывает персону (левая сторона) с населённым пунктом или городом, где она родилась (правая сторона: населённый пункт).

people/association/born_in_state.json

Связывает персону (левая сторона) с государством или страной, где она родилась (правая сторона: государство).

people/association/coauthor_of.json

Связывает две персоны, являющиеся соавторами произведения (левая и правая стороны взаимозаменяемы: персона).

people/association/died_in_settlement.json

Связывает персону (левая сторона) с населённым пунктом или городом, где она скончалась (правая сторона: населённый пункт).

people/association/died_in_state.json

Связывает персону (левая сторона) с государством или страной, где она скончалась (правая сторона: государство).

people/association/friend_of.json

Связывает две персоны в дружеских отношениях (левая и правая стороны взаимозаменяемы: персона).

people/association/title_granted_by.json

Связывает персону (левая сторона) с организацией или государством, присвоившим ей титул, степень или награду (правая сторона: организация или государство).

people/association/interviewer_of.json

Связывает интервьюера (левая сторона: персона) с респондентом, которого он интервьюировал (правая сторона: персона).

people/association/lived_in.json

Связывает персону (левая сторона) с населённым пунктом или местом, где она проживала (правая сторона: населённый пункт или место).

people/association/parent_of.json

Связывает родителя (левая сторона: персона) с ребёнком (правая сторона: персона).

people/association/relative_of.json

Связывает две персоны родственными отношениями (левая и правая стороны взаимозаменяемы: персона).

people/association/resided_in_state.json

Связывает персону (левая сторона) с государством или страной, в которой она проживала в течение определённого периода (правая сторона: государство).

people/association/romantic_relationship_with.json

Связывает две персоны в романтических отношениях (левая и правая стороны взаимозаменяемы: персона).

people/association/spouse_of.json

Связывает две персоны в брачных отношениях (левая и правая стороны взаимозаменяемы: персона).

people/association/worked_for.json

Связывает персону (левая сторона) с персоной или организацией, на которую она работала (правая сторона: персона или организация).

Performing_arts

Сущности

performing_arts/entity/cinematic_work.json

Фильм, документальное кино или иное кинопроизведение.

performing_arts/entity/performance.json

Одно представление или событие — конкретная дата и время в определённом месте с определённым составом исполнителей.

performing_arts/entity/production.json

Конкретная постановка сценического произведения определённым режиссёром, театральной труппой или фестивалем в рамках определённого сезона.

performing_arts/entity/stage_work.json

Абстрактная композиция для исполнительских искусств — опера, балет, пьеса или мюзикл — независимо от конкретной постановки или исполнения.

Ассоциации

performing_arts/association/based_on.json

Связывает сценическое или кинематографическое произведение (левая сторона) с литературным произведением, на котором оно основано (правая сторона: литературное произведение).

performing_arts/association/choreographed_by.json

Связывает сценическое произведение или постановку (левая сторона) с его хореографом (правая сторона: персона).

performing_arts/association/composed_by.json

Связывает сценическое произведение (левая сторона) с его композитором (правая сторона: персона).

performing_arts/association/directed_by.json

Связывает кинематографическое произведение или постановку (левая сторона) с его режиссёром (правая сторона: персона).

performing_arts/association/features_performer.json

Связывает представление (левая сторона) с исполнителем, принявшим в нём участие (правая сторона: персона), с возможным указанием роли и типа инструмента/голоса.

performing_arts/association/instance_of_production.json

Связывает представление (левая сторона) с постановкой, к которой оно относится (правая сторона: постановка).

performing_arts/association/libretto_by.json

Связывает сценическое произведение (левая сторона) с его либреттистом (правая сторона: персона).

performing_arts/association/performed_at.json

Связывает представление (левая сторона) с площадкой, где оно состоялось (правая сторона: место или организация).

performing_arts/association/produced_by.json

Связывает постановку (левая сторона) с организацией, которая её осуществила (правая сторона: организация).

performing_arts/association/staging_of.json

Связывает постановку (левая сторона) со сценическим произведением, которое она воплощает (правая сторона: сценическое произведение).

Reader

Сущности

reader/entity/reader_persona.json

Персона читателя, используемая для отслеживания истории чтения и предпочтений.

reader/entity/user_list.json

Пользовательский именованный список произвольных сущностей (напр. список «Desiderata» книг для приобретения, проект чтения «2026», подборка «Рекомендации от N», список книжных магазинов для посещения). Элементы прикрепляются через схему подтипа по типу списка (файл `_list_contains_v1.json`; значение дискриминатора `associationType` — `_list_contains`); набор допустимых типов сущностей-элементов зависит от подтипа — напр. `reading_project` ограничивает rightSide значениями book / literary_work / translated_literary_work, а `desiderata` допускает любой тип сущности. Опционально принадлежит персоне-читателю.

Ассоциации

reader/association/custom_list_contains.json

Связывает пользовательский custom-список (левая сторона: user_list с listType='custom') с произвольным элементом, который он содержит (правая сторона: сущность любого типа). Включает обобщённую модель состояния (pending, done, abandoned) для случаев, не подпадающих ни под один предопределённый listType. Поддерживает опциональный флаг приоритета и опциональную позицию (1-based), когда родительский user_list упорядочен.

reader/association/desiderata_list_contains.json

Связывает desiderata-список (левая сторона: user_list с listType='desiderata') с произвольным элементом, который он содержит (правая сторона: сущность любого типа, напр. книга, литературное произведение, персона). Отражает состояние приобретения желаемого (pending, found, abandoned), дату приобретения и опциональный флаг приоритета для выделения предметов, которые пользователь хочет найти в первую очередь.

reader/association/reading_project_list_contains.json

Связывает читательский проект (левая сторона: user_list с listType='reading_project') с произведением, которое он содержит (правая сторона: книга, литературное произведение или перевод). Хранит и членство в списке, и состояние чтения произведения в контексте этого списка — те же enum status и поля дат, что и в reads_v1 (to_read, reading, finished, abandoned). Когда произведение находится в читательском проекте, эта запись является объединённым источником истины и для «в списке», и для «состояния чтения»; отдельная запись reads_v1 для этого пересечения не требуется.

reader/association/reads.json

Связывает персону-читателя (левая сторона: персона читателя) с произведением, представляющим опыт чтения (правая сторона: книга, литературное произведение или перевод).

reader/association/recommendations_list_contains.json

Связывает recommendations-список (левая сторона: user_list с listType='recommendations') с произвольным элементом, который он содержит (правая сторона: сущность любого типа). Отслеживает реакцию пользователя на рекомендацию: pending, followed_up или dismissed; опционально фиксирует дату обращения к рекомендации.

reader/association/reference_list_contains.json

Связывает reference-список (левая сторона: user_list с listType='reference') с произвольным элементом, который он содержит (правая сторона: сущность любого типа, напр. персона, литературное произведение, населённый пункт). Справочные списки — это аналитические группировки, полученные в результате исследования (напр. «авторы, упомянутые в „Империи должно умереть“»); элементы либо включены, либо нет, поэтому в этом подтипе нет поля status. Опциональное поле position фиксирует канонический порядок в источнике (напр. порядок упоминания).

reader/association/wishlist_list_contains.json

Связывает wishlist-список (левая сторона: user_list с listType='wishlist') с произвольной неприобретаемой целью, которую он содержит (правая сторона: место, населённый пункт, организация, представление и т. п.). Отслеживает, посещена ли цель (pending, visited, abandoned), опционально фиксирует дату посещения, поддерживает опциональный флаг приоритета для обязательных к посещению и опциональную позицию (1-based), когда wishlist намеренно упорядочен.

Social

Сущности

social/entity/organization.json

Формальная организация, учреждение или группа.

social/entity/state.json

Политическое образование, такое как страна, империя или автономная территория.

Software

Сущности

software/entity/software.json

Программное приложение, инструмент, видеоигра или веб-сервис.

Ассоциации

software/association/developed_by.json

Связывает программное обеспечение (левая сторона: программное обеспечение) с его разработчиком (правая сторона: персона, компания или организация).

Валидация

Валидация по JSON-схеме

Каждая запись содержит поле $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