模式列表

⚠️ 本体论正在建设中。架构和描述可能会在不另行通知的情况下更改。

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 链接,可附带 seriesNumber。一本书可以属于多个丛书。出版商通过 published_by 链接。

biblioteka/entity/book_set.json

将多本书籍归入编号合集的固定卷数出版套装(如全集、多卷版)。各卷为通过 volume_of 及 volumeNumber 链接的 book 实体。出版商通过 published_by 链接。

biblioteka/entity/ephemera_exemplar.json

个人收藏中的实体短暂物品,如明信片、贺卡、书签、报纸剪报、信件或照片。代表实物级收藏对象。图像通过 has_image 附加。存储位置通过 located_in 跟踪。

biblioteka/entity/literary_work.json

独立于任何特定版本或译文的抽象创意作品。出版版本作为 book 实体通过 contains_work 进行跟踪。作者身份通过 authored_by 链接到 persona 进行记录。

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

将创作作品(左侧:book 或 literary work)与题献者(右侧:persona 或 author)关联。

biblioteka/association/dedicated_to.json

将创意作品(左侧:书籍或文学作品)与其所献给的实体(右侧:人物、作者或文学作品)相关联。

多关联

biblioteka/multi_association/dedication.json

题献事件:甲方将文学作品献给乙方。第一个子关联 (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

赠予事件:甲方将物品赠送给乙方。第一个子关联 (gifted_by) 将物品与赠送者关联;第二个 (gifted_to) 将同一物品与受赠者关联。

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

biblioteka/association/gifted_by.json

将一本实体书副本(左侧:book_exemplar)与赠送该书的人(右侧:persona 或 author)关联。

biblioteka/association/gifted_to.json

将一本实体书副本(左侧:book_exemplar)与作为礼物收到该书的人(右侧:persona 或 author)关联。

biblioteka/association/has_application_note_attached.json

将任何实体(左侧)与包含额外元数据或注释的应用说明(右侧:应用说明)相关联。

biblioteka/association/imprint_of.json

将出版商品牌(左侧:出版商)与其母出版商(右侧:出版商)相关联。表示出版商之间的层级关系。

biblioteka/association/inscribed_by.json

将一本实体书副本(左侧:book_exemplar)与在其上题词、签名或留下标记的人(右侧:persona 或 author)关联。涵盖签名、赠书题词、藏书票以及印章。

biblioteka/association/inscription_image.json

将留下题词的人(左侧:persona 或 author)与展示该题词的照片(右侧:image)关联。允许同一张图像在不冲突的情况下参与其他关联(例如以 title_page 角色出现在 has_image 中)。

biblioteka/association/interviewed_by.json

将文学作品(左侧:作为文学作品的采访)与进行采访的人物(右侧:采访者或作者)相关联。

biblioteka/association/mentions.json

将作品(左侧:文学作品、电影作品或软件)与其中提及或引用的任何实体相关联(右侧:任意实体类型,包括人物、其他作品、组织、地点、聚落等)。

biblioteka/association/part_of_series.json

将一本书或一套书(左侧:版本或多卷套书)与其所属的主题丛书(右侧:book series)关联,可选地包含丛书编号。

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

将一本书(左侧:单卷)与其所属的多卷套书(右侧:book set)关联,并标明其卷号。

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' 的 user_list)与其包含的任意条目(右侧:任意实体类型)相关联。为不适合任何预定义 listType 的情况提供通用状态机(pending、done、abandoned)。支持可选的优先级标记和可选的 1 起始位置(当父 user_list 已排序时)。

reader/association/desiderata_list_contains.json

将类型为 desiderata 的 user_list(左侧:listType='desiderata' 的 user_list)与其包含的任意条目(右侧:任意实体类型,例如书籍、文学作品、人物)相关联。记录 desideratum 的获取状态(pending、found、abandoned)、获取日期,以及可选的优先级标记,用于突出用户最想优先找到的条目。

reader/association/reading_project_list_contains.json

将阅读项目类型的 user_list(左侧:listType='reading_project' 的 user_list)与其包含的作品(右侧:book、literary_work 或 translated_literary_work)相关联。同时承载列表成员关系和该作品在该列表上下文中的阅读状态——与 reads_v1 相同的 status 枚举和日期字段(to_read、reading、finished、abandoned)。当作品在阅读项目列表中时,本记录是「在列表中」和「阅读状态」两者的合并真实来源;该交集不需要单独的 reads_v1 记录。

reader/association/reads.json

将读者人物(左侧:读者人物)与代表阅读体验的创意作品(右侧:书籍、文学作品或译文)相关联。

reader/association/recommendations_list_contains.json

将类型为 recommendations 的 user_list(左侧:listType='recommendations' 的 user_list)与其包含的任意条目(右侧:任意实体类型)相关联。跟踪用户是否对推荐采取了行动:pending、followed_up 或 dismissed;可选地记录跟进日期。

reader/association/reference_list_contains.json

将类型为 reference 的 user_list(左侧:listType='reference' 的 user_list)与其包含的任意条目(右侧:任意实体类型,例如人物、文学作品、聚落)相关联。参考列表是从研究中提取的分析性分组(例如「在 Empire Must Die 中提到的作者」);条目要么包含要么不包含,因此该子类型不带 status 字段。可选 position 字段记录在源中的规范顺序(例如提及顺序)。

reader/association/wishlist_list_contains.json

将类型为 wishlist 的 user_list(左侧:listType='wishlist' 的 user_list)与其包含的任意不可获取目标(右侧:地点、聚落、组织、表演等)相关联。跟踪目标是否已访问或体验(pending、visited、abandoned),可选记录访问日期,支持可选的优先级标记以标识必访项目,以及当 wishlist 被有意排序时的可选 1 起始位置。

Social

实体

social/entity/organization.json

正式组织、机构或团体。

social/entity/state.json

政治实体,如国家、帝国或自治领土。

Software

实体

software/entity/software.json

软件应用程序、工具、视频游戏或网络服务。

关联

software/association/developed_by.json

将软件作品(左侧:软件)与其开发者(右侧:人物、公司或组织)相关联。

验证

JSON Schema 验证

每条数据记录都包含一个指向其模式 URL 的 $schema 字段。您可以使用任何兼容 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 Schema 验证检查结构和类型,但无法强制执行所有业务规则。以下 Deno 脚本检查超出 JSON Schema 范围的约束——例如 ISBN/ISNI 校验和、名称数组一致性以及多关联的连通图要求。

脚本从 stdin 读取 JSON 并将错误写入 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