本体设计
🧬 本体设计 · 本体层
Section titled “🧬 本体设计 · 本体层”定位:本体(Ontology)是让 AI 理解业务的语义层——把「业务世界长什么样」(概念、关系、口径规则)写下来,让模型不靠通识猜、按业务真相推理。本体 = TBox(概念)+ ABox(事实)。
📎 来源:实践分享第三章 + 好 Skill 与 CLI/CI 设计指南。本页是概览,深入见两篇子文章。
📐 深入 → [设计指南/本体设计/TBox] · [设计指南/本体设计/ABox] · [设计指南/本体设计/本体宽表映射设计]
一、为什么要建本体:模型会「飘」
Section titled “一、为什么要建本体:模型会「飘」”同一个问题问两次,口径常不一样:
| 飘 | Round 1 | Round 2 |
|---|---|---|
| 含税口径 | 含税 ¥2.4 亿 | 不含税 ¥2.12 亿 |
| 单方分母 | ÷建筑面积 ¥4250 | ÷可售面积 ¥5600 |
| 父子科目 | 只加末级 ¥2.4 亿 | 父子一起加 ¥4.8 亿 |
每一次「飘」都是一次口径没对齐——本体就是把这些规则一条条钉死。
二、本体 = TBox + ABox
Section titled “二、本体 = TBox + ABox”来自描述逻辑 K = (TBox, ABox),就这两层,没有第三层:
| 设计指南/本体设计/TBox · 术语层 | 设计指南/本体设计/ABox · 断言层 | |
|---|---|---|
| 是什么 | Schema / 数据模型:有哪些类、属性、关系、约束 | 实例 / 业务主数据:真实事实与关联 |
| 回答 | 这个领域有哪些概念 | 现实里具体有哪些东西 |
| 稳定性 | 稳定(像字典) | 动态(像流水) |
| 例 | 成本合同类有签约金额/含税/结算状态;规则:结算=签约+补差 | 「HT-2026-018」签 2.4 亿、属深圳湾一号、挂土建科目 |
| 支撑能力 | L1 事实查询 / L2 多维对比 | L3 归因 / L4 决策建议 |
三、本体 ≠ 宽表(关键澄清)
Section titled “三、本体 ≠ 宽表(关键澄清)”很容易把「本体」和「宽表」划等号,这是错的。两者是不同的东西、不同的职责:
| 本体(Ontology) | 宽表(Wide Table) | |
|---|---|---|
| 是什么 | 语义层——让 AI 理解业务:概念、关系、口径规则 | 物理查询手段之一——把数据星型化拍平,便于取数 |
| 解决的问题 | AI 看懂业务(口径、归因、约束) | 数据怎么查得快 |
| 稳定性 | 随业务概念变,慢 | 随建模/性能变 |
| 谁离不开谁 | 本体可以不依赖宽表 | 宽表只是本体落到执行时的一种后端 |
三条要点:
-
本体是「理解」,宽表是「查询」。本体回答「这个数是什么口径、和谁有关、能不能这么算」;宽表只回答「这个数存在哪、怎么 SELECT」。把口径规则塞进宽表,换个查询后端就丢了;写进本体,它跟着语义走。
-
本体可以对接宽表,也可以对接 API。本体是物理无关的语义层——它下面接什么执行底座由场景决定:
- 简单查询(取一条确定数据,端点固定)→ 本体/CLI 对接 API
- 复杂查询(多维组合、下钻归因)→ 本体/CLI 对接 宽表
cost-query 演进就是实证:V1 = 本体 + API(OBDA,多步 API 编排),V2 = 本体 + 宽表(DSL→SQL 直查星型宽表)。换的是执行底座,本体作为概念层一直在。
-
宽表会把关系拍平,本体(尤其 ABox)再把关系显式记回来。归因要沿「共振/替代/父子」关系下钻,这些关系在宽表里是丢失的,得靠 设计指南/本体设计/ABox 重新建模。
一句话:本体管「业务真相」,宽表/API 管「怎么把数取出来」。 别让查询手段绑架了语义。
📐 那两者具体怎么对齐? —— 类落到哪张 cube、维度/度量落到哪些列、约束怎么编译成 WHERE、被宽表拍平的关系怎么用 ABox 记回:见 设计指南/本体设计/本体宽表映射设计。
四、何时只建 TBox,何时上 ABox
Section titled “四、何时只建 TBox,何时上 ABox”| 能力 | 建到哪 | 对接 |
|---|---|---|
| L1 事实查询 / L2 多维对比 | 只建 TBox 就够 | 简单 → CLI 接 API;多维 → CLI 接宽表 |
| L3 归因分析 / L4 决策建议 | 才需 ABox(沿共振/替代关系下钻) | CLI 接宽表 + ABox 关系图 |
ABox 装的是「这个项目具体长什么样、和谁有关」。没有它,AI 只会查数,不会归因——像没去过现场的实习生。
五、护栏:本体即代码
Section titled “五、护栏:本体即代码”把业务铁律写成 defaultFilters,引擎自动注入 WHERE,用户无感(详见 设计指南/本体设计/TBox):
🐛 货值三倍累加 bug——同一笔货值在 Level=1/2/3 三层各存一份等额金额:AI 直接 SUM ... WHERE IsBenchmark=1 → 8490 万(语法对、错 3 倍);本体自动补 AND Level=3 → 2830 万(口径对)。
护栏不是枷锁,是默认安全值——业务铁律写在本体里,模型再厉害也绕不过。
附:本体 vs SKILL.md 正文渐进披露
Section titled “附:本体 vs SKILL.md 正文渐进披露”本体是「领域知识怎么建模」;SKILL.md 正文是「这些知识怎么按需喂给 AI」——正文只放决策所需的最小信息,大段字典/示例外置 reference(见 设计指南/Skill设计 三级加载)。两者配合,但不是一回事。
- TBox 深入 → 设计指南/本体设计/TBox;ABox 深入 → 设计指南/本体设计/ABox
- 本体怎么落到物理宽表 → 设计指南/本体设计/本体宽表映射设计
- DSL 编译与三指令 → 设计指南/CLI设计/CLI设计规范;问数工程化 → 场景指南/问数