◈本体论工程手册
附录

附录 B · 选型速查表

八张表:判断、选型、清单、纠偏

这一页是给「已经决定要做,需要立刻选点什么」的人用的。所有结论来自前面的章节,这里只保留可查的表。

A. 三十秒判断该不该做

依次回答,遇到「否」就停:

#问题若「否」章
1有没有一个具体的、曾经做错的报表或事故?别做。 先去修那个问题12
2这个错误能否用一条可执行约束描述?问题不在语义层,在流程或代码2
3有没有一个业务侧的人能拍板「这条不合规」?别做。 没有裁决者,约束不会被遵守13
4改一条约束,会不会有人被通知/有构建失败?没有消费者,做了没人用5
5上线后每月有 0.2 人月吗?只做 A 形态(纯生成物 + 校验),别建平台13
6三年后这个模型还会被改吗?它是文档,不是资产12

B. 场景 → 最小可行栈

你的场景最小栈不要做人月(首年)
指标口径不一,报表对不上LinkML/纯 YAML 源 + sqltablegen 生成建表 + SHACL 校验指标定义 + 一张对账视图不要上图库、不要上推理机6–10
跨系统实体对不齐(客户/供应商/物料)源模型 + 实体解析脚本 + sh:class 抓悬空引用 + 每周对账不要一开始就做全公司主数据8–14
模型要发起写操作(Agent/自动化)SHACL 前置条件 + 动作网关 + 写回 + 审计五字段不要把校验交给 LLM12–20
已有数仓,想「语义化」但不搬数据LinkML → YARRRML → R2RML → OBDA(Ontop)(未验证,需 spike)不要先建 ETL 把数据搬进图库15–25
领域术语混乱(同义词、译名)SKOS 词表 + 归一脚本进 CI + 枚举约束不要用 OWL 表达同义词3–6
只是想「让模型更懂业务」先别做本体。 上向量 RAG,加元数据过滤不要用本体解决召回问题0–2

C. 语言怎么选

判据选理由
需要拒绝非法数据SHACL封闭世界、有违规报告、有退出码。唯一能进 CI 闸门的
需要推出新事实(分类、传递闭包)OWL 2 EL/RL只在构建期用;RL 无 minCardinality(第 11 章实测)
需要一份源生成多种产物LinkML(或同类 YAML 驱动)41 个生成器为证(第 11 章)
团队是 SQL/BI 背景、不想学 RDF属性图 + 约束 DSL,或直接在数仓里做断言学习成本决定能不能活下去
只需要术语与同义词SKOS别用 OWL 表达「同义词」,那是词表不是本体
需要与 Web/前端集成JSON-LD事实标准

默认可执行方案:RDFS 骨架 + SHACL 约束 + SPARQL 查询。这三件覆盖 80% 的实际需求,且都是 W3C 标准。

D. 存储怎么选

数据量 / 场景选备注
< 100 万三元组、分析为主文件(Turtle)+ rdflib/内存第 11 章实测 16 万三元组校验 1.4 秒,文件足够
需要事务、版本、多用户TerminusDB / 图库看是否需要 git 式版本语义
已有关系库、不想搬OBDA(Ontop)映射错了不报错,必须配对账
高并发查询、RDF 原生Oxigraph / Jena TDB2 / GraphDB先压测再定
只需要「图的样子」给业务看任意图库 + 只读视图别让它成为第二个真实来源

一条硬规矩:不要在项目第一年引入第二个真实来源。模型是文件,视图是派生的,源系统仍是源系统。

E. 校验与推理工具

用途工具注意
SHACL 校验pySHACL(Python)、Jena SHACL(Java)inference 合法值是 "owlrl",不是 "rl"
OWL 推理(大规模分类)ELK、Konclude、HermiTELK 快但不支持全部构造;Konclude 自陈可能有 bug
OWL RL 规则推理owlrl(Python)、Jena rules闭包膨胀 2.1–2.3 倍,别放写入路径
本体质量检查ROBOT(生物医学生态,通用)、OOPS!ROBOT 的 report 可当 lint
CI 集成pySHACL + 退出码关键是非零退出码,不是输出格式
文档生成WIDOCO、pyLODE别用文档替代校验

F. 按任务挑工具(从 78 个项目里)

你要做的事先看这几个分级
起一个能跑的最小模型LinkML、rdflib、pySHACLS/A
写约束并进 CIpySHACL、Jena、SHACL PlayS/A
生成建表/文档/APILinkML(41 个生成器)、ROBOTS/A
从关系库虚拟出图Ontop(OBDA)A
需要图库Oxigraph、TerminusDB、FalkorDBA/B
借现成词表Schema.org、FIBO、QUDT、SKOS 词表S/A
给 Agent 做记忆/上下文mem0、cognee、graphitiA/B(注意:都不提供约束)
做 GraphRAGmicrosoft/graphrag、LightRAGB(是邻居,不是本体)
想做「Palantir 式平台」那 11 个平台项目,多数 2026 年新建C(观察,勿生产依赖)

完整分级与理由见第 8 章七个小节。

G. 上线前检查清单

打勾之前不要宣布「上线」:

  • [ ] 有 20 条 competency question,且每条能被回答
  • [ ] 约束有非零退出码,接进了 CI
  • [ ] 违规分三档严重级别(阻断/告警/记录)
  • [ ] 豁免带负责人与到期日,到期会升级给人(不是变红等人改)
  • [ ] 有一个动作会因为约束失败而被拒绝,且拒绝原因带「找谁」
  • [ ] 有一张每周对账表,输出是工单而不是报表
  • [ ] 变更能算出影响面(表、报表、API、下游模型)
  • [ ] 新增必填字段走两步(先可选、补数据、再必填)
  • [ ] 有明确的领域裁决者,且他知道自己签什么
  • [ ] 有稳态预算(人月),不是只有首年预算
  • [ ] 模型源在版本控制里,有评审记录
  • [ ] 有一个人能在原作者离职后改它(这条最容易被跳过)

H. 三个常见错误,一句话纠偏

你正在做的事纠偏
用 OWL 做数据校验,期待它报错换 SHACL。OWL 在开放世界下永远不会说「缺了」
把整个模型塞进 prompt 让模型遵守只塞当前任务相关的 5–15 条做提示,真正的拦截放在工具侧
用 LLM 判断数据对不对用校验器判断,用 LLM 解释结果
第一年就引入图数据库 + 推理机先用文件 + 校验跑到 100 万三元组,再评估要不要换
用「模型类数量」汇报进展换成「拦截的坏数据条数」和「口径争议关闭时间」
把本体当 AI 项目立项换成治理语言:口径统一、坏数据拦截、变更可审计

一句话

如果你只从这本手册带走一张表,带走 A 表。 六个问题里有一个「否」,剩下的所有选型都是浪费。