1. 摘要

本书从 RAG 的证据消费问题出发,定义一套异构资源建模方法。该方法让人或模型把原始资料转写为 ADOC 源表面,再从源表面投影出可查询、可校验、可渲染、可回源的资源证据图。

该方法以消费者动作为准入条件,把可独立消费的对象组织为资源节点,把可查询和可验证的平面事实组织为字段,把对象之间的可解释连接组织为关系,把复杂定位和原始载荷组织为 payload,并通过 source coordinate 让查询、校验和审查结果回到源表面。

文本、图片、音频、视频、外部文档、代码、日志、模型输出和人工标注,可以在这套方法中进入同一资源图。读者可以用本书设计自己的知识库、RAG 索引、异构资源图或企业资料图谱,并为这些模型建立查询、验证、展示和审查规则。

前言

本书面向五类读者。架构师阅读第一部和第六部,判断资源图边界、完成条件和审查标准。资源建模者阅读第二部、第三部、第四部和第七部,推导 role、rel、字段、payload schema 与 locator。开发者阅读第四部和第五部,把表达表面连接到 SPARQL、RAG、工具调用和资源渲染。QA 与 reviewer 阅读第六部和第七部,把模型承诺转成验收项和审查项。知识维护者阅读第三部和第七部,判断新增资源、字段、关系和 payload 是否取得资格。

本书的第一部先建立问题世界。读者先看到 RAG 链路需要什么证据资源,普通检索、图增强检索和传统知识图谱分别承担什么算子,以及原始资料如何被转写为 ADOC 源表面。之后各部再展开资源节点、字段、关系、payload、locator、查询、展示、校验和回源维护。

本书使用公共标准和公开知识作为参考坐标,但正文不以资料综述为目标。RDF 1.2、SPARQL、SHACL、Web Annotation、AsciiDoc 和 RAG 等坐标只在它们帮助读者完成建模动作时出现。书中的重点始终是:读者如何从自己的问题世界和消费者动作出发,把原始资料转写为可查询、可验证、可渲染、可回源的资源图模型。

Part I: 从证据消费到资源图

本部建立本书的推导起点。RAG 链路需要取得可读、可定位、可审查、可回源的证据资源;原始资料需要先被人或模型整理为可维护的结构化源表面;资源图、检索、查询、渲染和报告都从这个源表面派生。

2. RAG 的证据消费问题

RAG 链路把用户问题连接到外部材料,再把材料组织成回答。回答系统取得的材料必须能被阅读、引用、定位、展开、审查,并在错误出现时回到来源位置修正。这个材料单位在本书中称为可消费证据资源。

原始资料以多种形态出现。PDF、网页、Word 文档、图片、视频、音频、日志、代码文件、聊天记录、模型输出和人工标注拥有不同的文件格式、内部结构、定位方式和维护方式。文本可以按标题、段落和 quote 阅读;图片需要文件路径、区域坐标或 mask;视频需要时间片、轨道和帧范围;音频需要时间范围、说话人和转写线索;PDF 证据需要页码、文字 quote、位置 selector 或页面区域。它们可以进入同一条证据链,但进入之前必须先获得可查询身份、可读说明、定位数据和回源坐标。

检索先解决入口问题。关键词、BM25、向量相似度和混合检索可以从用户问题找到可能相关的材料片段。这个阶段处理的是候选发现:哪些材料可能与问题相关。候选发现本身不说明材料之间的依赖、证据、对应、组成、引用、来源责任或媒体局部位置。

RAG 知识库还需要结构问题的答案。一个回答可能需要沿事件找到图片区域,沿图片区域找到对应视频片段,沿规则找到所有证据,沿 PDF quote 找到源文件位置,沿视频片段找到声音 cue 和字幕 cue。此类动作要求资源之间存在可查询关系,并要求查询结果保留可展示和可维护的定位事实。

可消费证据资源同时承担四个职责。它向读者和回答系统提供可读内容,向查询器提供结构入口,向展示面提供渲染数据,向维护者提供回源位置。一个标题文本切片、一张图片的局部区域、一段视频时间片、一段音频 cue、一个 PDF quote、一个代码行区间,都可以在取得这些职责后成为资源。

RAG 的证据消费问题可以表述为:把异构原始资料整理成一组可命名、可查询、可渲染、可审查、可回源维护的资源,并让回答系统在回答时取得这些资源及其关系链。

3. 现有检索算子与成本

知识库工程中的算子必须对应问题形状。一个算子能减少当前状态和期望状态之间的差距,才有进入系统的理由。RAG 生态已经提供多类算子;本章只记录它们在本书问题链中的位置。

普通 RAG 使用 chunk、embedding 和检索器连接用户问题与资料片段。它把文档材料切成文本块,把文本块写入向量索引或混合索引,在查询时返回相似片段。该算子解决模型上下文有限和用户问题模糊的问题。关系路径、反向查询、跨模态局部、源位置修复和结构化验收需要其它结构继续承担。[rag]

父子块、层级块和自动合并检索处理另一个差距。较小块适合匹配,较大父块适合回答时保留上下文。此类算子说明检索命中单位和回答消费单位可以不同。图片区域、视频时间片、音频 cue、PDF selector 和关系谓词还需要公共建模表面。[dify-parent-child][haystack-hierarchical]

抽取式 GraphRAG 引入图结构增强检索。以 Microsoft GraphRAG 的默认流程为例,系统从 text units 中抽取 entities 和 relationships,并可选抽取 claims/covariates,再生成社区结构与社区报告,用这些结构支持局部搜索、全局搜索和上下文组织。该算子解决纯相似度检索缺少结构的问题。它的成本来自抽取、实体合并、别名处理、关系错误、图增长、摘要维护和更新时的重建或同步。[microsoft-graphrag]

LightRAG 等轻量图增强方案降低抽取式 GraphRAG 的部分成本。它们通过更轻的知识图谱结构、向量表示、双层检索和增量更新改善效率。该路线仍围绕从 chunks 中抽取 entities 和 relationships 组织检索;它优化的是抽取式图增强 RAG 的工程成本。[lightrag]

传统知识图谱和 OWL 本体适合事实查询、分类、规则推导和一致性检查。此类图的节点和边可以直接成为被消费的事实。RAG 场景中,回答系统经常需要读取证据材料;证据材料需要原文、上下文、媒体 locator 和回源坐标。

不同算子服务不同状态差。从海量非结构化文本中自动发现实体网络时,抽取式 GraphRAG 是合理算子。需要严格符号推理、分类和一致性检查时,领域本体是合理算子。需要把异构资料组织成可读、可查、可渲染、可回源的证据资源时,系统需要一个把整理结果落入可维护源表面的算子。

本书选择 ADOC 源表面作为该算子的承载面。人或模型阅读原始资料后,把可消费资源、字段、关系和 locator 写入结构化文档;图、索引、报告和展示面从该文档派生。

4. ADOC 作为结构化源表面

ADOC 源表面是人或模型阅读原始资料以后写出的结构化文档。转写过程同时完成材料选择、资源命名、边界划分、字段整理、关系声明和定位载荷记录。

一份原始 PDF 可以被转写为 document asset、evidence chunk、rule、claim 或 quote 节点。一张图片可以被转写为 image asset,也可以在某个局部需要独立消费时转写为 image region。一段视频可以被转写为 video asset,也可以按事件、镜头、声音或证据动作转写为 video segment。一段音频可以被转写为 audio asset、audio segment、transcript cue 或 sound event。原始材料提供素材;消费者动作决定哪些素材边界获得资源身份。

ADOC 的公共语法提供结构承载面。等号标题创建可寻址区域;标题前的 ID 和 role 提供地址标签与身份字段;描述列表保存普通可读字段;xref 声明资源之间的引用或关系;xref named attributes 保存边字段;source block 保存 JSON、YAML 或其它格式的复杂 payload;block anchor 和 local target ID 可以参与局部寻址。

这些表面既服务阅读,也服务投影。读者看到的是标题、正文、字段和交叉引用;投影器读取的是同一份源文件中的标题节点、地址标签、字段、关系、payload 和 source coordinate。文档承担图的事实来源职责。

模型参与维护时,模型写的对象仍然是 ADOC。抽取结果进入可读文档,维护者直接审查标题、正文、xref、字段和 payload;修改提交到源表面;下一次构建重新生成图、索引、报告和展示数据。

ADOC 源表面的作用可以表述为:把原始资料的整理结果放入人和机器共享的书写表面,使同一份材料同时承担阅读、版本管理、结构投影、查询和回源维护职责。

[#image-ladder-region.image-region]
== 登月舱梯子区域

captionZh:: 图中左下侧的登月舱梯子区域。
visualDescription:: 梯子从登月舱侧面向下延伸,靠近宇航员踏下的位置。

该区域 xref:event-first-step[阿姆斯特朗踏上月面, rel=evidence-for]。

[.image-locator, for=image-ladder-region]
[source,json]
----
{
  "asset": "image-as11-40-5903",
  "selector": "xywh",
  "bbox": [310, 165, 250, 170],
  "unit": "pixel"
}
----

这个源片段同时写出可读说明、关系声明和 locator。投影后,查询器可以按 image-region 查询该节点,沿 evidence-for 找到事件,前端可以读取 image-locator 高亮原图,维护者可以回到标题和 payload 源行修正说明或坐标。

5. 资源图的目标状态

资源图的目标状态是一组可消费资源及其关系。源表面保留事实维护职责;资源图把源表面中的资源身份、字段、关系、payload 和 source coordinate 转成可查询事实。

目标状态包含四类资源能力。

第一,资源可以被找到。资源拥有机械投影身份和可查询地址表面。标题文本、显式 ID、生成地址、local target alias 和外部 sourceId 都可以成为查询入口;投影图中的资源 IRI 或等价身份承担资源本体。

第二,资源可以被理解。资源拥有 headline、role、summary、caption、visualDescription、audioDescription、quote 或正文切片。回答系统和读者取得资源后,会得到可读证据。

第三,资源可以被展开。资源之间通过关系谓词连接。evidence-for 聚合证据,features 表达对象出现,mentions 表达文本或声音提及,corresponds-to 表达跨模态对齐,part-of 表达组成关系。关系改变查询路径。

第四,资源可以被操作。图片区域拥有 bbox、polygon 或 mask locator;视频片段拥有 start、end 和 tracks;音频 cue 拥有时间范围和声道;PDF quote 拥有 page、bbox 或 TextQuoteSelector。展示面据此打开原始材料并定位局部。

资源图还必须支持回源。节点查询结果指向标题行,关系查询结果指向 xref occurrence,payload 校验结果指向 source block。维护者在源表面修复节点、关系和 payload。

该目标状态使 RAG 链路发生变化。模糊检索返回候选资源入口;SPARQL 查询沿关系展开证据链;模型读取资源证据;前端渲染局部材料;报告把错误带回源表面。资源图在这条链路中承担精确索引职责。

6. 从原始资料到可消费资源图

本书的方法从原始资料开始,到源表面维护结束。每个阶段都有明确输入、动作和输出。

6.1. 1. 收集原始资料

输入是未统一的材料集合。材料可以是文本、图片、音频、视频、外部文档、代码、日志、配置、模型输出或人工标注。此阶段只确认材料存在和来源,不急于创建节点。

6.2. 2. 写消费者动作

建模从消费者动作开始。读者要读什么,模型要回答什么,查询器要查什么,前端要渲染什么,QA 要校验什么,reviewer 要审查什么,维护者要回到哪里修改。动作决定后续资源边界。

6.3. 3. 判断资源候选

候选对象可以是标题段落、规则、事件、主张、整张图片、图片局部、整段视频、视频片段、音频片段、transcript cue、PDF quote、网页局部或代码片段。候选对象只有在承担独立引用、查询、渲染、校验、回源或维护动作时成为资源节点。

6.4. 4. 转写 ADOC 源表面

人或模型把获得资格的对象写成 ADOC。标题承载资源节点;正文承载可读证据;标题 attrlist 和描述列表承载字段;xref 承载引用和关系;source block 承载 payload 和 locator。此阶段生成主事实源。

6.5. 5. 投影资源图

投影器从 ADOC 中生成 RDF 或其它图表面。图表面保留资源、字段、关系、payload 引用、xref evidence、source coordinate 和文档顺序。源表面承担维护入口,图表面承担查询入口。

6.6. 6. 建立检索入口

标题 chunk、摘要、正文切片、caption 和字段可以进入向量、关键词或混合检索。地址标签、role、field 和关系进入符号查询表面。检索入口服务候选资源发现。

6.7. 7. 执行两阶段查询

第一阶段用模糊检索找到候选资源入口。第二阶段用 SPARQL 或等价图查询读取字段、父子结构、入边、出边、证据资源、locator 和 source coordinate。第一阶段回答“可能相关”,第二阶段回答“如何相关”。

6.8. 8. 组织答案和资源块

回答系统读取查询结果中的资源证据,生成回答。回答中的 resource block 或 address label link 让前端打开资源卡、图片高亮、视频播放器、音频播放器或文本证据卡。

6.9. 9. 生成报告并回源维护

校验和审查结果进入 source-aware report。节点问题回到标题行,关系问题回到 xref occurrence,payload 问题回到 source block。维护者修改 ADOC 后重新投影,查询和展示结果随源表面更新。

这条流程把抽取、写作、投影、检索、查询、渲染和维护连接为一个闭合系统。后续章节分别展开该流程中的对象、算子和验收条件。

Part II: 资源图建模的对象

本部定义异构资源图的对象边界。读者先获得共同讨论空间:资源图由哪些表面组成,消费者动作如何决定建模准入,完成声明需要哪些可观察结果。

7. 异构资源图的对象

异构资源图是一组围绕资源节点建立的可查询结构。资源节点承载可独立消费的对象;字段承载节点或边上的可观察事实;关系连接节点;payload 保存复杂定位或原始载荷;source coordinate 把查询、校验和报告结果带回源表面。

在本书的方法中,资源图从 ADOC 源表面投影而来。ADOC 源表面保存人或模型对原始资料的转写结果;资源图把这些转写结果变成可查询事实。维护入口是源表面,图表面承担查询、校验、转换和下游消费职责。

异构资源包括文本、图片、音频、视频、外部文档、代码、日志、配置、模型输出和人工标注。它们的文件格式、内部结构和打开方式各不相同。进入同一资源图时,它们共享同一组建模表面:节点身份、字段、关系、locator、payload、查询和回源坐标。

资源图的统一点是消费契约。读者、程序、查询器、校验器、LLM tool 和 reviewer 都围绕相同的资源节点行动。文本标题可以成为 chunk;图片局部可以成为 image region;视频时间片可以成为 video segment;PDF quote 可以成为 evidence chunk。它们的定位方式不同,但进入图后的身份、关系和查询规则可以保持一致。资源图返回可消费证据资源及其关系链。

资源图可以生成多种输出表面。下游工具可以生成 SPARQL 查询结果、source-aware report、前端资源卡、图片区域高亮、视频片段播放器、QA 校验报告和 reviewer 审查清单。输出表面的差异来自消费者动作;源模型仍然围绕同一组节点、字段、关系和 payload 维护。

本书讨论的对象是这套建模方法。具体工具、前端、素材夹具和领域数据只作为表达方法的承载面。读者带走的是推导资源图模型的判断规则,并把这些规则用于自己的业务材料、知识库和下游工具链。

8. 消费者动作

消费者动作是建模准入的根条件。一个对象进入资源图之前,必须说明它服务哪个阅读、查询、验证、回源、维护、渲染、审计或下游工具动作。没有动作的结构只增加维护面。

消费者动作来自资源图的使用链路。回答系统需要读取证据,查询器需要找到资源,前端需要渲染局部,reviewer 需要审查关系,维护者需要回到源表面修改。资源节点、字段、关系和 payload 都从这些动作反推。

动作 需要的建模表面 可观察结果

引用

稳定身份、可寻址 label、关系端点

正文、查询结果或工具回答能指向该资源

查询

role、字段、关系、locator、索引

SPARQL 或其它查询能返回该资源

校验

字段约束、关系端点约束、payload schema

shape、schema 或报告能指出缺失和错误

回源

relative path、heading line、payload line、xref occurrence

报告能带维护者回到源表面

渲染

媒体路径、locator、caption、资源类型

前端能展示图片、区域、视频片段或文本证据

审计

来源字段、边证据、raw、时间、责任字段

reviewer 能检查事实从何处进入模型

消费者动作决定建模精度。整张图片只需要作为素材列表出现时,image asset 节点足够;图片中的旗帜区域需要被独立引用、查询和高亮时,该区域获得独立节点资格。整段视频只用于播放时,video asset 节点足够;视频中的某段声音和画面共同支撑一个事件时,该时间片获得 video segment 节点资格。粒度判断不来自对象在原始资料中显得多重要,而来自它是否改变后续消费动作。

同一个事实也由消费者动作决定落位。图片的中文说明服务阅读和展示,适合成为字段;图片中的 bbox 服务定位和渲染,适合进入 locator payload;图片区域与某个事件之间的证据关系服务查询和审查,适合成为 relation edge。

建模讨论应先列消费者动作,再决定资源边界。字段表、role 表和关系表都从这些动作反推。动作不存在时,结构不进入公共模型。

9. 建模表面

异构资源图至少有四个表面:源表面、图表面、报告表面和展示表面。它们服务不同消费者,承担不同动作。

表面 消费者 承担动作

源表面

作者、维护者、code agent

书写、修改、版本管理、审查

图表面

SPARQL、校验器、RAG 检索器、下游程序

查询、关系扩展、验证、数据转换

报告表面

QA、reviewer、维护者、agent

展示缺失、错误、查询结果和回源位置

展示表面

读者、演示者、业务使用者

查看资源卡、媒体片段、图片区域、证据链

源表面是事实维护入口。它可以是结构化书稿、领域索引文件、资源清单或其它可审查文本。源表面保存人能维护的标题、字段、关系声明和 payload。

图表面是查询入口。源表面投影为 RDF 1.2 图或其它图结构后,消费者可以按节点身份、字段、关系和定位查询资源。事实来源仍然保留在源表面,图表面承担查询形态。

报告表面把查询和校验结果转成任务视图。报告需要保留资源 label、headline、role、字段、关系、payload 摘要、relative path 和 line。报告的职责是让人或 agent 回到源表面修正模型。

展示表面面向最终体验。图片 asset 渲染为图片卡,image region 渲染为原图加高亮区域,video segment 渲染为带 start/end 的播放器,document chunk 渲染为文本证据卡。展示表面消费报告或 registry,不直接取代源表面。

表面分层让同一模型被不同角色使用。维护者编辑源表面;查询器读取图表面;QA 阅读报告表面;演示者使用展示表面。一个健康模型应让这些表面互相指向,并保持各自职责。

10. 完成契约

完成声明必须落到可观察表面。资源图模型完成时,节点、字段、关系、payload、查询、校验、报告和展示都应形成闭合链路。

对象 完成条件 观察方式

资源节点

拥有稳定身份、角色、标题或名称、回源坐标

按 label 或 role 能查询到节点

字段

服务查询、展示、校验、排序、过滤或报告动作

查询结果和报告能读取字段

关系

拥有明确 source、target、谓词和消费动作

SPARQL 能沿关系返回目标资源

payload

拥有字段谓词、format、raw、schema 或解释器、回源坐标

报告能解析摘要并指回 payload 源行

locator

能打开或定位原始材料内部位置

前端能高亮图片区域或 seek 视频片段

查询

输入、输出变量和证明能力明确

查询案例能返回预期资源集合

校验

缺失字段、错误关系和非法 payload 能被报告

shape、schema 或脚本输出 source-aware report

运行成功只证明某个实现物出现过。资源图完成需要证明消费者动作成立:查询者能查到,展示面能打开,QA 能校验,reviewer 能审查,维护者能回源。

完成契约也限制新增内容。新增 role 必须改变查询、校验、渲染或审查动作;新增字段必须进入查询、展示、校验、排序、过滤或报告;新增 payload 必须承载平面字段无法健康表达的复杂结构;新增关系必须改变图上的可查询路径。

Part III: 节点、字段与关系的推导

本部给出建模算子。读者从消费者动作反推资源节点、字段、关系谓词、payload 和 source coordinate,使每个结构都有进入公共模型的理由。

11. 节点资格推导

资源节点是被系统独立命名、查询、引用、验证、回源或维护的对象。节点资格来自动作,不来自对象在自然语言中显得重要。

候选对象进入节点判断时,先回答五个问题:

问题 成立时的节点资格 不成立时的落位

它是否需要被独立引用

需要稳定 ID 或标题地址

留在父节点正文、字段或 payload 中

它是否需要被独立查询

需要 role、字段和可查询关系

作为父节点字段或 raw 结果

它是否需要被独立校验

需要 shape、schema 或质量规则

并入父节点校验

它是否需要回到源表面

需要 source coordinate

只保留外部文件位置或正文说明

它是否需要单独维护

需要独立标题、字段和变更记录

随父节点一起维护

文本中的标题天然适合成为资源节点。一个标题可以同时承担阅读单位、RAG chunk、SPARQL 查询单位和回源单位。若段落中的某个句子需要被多处引用、单独校验或作为证据端点,该句子所在区域应提升为更小标题或可寻址片段。

图片整体通常可以成为 image asset 节点。图片内部区域只有在承担独立动作时成为 image region 节点。头盔反射、标牌文字、缺陷区域、医学影像病灶、地图上的路径段,都可能因为查询、证据或渲染动作获得节点资格。

视频整体可以成为 video asset 节点。视频内部时间片在承担事件证据、声音描述、画面描述、字幕 cue 或播放定位动作时成为 video segment 节点。固定时间切割只提供粗粒度候选;节点资格仍由消费动作确认。

音频整体可以成为 audio asset 节点。说话人轮次、语义段、声音事件和 transcript cue 在需要单独查询、引用、校验或播放定位时成为资源节点。标注来源由字段表达;人或模型不改变资源节点本身的类型。

节点资格的输出是一组明确承诺:该节点可以被引用,可以被查询,可以携带字段,可以作为关系端点,可以被报告带回源表面。不能承担这些承诺的候选对象保留为正文、字段、payload 或外部原始材料。

12. 字段资格推导

字段是进入公共模型的可观察事实。字段资格来自查询、展示、校验、排序、过滤、报告或下游工具消费。不能服务这些动作的文字保持为正文说明。

字段推导从消费者动作开始:

动作 字段例子 作用

查询

rolesourceIdspeakermediaType

让查询器找到特定资源集合

展示

captionZhvisualDescriptionaudioDescription

让前端或报告生成可读说明

校验

statusrequiredByreviewState

让 shape 或 schema 检查完整性

排序

documentOrderstartTimepriority

让结果保持稳定顺序

过滤

languagelicenseClassmediaKind

让消费者缩小结果范围

审计

sourceUrlsourceIdannotatormethod

让 reviewer 判断事实来源和责任

字段主体决定落位。描述资源节点的字段写在节点表面;描述关系声明的字段写在边表面;描述复杂定位或嵌套结构的字段指向 payload。

普通可读字段优先使用描述列表。中文摘要、画面说明、声音说明、对象列表、颜色、构图、说话人、语言、来源编号,适合以平面字段进入公共表面。读者能直接读,查询器能直接取值,报告能直接展示。

标题 attrlist 只承载少量短表面。address label、role、状态、短 owner、短 sourceId 可以写在标题附近。字段数量较多、字段值较长或字段需要中文说明时,描述列表更适合维护。

边字段描述一次关系声明。confidenceweightconditionbasisreviewState 等字段若服务关系本身,应写在 xref 的 named attributes 或对应的 edge payload 中。边字段不描述 source 节点,也不描述 target 节点。

字段进入模型后成为维护承诺。新增字段必须说明消费动作、取值范围、落位方式、查询用途和校验方式。只服务作者临时记忆的内容不进入字段表。

13. 关系谓词资格推导

关系谓词连接两个资源节点,并改变图上的查询路径。关系谓词资格来自明确的 source role、target role、关系含义、查询用途和验证条件。

普通参见关系只表达阅读导航。明确业务关系表达可查询语义。一个关系谓词进入词表前,先回答以下问题:

问题 要求

source 是什么

声明关系起点允许哪些 role

target 是什么

声明关系终点允许哪些 role

关系改变什么查询

至少有一个查询案例依赖该谓词

是否需要边字段

需要时定义字段名、取值和校验规则

如何验证

通过 SHACL、schema、查询结果或 reviewer checklist 检查

evidence-for 服务证据聚合。source 可以是 document chunk、image region、video segment、audio cue 或外部证据片段;target 可以是 event 或 claim。查询者按事件查证据时沿该关系返回不同模态的资源。

features 服务对象出现查询。source 可以是 image region、video segment 或文本片段;target 可以是 person、object、location。查询者查“哪些图片局部出现登月舱”时沿该关系得到 image region。

mentions 服务文本或声音提及索引。source 可以是 transcript cue、document chunk 或 video segment;target 可以是 person、object、event 或 concept。它适合回答“哪里提到了某个对象”。

corresponds-to 服务跨模态对齐。source 和 target 通常是不同模态的资源节点,例如一张图片、一段视频、一个 transcript cue 指向同一事件片段。该关系让查询器把同一事实的多种证据合并。

part-of 服务组成关系。source 是组成部分,target 是整体。标题层级可以在特定 hierarchy policy 下生成组成关系,但结构层级本身不自动等于业务组成。

关系谓词词表应保持小而稳定。新增谓词时,先证明现有谓词无法表达该查询路径,再定义端点、边字段和验证方式。关系谓词没有查询用途时,普通参见已经足够。

14. Payload 资格推导

Payload 承载平面字段无法健康表达的复杂结构。它适合保存 locator、嵌套配置、原始模型输出、外部 selector、复杂边证据和下游 adapter 输入。

Payload 资格由数据形状和消费动作共同决定。若信息可以稳定地用短字段或描述列表表达,并且人需要直接阅读,该信息应保持为普通字段。若信息需要内部结构、数组、坐标、嵌套对象或原始格式保真,该信息进入 payload。

对象 payload 内容 消费动作

图片区域

bbox、polygon、maskRef、coordinate unit

高亮原图局部、生成区域报告

视频片段

start、end、frameStart、frameEnd、tracks

seek 播放器、截取片段、对齐字幕

音频片段

start、end、channel、speaker span

播放定位、声道过滤、转写对齐

PDF 证据

page、bbox、TextQuoteSelector、TextPositionSelector

打开原文并高亮证据

模型输出

原始 observation、OCR、caption、confidence 数组

复核、抽取、升级为节点

边证据

来源、条件、风险、解释、复核记录

审计某一次关系声明

Payload 需要字段谓词、format、raw 和解释规则。字段谓词说明 payload 描述什么;format 说明如何解析 raw;schema 说明 raw 内部结构如何被接受;source coordinate 说明维护者如何回到源表面修改 payload。

Payload 不替代字段。图片 caption、视频画面说明、声音说明、对象名称、中文摘要、来源编号、语言等普通事实,应保留为字段。把这些内容塞进 JSON 会降低读者可读性,也会让简单查询变复杂。

Payload 也不自动生成资源节点。模型输出中的候选观察列表可以作为 raw observation payload 保存;其中某个区域经过确认,并承担独立引用、查询、渲染或审查动作时,再成为 image region 或 evidence 资源,并用 locator 指回原始区域。

14.1. 复杂结构提升为资源节点

复杂结构有两种落位方式。第一种是 payload:复杂结构作为某个资源节点或某条关系声明的值保存。第二种是资源节点:复杂结构本身获得独立身份,再通过关系挂到主资源上。

资源节点适合复杂结构本身需要独立消费的场景。一个 locator 若要被多个区域复用,或需要被单独审查和修订,可以成为 locator 节点。一个模型观察若已经被人工或规则确认,并要作为证据参与查询,可以成为 observation、image-region 或 evidence 节点。一个配置若是可独立维护的策略对象,可以成为 config 或 policy 节点。

Payload 适合复杂结构只是节点或边的值的场景。图片区域的 bbox 只服务高亮渲染时,作为 image-locator payload 足够。视频片段的 start、end 和 tracks 只服务播放器定位时,作为 video-locator payload 足够。模型输出的一组候选检测结果只用于复核和筛选时,作为 detection payload 更合适。

复杂结构 适合落位 理由

图片区域的 bbox

payload

它通常只是 image region 的定位值。

可被多个资源复用的定位对象

资源节点

它需要独立身份、关系和维护入口。

完整模型 observation list

payload

它需要保留数组、置信度和原始输出结构。

被确认并作为证据使用的观察结果

资源节点

它需要被引用、查询、渲染或审查。

视频片段的 start/end

payload

它通常只是 video segment 的播放坐标。

可独立引用的字幕或语音线索

资源节点

它需要作为 transcript cue 进入证据链。

xref 的复杂条件证据

edge payload

它描述的是一次关系声明。

可独立审查的证据说明

资源节点

它本身承担证据对象身份。

选择顺序是先判断对象资格,再判断字段资格,最后判断 payload 资格。复杂结构若拥有独立引用、查询、校验、回源、维护或复用动作,就进入资源节点;若只是主节点或关系声明的复杂值,就保留为 payload;若只是普通可读事实,就使用描述列表字段。

15. Source Coordinate 与回源资格

Source coordinate 是资源图回到源表面的定位事实。它让查询结果、校验结果、报告和 agent 操作指向可修改位置。

资源图至少需要三类回源坐标:

节点坐标

节点标题所在文件、标题行、节点切片起止行。

关系坐标

xref occurrence 所在文件、行列、raw 表面、target selector。

payload 坐标

source block 所在文件、起止行、正文起止行、format。

节点坐标服务资源维护。查询命中某个 image region、video segment、event 或 claim 后,报告应能展示其 source path 和 heading line。维护者点击后回到源文件对应标题。

关系坐标服务边维护。查询或审查发现某条 evidence-forfeaturescorresponds-to 有端点错误、边字段缺失或 selector 未绑定时,报告应指向 xref 出现点,并同时保留 source heading 作为上下文。

Payload 坐标服务复杂值维护。图片 bbox 错误、视频 start/end 错误、PDF selector 失效、模型 raw 不符合 schema 时,报告应指向 payload block 的源行。

Source coordinate 让资源图保持可维护。没有回源坐标的查询结果只是一张只读表;有回源坐标的结果可以成为任务、审查、修复和 agent 编辑入口。

回源资格也限制模型设计。进入公共图的节点、关系和 payload 都应能回答“维护者从哪里修改它”。无法回源的派生事实需要说明它的生成规则和上游事实来源。

Part IV: 异构模态的进入方式

本部把前一部的推导算子应用到不同模态。每章都围绕同一组问题展开:哪些对象成为资源节点,哪些事实成为字段,哪些定位进入 payload,哪些关系进入图查询。

16. 文本与标题 Chunk

文本资源的基本节点可以由标题承载。标题节点同时是阅读入口、RAG chunk、SPARQL 查询单位和回源单位。标题下的正文、列表、表格、代码块和说明构成该节点的文本切片。

标题边界来自源表面转写。人或模型阅读原始资料后,把需要作为证据资源消费的内容写成标题区域。这个标题区域随后被复用为阅读结构、检索 chunk、图查询资源和回源坐标。标题是建模阶段写入源表面的资源边界。

文本 chunk 的粒度由阅读和检索动作决定。一个章节能够独立回答问题时,该章节适合作为 chunk。段落内部的主张需要被多处引用、校验或作为证据端点时,该区域应提升为更小标题或稳定锚点。

文本节点常用字段包括:

summary

该节点内容的短摘要。

role

节点身份,例如 claim、event、rule、source-text。

sourceId

外部文档或编号体系中的稳定编号。

language

文本语言。

quote

必须精确保存的短证据文本。

文本节点常用关系包括:

supports

当前节点支持某个主张。

mentions

当前节点提及某个人、对象、地点或事件。

defines

当前节点定义某个术语或对象。

evidence-for

当前节点作为某事件或主张的证据。

标题 chunk 适合进入向量、关键词或混合索引。模糊召回返回候选标题后,图查询可以读取该标题的父子结构、出边、入边、字段和回源坐标。检索结果由相似文本入口进入资源图中的上下文和证据链。

文本节点的回源坐标必须保留文件路径和标题行。查询命中文本节点后,维护者可以打开源表面,修改标题、字段、正文或关系。

17. 图片与图片区域

图片资源至少有两个建模层位:整图和区域。整图作为 image asset 承载文件路径、来源编号、中文说明、主题对象、颜色、构图和关联事件。区域作为 image region 承载图片内部可独立消费的位置。

image asset 适合表达整张图片的身份。常用字段包括:

mediaType

image

sourceId

来源系统中的图片编号。

localPath

本地图片路径。

captionZh

中文说明。

objects

画面中可被查询的对象。

dominantColors

主色或颜色组。

composition

构图说明。

image region 适合表达图片内部被独立引用、查询、校验或渲染的位置。常用字段包括 regionOfcaptionZhobjectsvisualDescription。区域定位使用 payload 保存 bbox、polygon、maskRef 或其它坐标结构。

{
  "asset": "image-as11-40-5903",
  "selector": "xywh",
  "bbox": [310, 165, 250, 170],
  "unit": "pixel"
}

图片区域的关系通常连接对象、人物、地点、事件或主张。features 连接区域中出现的对象;evidence-for 连接区域支持的事件或 claim;corresponds-to 连接与该区域对应的视频片段或文本证据。

图片建模的质量边界是可渲染性和可查询性。image region 被查询返回时,前端应能打开原图并高亮对应区域。若区域无法定位到原图,区域节点的证据能力不完整。

18. 音频与声音片段

音频资源可以按整段资产、时间片、说话人轮次、声音事件和 transcript cue 建模。每种节点的资格来自独立播放、查询、引用、校验或证据动作。

audio asset 承载整段音频的身份。常用字段包括 mediaTypelocalPathdurationlanguagespeakerscaptionZh。它适合服务音频目录、素材清单和整段播放。

audio segment 承载音频内部的时间范围。常用字段包括 startendaudioDescriptionspeakertranscriptCue。时间定位进入 audio locator payload。

{
  "asset": "audio-interview-001",
  "start": "PT1M20S",
  "end": "PT1M38S",
  "tracks": ["audio"]
}

transcript cue 是声音内容的文本化资源。它可以保存 speaker、原文短句、中文释义、sourceUrl、relatedSegment。cue 适合成为事件证据、人物提及索引或语音问答依据。

声音事件可以表达非语言内容,例如掌声、警报、脚步、爆炸声、门铃、雨声。声音事件进入节点前,同样需要独立消费动作。只作为模型临时观察结果的声音事件可以保留在 payload 中。

标注来源以字段表达。annotatormethodmodelreviewStateconfidence 可以记录人或模型如何产生该标注。来源字段不改变 audio segment、utterance 或 sound event 的节点身份。

19. 视频与视听时间片

视频资源同时包含视觉轨和声音轨。video asset 承载整段视频身份;video segment 承载可独立消费的时间片;必要时,视频片段还可以连接 transcript cue、frame region 或外部事件节点。

video asset 常用字段包括 mediaTypelocalPathdurationcaptionZhsourceIdthumbnailPath。它服务视频目录、整段播放和素材检索。

video segment 的字段必须同时考虑画面和声音。visualDescription 描述画面内容;audioDescription 描述声音内容;startend 描述时间边界;transcriptCue 连接语音文本;event 或 relation 连接事件节点。

{
  "asset": "video-one-small-step",
  "start": "PT0M34S",
  "end": "PT0M58S",
  "tracks": ["visual", "audio"]
}

视频时间片的边界来自事件、镜头、语义动作、声音内容或证据引用。固定秒数可以生成候选切片,但可维护节点需要说明它服务的消费动作。

视频片段常用关系包括:

evidence-for

片段为事件或 claim 提供证据。

features

片段画面中出现人物、地点或对象。

mentions

片段声音或字幕提及人物、地点或对象。

corresponds-to

片段与图片、文本 cue 或其它模态资源对齐。

视频资源的展示面应支持定位播放。查询返回 video segment 时,前端应能定位到 start time,并展示 start、end、画面描述、声音描述和关联资源。

20. 外部文档与 Selector

外部文档资源包括 PDF、网页、Word、电子表格、代码文件和日志文件。它们可以保持在原始系统中;资源图保存可查询节点、证据关系和打开原文位置所需的 selector。

外部文档整体可以成为 document asset。字段包括 sourceUrllocalPathtitlepublisherlanguageretrievedAtsourceId。这些字段服务来源追踪、过滤和打开原文。

外部文档内部片段可以成为 evidence chunk。片段字段包括 captionZhquotepagesectionsourceFilelanguage。复杂定位进入 locator payload。

{
  "pdf": {
    "page": 12,
    "bbox": [120, 300, 450, 80]
  },
  "textQuote": {
    "exact": "温度记录完整后方可放行",
    "prefix": "审计结论:",
    "suffix": "。"
  }
}

网页片段可以使用 URL、CSS selector、XPath、TextQuoteSelector 或 TextPositionSelector。代码片段可以使用 file path、symbol name、line span 或 AST path。日志片段可以使用 file path、timestamp、line span 或 trace id。

Selector 的职责是定位原文。资源图保存打开位置和证据关系;原始材料仍由外部系统或文件保存。查询命中 evidence chunk 后,前端或 adapter 根据 selector 打开原文位置。

21. 跨模态事件聚合

跨模态事件是连接多种资源的汇合节点。一个事件可以由文本说明、图片区域、视频时间片、音频 cue、PDF 证据和外部网页共同支撑。

event 节点承载事件身份。常用字段包括 summarytimelocationparticipantsstatus。事件节点不替代证据资源;它提供证据聚合的中心。

证据资源通过 evidence-for 指向事件。图片区域通过 features 连接事件涉及的对象;视频片段通过 mentionsfeatures 连接声音和画面内容;文本 cue 通过 corresponds-to 与视频片段对齐。

[#event-first-step.event]
== 阿姆斯特朗踏上月面

summary:: 阿姆斯特朗从登月舱梯子下降并踏上月面。

该事件由 xref:video-first-step[第一步视频片段, rel=evidence-for]、
xref:cue-first-step[第一步语音线索, rel=evidence-for] 和
xref:image-ladder-region[登月舱梯子区域, rel=evidence-for] 共同支撑。

跨模态聚合让查询从事件出发返回不同模态资源。一个查询可以同时得到文本证据、图片区域、视频片段和声音 cue;前端再根据各自 locator 渲染文本卡、图片高亮和视频播放器。

事件节点也服务审查。reviewer 可以检查某事件是否至少有一条证据入边,证据是否拥有回源坐标,跨模态对应是否有明确关系谓词。

Part V: 查询、RAG 与工具消费

本部说明资源图如何被查询和消费。模糊召回找到候选资源入口;SPARQL 查询沿字段、关系、locator 和 source coordinate 展开证据链;工具调用、资源块渲染和 source-aware report 让这条 RAG 链路保持可见。

22. SPARQL 查询面

SPARQL 查询面让资源节点、字段、关系和 payload 进入可检查的查询动作。查询模式围绕消费者问题设计,并把图中的三元组组织成可消费结果。

按 label space 查资源:

PREFIX aat: <https://micheng.dev/ns/asciidoc-abundant-tree#>

SELECT ?resource ?headline ?role ?path ?line WHERE {
  VALUES ?label { "event-first-step" }
  {
    ?resource aat:addressLabel ?label .
  } UNION {
    ?resource aat:generatedAddressLabel ?label .
  } UNION {
    ?resource aat:headline ?label .
  }
  ?resource aat:headline ?headline ;
            aat:relativePath ?path ;
            aat:headingLine ?line .
  OPTIONAL { ?resource aat:role ?role . }
}

按 role 查节点集合:

PREFIX aat: <https://micheng.dev/ns/asciidoc-abundant-tree#>

SELECT ?resource ?headline ?path ?line WHERE {
  ?resource aat:role "image-region" ;
            aat:headline ?headline ;
            aat:relativePath ?path ;
            aat:headingLine ?line .
}
ORDER BY ?headline

按关系查事件证据:

PREFIX aat: <https://micheng.dev/ns/asciidoc-abundant-tree#>
PREFIX rel: <https://micheng.dev/ns/asciidoc-relation#>

SELECT ?evidence ?headline ?role WHERE {
  ?event aat:addressLabel "event-first-step" .
  ?evidence rel:evidence-for ?event ;
            aat:headline ?headline ;
            aat:role ?role .
}
ORDER BY ?role ?headline

按对象查图片区域:

PREFIX aat: <https://micheng.dev/ns/asciidoc-abundant-tree#>
PREFIX rel: <https://micheng.dev/ns/asciidoc-relation#>

SELECT ?region ?headline ?locator WHERE {
  ?object aat:addressLabel "object-lunar-module" .
  ?region aat:role "image-region" ;
          rel:features ?object ;
          aat:headline ?headline ;
          aat:image-locator ?locator .
}

查询结果应保留资源 IRI、命中的 label、headline、role、source path、heading line 和可渲染 locator。这样同一查询结果可以进入表格、JSON、资源卡、媒体定位和源文件定位。label 是查询入口;资源 IRI 承担投影图中的资源身份。

23. 模糊召回与图查询

RAG 的检索面可以分成模糊召回和结构查询。模糊召回负责找到候选资源;结构查询负责沿字段、关系和定位扩展证据。

两阶段查询对应两个不同问题。第一阶段处理用户问题与资源入口之间的模糊匹配;第二阶段处理候选资源与证据链之间的符号关系。第一阶段返回候选,第二阶段返回可消费资源集合及其定位、来源和关系。

标题 chunk 适合进入向量、关键词或混合索引。每个 chunk 保存 address label、headline、role、raw text、source path 和 heading line。嵌入模型或文本索引把 chunk 转换为可召回入口,检索返回语义或词面相近的候选资源。

候选资源进入图查询。查询器按候选 address label 或资源 IRI 找到 heading node,再读取字段、父子结构、出边、入边、相关图片区域、视频片段、transcript cue 和 source coordinate。这个阶段把相似文本扩展为结构化证据链。

阶段 输入 输出

模糊召回

用户问题、chunk 向量索引

候选 address label、headline、score

图查询

候选 address label 或资源 IRI、SPARQL 查询、资源图

字段、关系、证据、locator、source coordinate

答案组织

查询结果、资源 registry、系统提示

文本回答、资源块、工具调用记录

模糊召回解决“可能相关”。图查询解决“如何相关、证据在哪里、还能连接到什么”。两层分工让 RAG 答案既能覆盖自然语言提问,又能保持可见证据链。图查询的结果应回到可读、可渲染、可回源的资源。

当候选节点是文本 chunk 时,图查询可以返回支持它的图片、视频和外部文档。候选节点是图片区域时,图查询可以返回它出现的对象、支撑的事件和对应的视频片段。候选节点是视频片段时,图查询可以返回声音 cue、画面对象和文本说明。

24. LLM 工具调用

回答系统在资源图上工作时,应通过显式工具调用访问查询面。工具调用把模型回答从口头断言连接到可见检索动作。

查询工具可以收敛为一个:sparql_query。该工具接收 SPARQL SELECT 查询字符串,在本地或服务端资源图上执行,返回变量、行集、资源摘要和错误信息。

{
  "name": "sparql_query",
  "input": {
    "query": "SELECT ?resource ?headline WHERE { ?resource aat:role \"video-segment\" ; aat:headline ?headline . }"
  }
}

工具结果应保留原始绑定和友好化资源摘要。资源摘要是回答系统组织证据的输入,也是前端和报告继续消费的入口:

{
  "ok": true,
  "rowCount": 2,
  "variables": ["resource", "headline"],
  "rows": [
    {
      "resource": "urn:resource:video-first-step",
      "headline": "第一步视频片段"
    }
  ],
  "resources": [
    {
      "id": "video-first-step",
      "role": "video-segment",
      "headline": "第一步视频片段",
      "sourcePath": "source/videos/one-small-step.adoc",
      "headingLine": 17
    }
  ]
}

工具调用记录应进入可展开展示面。展示面至少包含工具名、执行状态、耗时、SPARQL 查询语句、返回结果表格、JSON 和资源卡。查询记录让用户、QA 和 reviewer 看到回答系统如何从资源图取得证据。

工具只承担查询动作。修改源表面、写回字段、生成新节点和编辑 payload 属于维护流程,不属于普通问答工具的默认动作。

25. 资源块与媒体渲染

资源块把模型回答连接到可渲染资源。模型输出资源 address label,前端根据 resource registry 查到资源类型、字段、locator、媒体路径和源文件坐标。

一种可维护的资源块表面是 fenced block:

```sparrag-resource
id: video-first-step
mode: embed
caption: 第一脚踏上月面的关键视频片段
```

资源块字段保持少量稳定:

id

必填,资源 address label。长期公开引用通常使用作者维护的 stable ID 作为 address label。

mode

可选,embedcardlink

caption

可选,覆盖默认显示标题。

前端解析资源块后,根据 role 渲染不同组件:

role 渲染方式

image-asset

显示整张图片、caption、sourceId

image-region

显示原图并叠加 bbox 或 polygon 高亮

video-asset

显示视频播放器

video-segment

显示视频播放器,定位到 start,展示 start/end

audio-segment

显示音频播放器,定位到 start

document、event、claim、transcript-cue

显示文本证据卡和源文件定位

普通 Markdown 链接也可以作为增强表面,例如 sparrag:event-first-step。点击链接后,前端应打开资源详情,并定位到源文件树中的对应标题行。该地址首先在 resource registry 的 label space 中解析;解析结果再绑定到具体资源。

资源块让答案拥有可操作证据。读者不只看到模型说了什么,还能打开图片区域、视频片段、音频时间点或源文档标题。

26. Source-aware Report

Source-aware report 把查询和校验结果转换成可编辑任务视图。它保存资源身份、字段、关系、payload 摘要和回源坐标。

{
  "id": "region-visor-reflection",
  "headline": "头盔反射区域",
  "role": "image-region",
  "fields": {
    "regionOf": ["image-as11-40-5903"],
    "objects": ["Lunar Module", "Neil Armstrong"]
  },
  "locator": {
    "kind": "image",
    "asset": "image-as11-40-5903",
    "bbox": [310, 165, 250, 170]
  },
  "source": {
    "relativePath": "source/images/as11-40-5903.adoc",
    "headingLine": 21
  }
}

报告服务三类动作。QA 用报告检查模型是否满足约束;reviewer 用报告审查资源来源和关系;维护者或 agent 用报告回到源表面修改字段、关系或 payload。

报告从源表面和图表面派生,记录当前查询或校验的结果。修改发生在源表面;报告在下一次构建后更新。

source-aware report 应覆盖节点、关系和 payload。节点报告指向标题行;关系报告指向 xref occurrence;payload 报告指向 source block。这样缺失字段、错误关系和 locator 错误都能回到对应维护位置。

Part VI: 质量、验证与审查

本部把建模承诺转换为验收和审查表面。资源图的质量由查询、校验、展示、回源和 reviewer checklist 共同判断。

27. 完成声明

完成声明是可观察契约。一个模型完成时,读者、查询器、校验器、前端、QA 和 reviewer 都能从自己的表面观察到对应结果。

完成声明覆盖从源表面到消费表面的整条链路。原始资料被转写为 ADOC 源表面,源表面被投影为资源图,资源图支持查询,查询结果支持渲染和报告,报告能回到源表面修改。链路中的任一断点都会破坏完成声明。

承诺 观察动作 失败表现

资源节点可查询

按 address label、role 或字段查询

节点无法被查询返回

字段可消费

查询、渲染、校验或报告读取字段

字段只存在于正文叙述中

关系可遍历

SPARQL 沿 rel 返回目标资源

关系只有自然语言说明

payload 可解释

schema 或 adapter 读取 raw 与 format

JSON/YAML 无字段谓词或 schema

locator 可打开

前端定位图片区域、视频时间片或外部文档位置

查询结果无法打开原始材料

问题可回源

报告显示 relativePath、line、raw 或 payload span

错误只能在生成物中看到

链路 观察动作 失败表现

源表面转写

ADOC 中存在标题、正文、字段、xref 或 payload

抽取结果只存在于外部临时数据

图投影

资源、字段、关系、payload 和 source coordinate 出现在图表面

源表面与查询表面断开

证据消费

查询结果能被回答系统、前端或报告读取

查询返回中间事实但无法形成证据资源

回源维护

错误能定位到标题、xref occurrence 或 source block

维护者只能修改派生结果

完成声明不能由“文件存在”替代。ADOC 源文件存在、Turtle 文件生成、前端页面能打开,只是实现物出现。模型完成需要证明消费者动作成立。

完成声明也不能由“内容丰富”替代。字段很多、关系很多、payload 很大,都不自动构成完成。每个结构都必须服务查询、渲染、校验、回源或审查。

完成报告应把每个黑盒承诺映射到观察面。没有观察面的承诺不能进入完成声明。

28. Schema 与 SHACL

Schema 和 SHACL 把建模规则转成可执行检查。它们不替代建模判断;它们让判断产生可观察结果。

字段约束检查节点是否具备必要事实。例如 image asset 需要 captionZhsourceId;video segment 需要 startendvisualDescriptionaudioDescription;query case 需要 queryFileproves

关系约束检查端点是否符合词表。features 的 source 应是能呈现对象出现的资源,target 应是 person、object、location 或 concept;evidence-for 的 target 应是 event 或 claim;corresponds-to 的端点应能解释跨模态对齐。

Payload schema 检查 raw 内部结构。image locator 需要 asset、selector、bbox 或 polygon;video locator 需要 asset、start、end 和 tracks;PDF locator 需要 source file、page、bbox 或 text quote。

@prefix aat: <https://micheng.dev/ns/asciidoc-abundant-tree#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] a sh:NodeShape ;
  sh:targetClass aat:Heading ;
  sh:property [
    sh:path aat:headline ;
    sh:minCount 1 ;
    sh:datatype xsd:string ;
    sh:message "resource node must expose a headline"
  ] ;
  sh:property [
    sh:path aat:relativePath ;
    sh:minCount 1 ;
    sh:message "resource node must expose source path"
  ] .

校验结果必须回源。violation 只给 focus node 不够;报告应读取该节点的 headline、role、relativePath 和 headingLine,帮助维护者回到源表面。

29. 查询验收

查询验收检查模型是否支持预期消费者问题。每个查询案例都应声明输入、输出变量、证明能力和结果消费面。

查询 输入 输出 证明能力

按事件查证据

event address label

evidence resource、role、headline、source

不同模态证据能聚合到同一事件

按对象查图片区域

object address label

image region、locator、source

图片局部能独立查询和渲染

查有声音描述的视频片段

role=video-segment

segment、visualDescription、audioDescription

视频片段承载视听双轨字段

查跨模态对应

resource address label

corresponding resources

图片、视频、文本 cue 能对齐

按资源查源文件

resource address label

relativePath、headingLine

查询结果能回源

查询验收检查查询结果是否能被后续表面消费。若查询返回资源 IRI,但无法得到 headline、role、source path 或 locator,该查询仍然缺少消费能力。

查询案例应进入书稿或模型目录。每个查询都有文件名、输入说明、输出变量、证明的建模能力和预期展示方式。这样 QA 可以复现,reviewer 可以审查,开发者可以接入 UI。

30. 展示验收

展示验收检查资源图是否能转成可感知结果。展示层证明 locator、resource registry、source coordinate 和媒体字段可被消费。

资源 展示要求 验收动作

image-asset

显示图片、caption、sourceId

打开资源卡,图片可见

image-region

显示原图并高亮 bbox 或 polygon

点击查询结果,高亮区域位置正确

video-asset

显示播放器和视频说明

能播放整段视频

video-segment

播放器定位到 start,显示 start/end

点击资源块后从片段起点播放

audio-segment

播放器定位到 start,显示声音说明

能从指定时间点播放

document chunk

显示文本证据和源文件位置

点击链接定位到源标题

展示验收应同时检查源文件定位。资源卡中的标题或链接应能打开源路径并定位到 heading line。这样展示面才能证明 source-aware graph 的回源能力。

工具调用展示也属于验收对象。用户应能看到工具名、SPARQL 查询、返回表格、JSON 和友好资源卡。隐藏查询过程会削弱 RAG 的可审查性。

31. 审查清单

Reviewer 使用清单判断新增内容是否保持模型健康。

31.1. 节点审查

  • 新节点是否服务独立引用、查询、校验、回源或维护动作。

  • 新节点是否拥有稳定身份、headline、role 和 source coordinate。

  • 新节点是否能作为关系端点或查询结果被消费。

31.2. 字段审查

  • 新字段是否服务查询、展示、校验、排序、过滤、报告或审计。

  • 字段是否放在合适表面:attrlist、描述列表、边字段或 payload。

  • 字段取值是否需要 schema、枚举或格式约束。

31.3. 关系审查

  • 新 rel 是否有 source role 和 target role。

  • 新 rel 是否改变至少一个查询路径。

  • 边字段是否描述关系声明本身。

  • 普通参见是否被错误升级为业务关系。

31.4. Payload 审查

  • payload 是否承载复杂定位、嵌套结构、原始模型输出或边证据。

  • payload 是否有字段谓词、format、schema 或解释器。

  • payload 是否保留 source coordinate。

  • 普通可读说明是否被误塞进 JSON 或 YAML。

31.5. 查询与展示审查

  • 新资源是否能被至少一个查询案例覆盖。

  • 查询结果是否带 headline、role、source path 和 locator。

  • 前端或报告是否能渲染该资源。

  • 错误是否能回到源表面修复。

32. 反模式

本章批判建模工作中的群体性坏习惯。这些坏习惯会让资源图变成字段堆、payload 垃圾桶或不可回源的查询幻象。

32.1. 字段堆积

字段堆积把能想到的信息都写成字段。字段数量增加后,查询、校验和维护负担同步增加。健康字段来自消费动作;没有消费动作的事实保持为正文说明。

32.2. Payload 垃圾桶

Payload 垃圾桶把普通说明、摘要、对象名和状态全部塞进 JSON。这样会破坏人读表面,也会让简单查询依赖 raw 解析。健康 payload 只承载复杂定位、嵌套结构、原始模型输出和边证据。

32.3. Role 膨胀

Role 膨胀为每个细微差异创建类型。role 过多会让查询、校验和渲染分支失控。健康 role 应对应不同字段、关系、查询、渲染或校验动作。

32.4. Rel 装饰化

Rel 装饰化把普通阅读参见写成业务关系。关系谓词进入图后会改变查询路径和质量约束。健康 rel 必须有端点、语义、边字段需求和查询用途。

32.5. 来源污染主线

来源污染主线把 sourceUrl、来源说明、下载记录和检索过程推到读者主体验中。来源字段服务校对、审计和回源;正文和展示主线应围绕读者要完成的查询、理解和证据定位动作。

32.6. 运行成功冒充完成

运行成功冒充完成把“脚本跑通”“页面打开”“文件生成”当成模型完成。健康完成声明需要节点、字段、关系、payload、查询、校验、展示和回源全部可观察。

Part VII: 决策树与模板

本部把全书方法压缩为决策树和模板。读者可以从自己的业务材料出发,逐步推导节点、字段、关系、payload、查询和审查条件。

33. 节点准入决策树

1. 当前候选对象是否需要被独立引用?
   ├─ 是:进入节点候选。
   └─ 否:进入问题 2。

2. 当前候选对象是否需要被独立查询?
   ├─ 是:进入节点候选。
   └─ 否:进入问题 3。

3. 当前候选对象是否需要被独立校验、回源、维护或渲染?
   ├─ 是:进入节点候选。
   └─ 否:保留为正文、字段、payload 或原始材料。

4. 节点是否拥有可查询地址?
   ├─ 是:使用既有编号、标题文本、generated label 或 stable ID。
   └─ 否:为长期引用节点声明 stable ID 作为 address label。

5. 节点是否需要 locator?
   ├─ 是:定义对应 locator payload。
   └─ 否:保留 source coordinate 即可。

6. 节点是否需要 role?
   ├─ 是:从受控 role 词表选择。
   └─ 否:补充 role 设计或收回节点承诺。

节点准入的输出应包括节点名称、address label、role、字段、可能关系、locator 和 source coordinate。没有这些输出,节点只是标题形态的正文片段。

34. 字段落位决策树

1. 该信息服务哪个动作?
   ├─ 查询、展示、校验、排序、过滤、报告、审计:进入问题 2。
   └─ 无明确动作:保留为正文或删除结构字段。

2. 字段主体是什么?
   ├─ 资源节点:进入问题 3。
   ├─ 关系声明:写为边字段或 edge payload。
   └─ 外部定位或复杂结构:进入 payload 决策树。

3. 字段是否短且数量少?
   ├─ 是:可写入标题 attrlist。
   └─ 否:进入问题 4。

4. 字段是否为普通可读文本?
   ├─ 是:写入标题下描述列表。
   └─ 否:进入问题 5。

5. 字段是否为嵌套结构、坐标、数组或 raw 输出?
   ├─ 是:写入 payload。
   └─ 否:重新定义字段含义。

字段落位完成后,写作者应补充字段名、取值范围、消费者、查询用途和校验规则。

35. 关系谓词决策树

1. 当前连接是否只服务普通阅读参见?
   ├─ 是:使用普通 reference。
   └─ 否:进入问题 2。

2. 当前连接是否改变查询路径?
   ├─ 是:进入 relation predicate 候选。
   └─ 否:保留为正文说明。

3. source role 和 target role 是否明确?
   ├─ 是:进入问题 4。
   └─ 否:先补 role 设计。

4. 是否存在已有 rel 能表达该路径?
   ├─ 是:复用已有 rel。
   └─ 否:进入问题 5。

5. 新 rel 是否有查询案例和验证方式?
   ├─ 是:加入 rel 词表。
   └─ 否:收回新 rel。

6. 该关系是否需要边字段?
   ├─ 是:定义边字段和校验规则。
   └─ 否:保留纯关系边。

关系谓词设计完成后,应记录谓词名、定义、source role、target role、查询案例、边字段和 reviewer 检查项。

36. Payload 与 Locator 决策树

1. 当前信息是否为复杂结构?
   ├─ 是:进入 payload 候选。
   └─ 否:优先使用普通字段。

2. 当前信息是否用于定位原始材料内部位置?
   ├─ 是:定义 locator payload。
   └─ 否:进入问题 3。

3. 当前信息是否需要保留 raw、format 或嵌套层级?
   ├─ 是:定义 payload schema。
   └─ 否:重新考虑字段落位。

4. payload 是否有消费者?
   ├─ 是:写明查询、渲染、校验或 adapter 动作。
   └─ 否:不进入公共模型。

5. payload 是否能回源?
   ├─ 是:保留 source coordinate。
   └─ 否:说明生成规则和上游事实来源。

locator 类型由原始材料决定。图片使用 bbox、polygon 或 mask;视频和音频使用 start/end、frame range、track;PDF 使用 page、bbox、text quote;网页使用 URL、text quote、position 或 selector。

37. RAG 查询路径决策树

1. 用户问题是否需要模糊召回?
   ├─ 是:先查向量索引,返回候选 address label。
   └─ 否:直接进入图查询。

2. 候选资源是否需要结构扩展?
   ├─ 是:按 address label 或资源 IRI 查询字段、关系、父子结构和证据。
   └─ 否:返回候选资源正文和 source coordinate。

3. 回答是否需要多模态证据?
   ├─ 是:查询 image-region、video-segment、audio-cue 或 external locator。
   └─ 否:保留文本证据。

4. 答案是否需要可见资源?
   ├─ 是:输出 resource block 或 address label link。
   └─ 否:输出文本摘要和引用。

5. 查询过程是否进入审查表面?
   ├─ 是:展示工具调用、SPARQL、表格、JSON 和资源卡。
   └─ 否:至少保留可展开工具记录。

RAG 查询路径的输出应包括自然语言回答、使用过的查询、命中的资源、可见证据和源文件定位。

38. 词表新增审查表

新增 role、rel、field 或 payload schema 前,使用本表审查。

对象 必须回答 拒绝条件

role

它改变哪些字段、关系、查询、渲染或校验

只表达命名偏好

rel

source role、target role、查询路径和验证方式是什么

只是普通阅读参见

field

服务哪个查询、展示、校验、排序、过滤或报告动作

只服务作者临时记忆

payload schema

解释哪个复杂 raw,谁解析,如何校验

普通字段被塞进复杂载荷

locator

能打开哪个原始材料内部位置

只保存无法使用的说明文本

新增词表项还必须更新相关文档:词表章节、查询案例、校验规则、报告字段、展示组件和 reviewer checklist。无法更新这些表面的新增项不进入公共模型。

39. 建模施工模板

读者可以用以下模板把一个业务领域转成资源图模型。

39.1. 1. 写消费者动作

消费者:
动作:
输入:
期望输出:
是否需要查询:
是否需要渲染:
是否需要校验:
是否需要回源:

39.2. 2. 列资源候选

候选对象:
独立引用:
独立查询:
独立校验:
独立回源:
独立维护:
节点结论:

39.3. 3. 推导字段

字段名:
字段主体:
消费者动作:
落位:
取值范围:
校验方式:

39.4. 4. 推导关系

关系谓词:
source role:
target role:
查询用途:
边字段:
验证方式:

39.5. 5. 推导 payload 与 locator

payload 字段谓词:
format:
raw 结构:
schema:
source coordinate:
渲染或 adapter 动作:

39.6. 6. 写查询案例

查询问题:
输入变量:
SPARQL 模式:
输出变量:
证明能力:
展示方式:

39.7. 7. 写验收项

需求:
观察动作:
输入:
预期结果:
失败表现:
回源位置:

施工模板的输出应进入项目的词表、查询、校验、报告和审查流程,并随模型演化持续更新。

Appendix A: 附录 A:表达表面速查

表面 用途

标题

创建可寻址资源节点。

stable ID

作为作者维护的 address label,为长期引用、查询和资源块渲染提供公开地址。

role

声明资源节点身份,服务查询、渲染和校验。

描述列表字段

保存普通可读字段,例如摘要、画面说明、声音说明、对象列表。

xref

连接当前资源与目标资源。

xref rel

声明明确关系谓词。

xref named attributes

保存边字段,例如 confidence、condition、basis。

source block payload

保存复杂定位、嵌套结构或原始模型输出。

source coordinate

保存回到源文件、关系声明或 payload 的位置。

表达表面按消费者动作选择。短字段靠近标题,长字段放描述列表,复杂定位进入 payload,关系语义进入 xref。

Appendix B: 附录 B:查询模式速查

40. 按 label space 查询

PREFIX aat: <https://micheng.dev/ns/asciidoc-abundant-tree#>

SELECT ?resource ?headline ?role ?path ?line WHERE {
  VALUES ?label { "resource-id" }
  {
    ?resource aat:addressLabel ?label .
  } UNION {
    ?resource aat:generatedAddressLabel ?label .
  } UNION {
    ?resource aat:headline ?label .
  }
  ?resource aat:headline ?headline ;
            aat:relativePath ?path ;
            aat:headingLine ?line .
  OPTIONAL { ?resource aat:role ?role . }
}

41. 按角色查询

PREFIX aat: <https://micheng.dev/ns/asciidoc-abundant-tree#>

SELECT ?resource ?headline WHERE {
  ?resource aat:role "image-region" ;
            aat:headline ?headline .
}

42. 按关系查询证据

PREFIX aat: <https://micheng.dev/ns/asciidoc-abundant-tree#>
PREFIX rel: <https://micheng.dev/ns/asciidoc-relation#>

SELECT ?evidence ?headline ?role WHERE {
  ?event aat:addressLabel "event-id" .
  ?evidence rel:evidence-for ?event ;
            aat:headline ?headline ;
            aat:role ?role .
}

43. 按对象查询图片区域

PREFIX aat: <https://micheng.dev/ns/asciidoc-abundant-tree#>
PREFIX rel: <https://micheng.dev/ns/asciidoc-relation#>

SELECT ?region ?headline ?locator WHERE {
  ?object aat:addressLabel "object-id" .
  ?region aat:role "image-region" ;
          rel:features ?object ;
          aat:headline ?headline ;
          aat:image-locator ?locator .
}

查询模板需要结合项目的 role、rel 和字段词表使用。模板自身不替项目完成本体设计。

Appendix C: 附录 C:审查清单速查

44. 节点

  • 节点是否服务独立动作。

  • 节点是否有稳定身份。

  • 节点是否有 role。

  • 节点是否能查询和回源。

45. 字段

  • 字段是否服务消费动作。

  • 字段落位是否正确。

  • 字段是否有取值规则。

  • 字段是否能被查询或校验。

46. 关系

  • rel 是否有明确 source role 和 target role。

  • rel 是否改变查询路径。

  • 边字段是否描述关系声明。

  • 普通参见是否被错误升级。

47. Payload

  • payload 是否承载复杂结构。

  • payload 是否有 format 和 schema。

  • payload 是否能回源。

  • payload 是否被普通字段污染。

48. 查询与展示

  • 查询结果是否带资源身份。

  • 查询结果是否带 source coordinate。

  • 展示面是否能打开资源。

  • 错误是否能回到源表面。

术语表

原始资料

被建模前的资料来源,例如 PDF、网页、图片、音频、视频、日志、代码文件、模型输出和人工标注。

ADOC 源表面

人或模型阅读原始资料后写出的结构化 AsciiDoc 文档表面。它同时承担阅读、版本管理、结构投影、查询和回源维护职责。

资源节点

被系统独立命名、查询、引用、验证、回源或维护的对象。

可消费证据资源

能被读者、模型、前端、QA 或 reviewer 使用的证据单位。它可以是标题文本切片、图片区域、视频片段、音频 cue、PDF quote 或外部 selector。

资源证据图

从源表面投影出的资源图。它服务 RAG 证据消费、关系查询、媒体定位和回源维护,不等同于以事实三元组为主要消费对象的领域知识图谱。

异构资源图

由不同模态和来源的资源节点、字段、关系、payload、locator 和查询表面组成的图模型。

消费者动作

读者、程序、查询器、校验器、前端、LLM tool、QA 或 reviewer 对模型执行的动作。

字段

进入公共模型的可观察事实,服务查询、展示、校验、排序、过滤、报告或审计。

payload

保存复杂定位、嵌套结构、原始模型输出或边证据的载荷。

locator

打开或定位原始材料内部位置的数据结构。

source coordinate

回到源表面的路径、行号、列号、payload span 或关系 occurrence 坐标。

mechanical resource IRI

投影图中承担资源结构身份的机械 IRI。它不同于标题文本、stable ID、generated label 和其它查询 label。

address label

资源的可查询地址标签。标题文本、显式 ID、生成地址、local target alias 和外部编号都可以作为查询入口。

stable ID

作者为长期引用、查询和资源块渲染声明的 address label。它是源表面的维护承诺;投影图中的资源身份由 mechanical resource IRI 承担。

role

资源节点身份字段。

rel

xref 边上的关系谓词。

edge evidence

描述一次关系声明来源、字段、raw 和回源位置的边证据。

源表面

作者和维护者编辑的结构化文本表面。

图表面

从源表面投影出的可查询图数据表面。

报告表面

把查询、校验或审查结果组织成任务视图的表面。

展示表面

面向读者、演示者或业务使用者的资源卡、媒体片段和证据链表面。

image asset

整张图片资源节点。

image region

图片内部可独立消费的区域资源节点。

video asset

整段视频资源节点。

video segment

视频内部可独立消费的时间片资源节点。

transcript cue

声音或文本中的短线索资源节点。

SPARQL

面向 RDF 1.2 图的查询语言,本书用它表达资源节点、字段、关系和 locator 的查询模式。

RAG

检索增强生成;本书把它拆成模糊召回、图查询、答案组织和资源渲染等可观察动作。

向量召回

使用嵌入向量返回语义相近候选资源的检索阶段。

SHACL

面向 RDF 1.2 图的 shape 校验语言,本书用它表达字段、关系和节点质量约束。

schema

下游消费者用于检查字段或 payload 内部结构的约束。

resource registry

面向展示层的资源索引,保存 address label、role、headline、source coordinate、media path 和 locator 等渲染所需事实。

source-aware report

带有 source coordinate 的查询、校验或审查报告。

resource block

模型回答中引用 address label 并由前端渲染为资源卡的块。

模糊召回

使用向量、关键词、BM25、全文搜索或混合检索返回候选资源入口的阶段。

符号扩展

使用 SPARQL 或等价图查询沿字段、关系、父子结构、locator 和 source coordinate 展开证据链的阶段。

参考坐标

索引

资源节点 可消费证据资源 ADOC 源表面 资源证据图 消费者动作 字段 payload locator source coordinate address label mechanical resource IRI role rel image-region video-segment SPARQL RAG GraphRAG 模糊召回 符号扩展 source-aware report resource block

本索引 section 是书后索引入口。正文中的索引词可继续扩展本页。