# 数据优先本体论：世界模型在数据中，而非权重里

**作者：** 黎展波\
**单位：** DaoQL 项目\
**联系方式：** <zhanbo.lee@hotmail.com>\
**日期：** 2026 年 5 月（修订版）

***

## 摘要

大语言模型的神经网络权重被默认为编码了世界模型。本文论证这一假设在需要精确性、可审计性和实时更新的场景中存在结构性局限，指出四种危机：幻觉、知识冻结、不可解释性和不可修改性。我们提出**数据优先本体论**（Data-First Ontology），主张世界模型应以六种显式原语——实体（Being）、定义（Def）、类型（Type）、关系（Relation）、合约（Contract）和版本（Version）——存在，Def 与 Type 协作构成实体的完整行为。

本文的主要贡献包括：（1）按 KRR 发展史组织的学术框架，论证显式世界模型的历史必然性；（2）六种本体论原语的严格形式化定义及其良构性约束，包含对自举一致性和 Contract 可终止性的正式处理；（3）隐式与显式世界模型的八维形式化对比；（4）四种 LLM 结构性危机的系统定性分析；（5）DaoQL-Edu 教学版的实现与性能验证，以及在五个不同领域（医疗、金融、供应链、法规、定价）的反事实一致性实验初步结果。

本文明确区分已验证的工程主张与尚待大规模验证的理论框架，将整体定位界定为：**提出并初步验证了一种显式世界模型存储的设计框架**，而非宣告范式革命。

**关键词：** 知识表示与推理；世界模型；本体论；大语言模型；数据结构；数据优先；显式知识表示；神经-符号 AI

***

## 第一章 引言：KRR 发展史与 LLM 时代的挑战

### 1.1 奠基：从亚里士多德到图灵

"知识"是什么？它如何被表示、操作与推理？这一问题并非起源于计算机科学，而是贯穿了人类思想史的数千年演进。

亚里士多德的三段论（公元前 4 世纪）奠定了形式推理的基础：给定"所有人皆有死"与"苏格拉底是人"，可推出"苏格拉底有死"。这是人类历史上第一次将推理过程从内容中抽离，以纯粹的形式结构加以刻画。亚里士多德的范畴论（Categories）试图对世界中存在的事物进行系统性分类，这正是本体论（ontology）的最早形态。

莱布尼茨的通用语言梦（17 世纪）将亚里士多德的形式化推进到算术化的边缘。他构想了一种"通用字符"（Characteristica Universalis），将所有概念编码为数字，将所有推理化归为计算。

布尔代数（1854 年）将逻辑运算代数化。弗雷格的概念文字（Begriffsschrift，1879 年）引入量词（∀∃）和谓词，使"所有 X 如果满足 P(X) 则满足 Q(X)"这类语句得以形式表达，直接孕育了一阶谓词逻辑——现代知识表示的骨干语言。

哥德尔不完备定理（1931 年）揭示了形式系统的内在限制：任何足够强大的一致形式系统必然存在既不能被证明也不能被证伪的命题，对"知识能否被完全形式化"这一问题给出了深刻回答。图灵机（1936 年）将"计算"概念化为可操作的抽象机器，为此后所有知识处理系统提供了理论基底。

### 1.2 符号主义纲领确立（1950—1969）

1956 年达特茅斯会议标志着人工智能作为独立学科的诞生，确立了"符号主义"纲领：智能的本质是对符号的操作，知识可以且应当以显式的符号结构表示。

McCarthy 提出的建议采纳器（Advice Taker，1959 年）\[33] 是这一纲领最清晰的宣言：

*   知识以一阶谓词逻辑公式的形式**显式存储**；
*   推理以定理证明的方式**显式执行**；
*   系统可以接受人类用逻辑语句表达的"建议"，并据此**局部更新**行为。

McCarthy 的愿景是：世界模型应该在数据（逻辑公式）中，而非在程序（硬编码逻辑）里。本文的核心主张，正是这一愿景在现代数据系统语境下的延续与发展——但需要指出，65 年间涌现的大量工作已经在不同维度上实践了这一愿景（详见附录及第一章 1.5 节），本文的贡献在于将其具体化为一套针对 LLM 时代的、经过工程验证的设计框架。

Newell 与 Simon 的通用问题求解器（GPS，1957 年）\[34] 将推理形式化为状态空间搜索。语义网络（Quillian，1968 年）\[38] 为知识的图结构表示提供了早期范本，其核心直觉——知识是关系，关系是一等对象——直接影响了本文的 Relation 原语设计。

### 1.3 专家系统与知识工程（1970—1988）

1970 年代，符号主义 AI 在狭窄领域内取得工程成功。MYCIN（1972 年，斯坦福）将专家系统推广到医疗诊断领域，引入置信因子处理不确定性，其推理过程可追溯——这与今日大语言模型的黑箱性质形成了鲜明对比，也是本文重点关注的设计特性。

框架理论（Minsky，1974 年）\[35] 将知识组织为结构化的"框架"，引入继承机制——子框架继承父框架的槽值，并可覆盖默认值。这与本文的 Def/Type 协作机制存在深刻的结构共鸣，但二者存在重要差异：本文的 Type 是运行时可动态分派的，而非静态 Schema 定义（详见 2.3 节）。

专家系统时代的核心遗产——显式知识表示的可解释性与可修改性——在 KRR 学科中延续至今，也是本文的核心设计目标。其主要瓶颈在于知识获取成本高昂，本文在 6.2 节讨论 LLM 辅助知识蒸馏作为缓解路径。

### 1.4 KRR 作为独立学科的确立（1989—2015）

1989 年，第一届知识表示国际会议（KR'89）在波士顿召开。Levesque & Brachman 的知识表示假说 \[36] 论断：任何在复杂任务上表现出智能行为的系统，必然隐含地或显式地利用了关于世界的结构化描述。

描述逻辑（Description Logics，1980 年代）为知识库提供了严格的逻辑基础，OWL 正是基于此构建。Pearl 的贝叶斯网络 \[37]（2011 年图灵奖）为不确定性的显式表示与推理奠定基础，因果推理问题至今仍是 LLM 的核心挑战之一。

知识图谱（Freebase 2007、DBpedia 2007、谷歌知识图谱 2012）将 KRR 思想规模化，以显式结构存储人类知识的巨大片段。这一发展路径为本文提供了重要的先例：显式结构可以大规模构建和使用。

### 1.5 LLM 时代的挑战与机遇

2017 年 Transformer 架构、2018 年 BERT/GPT、2022 年 ChatGPT 的现象级成功，使 LLM 成为当代 AI 的主导范式。LLM 在无需明确知识工程的情况下展现出广泛的推理能力，似乎绕过了专家系统时代的知识获取瓶颈。

然而，2022 年 Dagstuhl 研讨会逐渐形成共识：**LLM 是强大的推理引擎，但作为世界模型的知识仓库，存在深刻的结构性局限**。这些局限与 McCarthy 1959 年的愿景之间，存在根本性张力：

| McCarthy 的愿景（1959）   | 现代 LLM（2022—2025） |
| -------------------- | ----------------- |
| 知识以显式逻辑公式存储，人类可读     | 知识以隐式权重分布存储，人类不可读 |
| 可接受逻辑语句形式的"建议"进行局部更新 | 更新需要微调，影响全局权重     |
| 推理过程可追溯与审计           | 推理过程不透明（黑箱）       |
| 知识一致性可形式化验证          | 矛盾知识在权重中共存，随机激活   |

**与已有工作的定位关系。** 需要明确的是，"显式世界模型"的设计理念并非本文首创。Datomic \[11] 已实现"时间作为本体"和"schema 即数据"；TypeDB \[17] 支持类型继承与约束检查；GraphRAG \[20]、MemGPT \[23] 等近期工作探索了结构化存储与 LLM 协作的范式；神经-符号 AI \[25] 已系统论证了符号端与神经端分工的必要性。

本文的贡献不在于首次提出这一方向，而在于：（1）将六种本体论原语系统化为一个自足的形式框架，并给出良构性约束的正式处理；（2）在工程层面实证"多模态统一存储"的可行性与性能；（3）在 Def/Type 协作机制上提出不同于 TypeDB 静态继承的动态分派设计；（4）提供初步的反事实一致性实验证据。

### 1.6 本文立场与贡献

基于上述分析，本文提出**数据优先本体论**（Data-First Ontology）：在需要精确性、可审计性和实时更新的场景中，世界模型应由六种原语构建：

*   **实体（Being）**：具有身份、状态、历史和行为的存在单元；
*   **定义（Def）**：对实体之结构、约束、行为的规范性描述；
*   **类型（Type）**：与 Def 协作的层级特化机制，支持动态分派；
*   **关系（Relation）**：实体之间的有向或无向连接；
*   **合约（Contract）**：嵌入写入路径的可执行行为规则；
*   **版本（Version）**：实体历史状态的不可变快照链。

**本文的核心定位是：提出并初步验证一种显式世界模型存储的设计框架**，为 LLM 作为推理引擎、显式结构作为知识仓库的混合架构提供工程基础。我们不宣称这是唯一正确的方向，也不宣称已解决所有问题（局限性在 6.4 节集中讨论）。

**本文贡献如下：**

1.  按 KRR 发展史组织的学术框架，明确本文在 KRR 传统中的定位（第一章）。
2.  六种本体论原语的严格形式化定义，包含良构性约束、自举一致性证明和 Contract 可终止性保证（第二章）。
3.  隐式与显式世界模型的八维形式化对比分析（第三章）。
4.  四种 LLM 结构性危机的系统定性分析（第四章）。
5.  DaoQL-Edu 的实现、规范化性能验证，及反事实一致性实验初步结果（第五章）。
6.  研究议程，包含符号接地、完备性、演化一致性等开放问题（第六章）。

***

## 第二章 数据优先本体论：六种显式原语

### 2.1 核心主张与哲学定位

数据优先本体论建立在一个核心主张之上：

> **计算系统中的世界模型应以显式数据结构的形式存在，大语言模型作为查询与推理引擎操作这一结构，而非作为知识仓库存储这一结构。**

这一主张包含三个命题：

**命题一（本体论）：** 计算世界模型中的基本存在单元是实体（Being）：一种具有身份、状态、历史、行为以及与其他实体关系的存在单元。

需要说明的是，本文的"本体论"主张是**计算意义上的**，即关于如何组织计算系统中的知识表示，而非关于形而上学意义上世界的终极结构。"世界由存在组成"是一种设计隐喻，而非与 Wittgenstein"世界是事实的总和"或过程哲学等哲学立场的正面竞争——这些哲学问题超出了本文的范围。

**命题二（认识论）：** 知识是实体/定义/关系的结构，这一结构在计算意义上构成可操作的世界模型。Type 提供层级特化框架，与 Def 共同构成完整的知识表示。

**命题三（方法论）：** 推理不是从权重中提取统计模式，而是对显式结构的遍历与变换。大语言模型是这一过程的加速器，而非过程内容的仓库。

### 2.2 实体（Being）

实体是数据优先本体论的基本存在单元。形式化地，一个实体 `$b$` 是一个四元组：

```math
b = (id, \text{core}, \text{ext}, \text{history})
```

其中：

*   `$id \in \mathcal{ID}$` 是唯一的、不可变的标识符（UUID v4）；
*   `$\text{core}$` 是固定大小的结构，包含基本属性（名称、def 引用、创建时间戳、可选 type 引用等）；
*   `$\text{ext}$` 是可扩展的键值映射，包含该实体的 Def 所规定的属性；
*   `$\text{history} = [v_1, v_2, \ldots, v_n]$` 是不可变的仅追加版本链，`$n \geq 1$`。

**良构性约束（Well-formedness Constraints）：**

一个实体 `$b$` 是良构的，当且仅当满足以下条件：

1.  **Def 一致性：** `$b.\text{core}.\text{def} \in \mathcal{D}$`，且 `$b.\text{ext}$` 中的所有键均为 `$b.\text{core}.\text{def}.\text{fields}$` 中声明的字段；
2.  **类型兼容性：** 若 `$b.\text{core}.\text{type} \neq \emptyset$`，则该 type 的根祖先 Def 必须与 `$b.\text{core}.\text{def}$` 相同；
3.  **历史非空性：** `$|b.\text{history}| \geq 1$`（实体创建时即生成初始版本 `$v_1$`）；
4.  **版本一致性：** `$\forall i \geq 2$`，`$v_i.\text{prev\_hash} = \text{Hash}(v_{i-1})$`；
5.  **约束满足：** `$b.\text{ext}$` 满足 `$b.\text{core}.\text{def}.\text{constraints}$` 中所有谓词，以及 `$b.\text{core}.\text{type}$`（若存在）的所有约束。

**创建语义：** 实体不是从类"实例化"出来的；它是被写入存在的。创建一个实体就是将其写入存储系统。创建与持久化之间没有区别。

### 2.3 定义（Def）与类型（Type）的协作

Def 与 Type 的协作是本设计框架的核心特征，也是与 TypeDB 等系统的主要差异所在。

#### 2.3.1 定义（Def）

**定义（Def）** 回答"这是什么"——规定实体的基础结构与核心行为。形式化地，一个 Def `$d$` 是一个六元组：

```math
d = (name, \text{fields}, \text{constraints}, \text{contracts}, \text{fsm}, \text{rel\_decls})
```

其中：

*   `$name$` 是唯一的定义标识符；
*   `$\text{fields}$` 是带类型的字段定义集合；
*   `$\text{constraints}$` 是不变谓词集合（如 `$\text{age} \geq 0$`，`$\text{email}\ \text{MATCHES}\ \text{regex}$`）；
*   `$\text{contracts}$` 是可执行钩子集合（见 2.5 节）；
*   `$\text{fsm}$` 是有限状态机，定义该 Def 所辖实体的合法状态转换；
*   `$\text{rel\_decls}$` 是关系类型声明集合。

**自举一致性（Bootstrapping Consistency）：**

Def 本身也是实体，这引出了自指问题：Def 患者 是一个实体，其 `$\text{core}.\text{def}$` 指向 DAO\_DEF（"定义之定义"）。那么 DAO\_DEF 自身的 def 是谁？

本文通过**公理层级**（axiomatic stratum）解决此问题，类似于类型论中的宇宙层级（universe hierarchy）：

*   **层级 0（公理层）：** DAO\_DEF 是一个自指公理实体，其 `$\text{core}.\text{def} := \text{DAO\_DEF}$`。此自指被显式声明为公理，不参与一般的良构性检查。存储引擎对 DAO\_DEF 的 id 进行硬编码（固定 UUID），启动时自动写入，无需外部创建。
*   **层级 1（元层）：** 所有 Def 实例（如"患者"、"药物"）的 def 指向 DAO\_DEF。
*   **层级 2（对象层）：** 所有普通 Being 的 def 指向层级 1 的某个 Def。

这一三层结构保证了系统无限上溯链的截断，类似于 ZFC 集合论通过正则公理截断无限成员链。**此结构不产生逻辑悖论**，因为 DAO\_DEF 的自指是受控的公理声明，而非无约束的集合成员关系。

#### 2.3.2 类型（Type）

**类型（Type）** 回答"这属于哪一类，因此具有什么额外行为"——是 Def 的层级特化机制。形式化地，一个 Type `$t$` 是一个六元组：

```math
t = (name, \text{parent}, \text{path}, \text{contracts}, \text{constraints}, \text{display})
```

其中：

*   `$name$` 是类型名称（如"华为手机"）；
*   `$\text{parent}$` 是父类型（如"手机"），形成继承链；
*   `$\text{path}$` 是从根到该节点的完整路径（如"数码产品/手机/华为手机"）；
*   `$\text{contracts}$` 是该类型特有的可执行钩子，可扩展或覆盖 Def 的合约；
*   `$\text{constraints}$` 是该类型特有的约束（只能收紧，不能放宽 Def 的约束）；
*   `$\text{display}$` 是该类型特有的展示属性（如图标、颜色）。

**与 TypeDB 的关键差异：** TypeDB 的类型继承是静态 Schema 定义——类型在系统启动时确定，运行时不可变更。本设计中的 Type 支持**运行时动态分派**：一个 Being 的 type 字段可以在运行时修改（通过 `assign_type` 操作，受约束检查约束），新的 Type 行为立即生效，无需重建索引或重启系统。这一特性对于需要动态分类的场景（如产品重新归类、患者状态重分类）至关重要。

**Def 与 Type 的协作示例：**

    Def "Product" = {
      fields: [name, price, brand],
      contracts: [check_price_positive]
    }

    Type "手机" (parent = "数码产品") = {
      contracts: [check_has_imei]
    }

    Type "华为手机" (parent = "手机") = {
      contracts: [check_harmony_os_support],
      constraints: [brand == "华为"]
    }

    Being "Mate 60" (def = "Product", type = "数码产品/手机/华为手机")
    → 完整行为 = Def(Product) + Type(手机) + Type(华为手机)
    → 执行 check_price_positive + check_has_imei + check_harmony_os_support

Type 本身是可选的——一个 Being 可以没有 Type（仅使用 Def 的基础行为），但不能没有 Def。

### 2.4 关系（Relation）

关系是实体之间的带类型连接，是知识网络的边。形式化地，一个关系 `$r$` 是一个五元组：

```math
r = (type, src, dst, \text{direction}, \text{ext}, \text{window})
```

其中：

*   `$type$` 是关系类型（如"是首都"、"服用"、"禁忌使用"）；
*   `$src, dst \in \mathcal{ID}$` 是实体标识符，且 `$src \neq dst$`（禁止自环，除非显式声明）；
*   `$\text{direction} \in \{\text{有向}, \text{无向}\}$`；
*   `$\text{ext}$` 是可扩展的键值映射；
*   `$\text{window}$` 是可选的时效窗口 `$[t_{\text{start}}, t_{\text{end}}]$`，`$t_{\text{start}} < t_{\text{end}}$`。

关系是一等对象，可被查询、版本化和约束。关系类型本身由 `$\text{def} = \text{DAO\_RELATION}$` 定义，遵循同样的自举层级。

### 2.5 合约（Contract）

合约是嵌入存储引擎写入路径的可执行行为规则。形式化地，一个合约 `$c$` 是一个三元组：

```math
c = (\text{hook}, \text{source}, \text{ast})
```

其中：

*   `$\text{hook} \in \{\text{创建前}, \text{创建后}, \text{更新前}, \text{更新后}, \text{关联前}, \text{关联后}, \text{删除前}\}$`；
*   `$\text{source}$` 是合约的源代码（Rhai 函数）；
*   `$\text{ast}$` 是编译后的抽象语法树，缓存以提高性能。

**可终止性保证（Termination Guarantee）：**

Rhai 是图灵完备的脚本语言，原则上可能出现非终止情况。本框架通过以下机制保证 Contract 的可终止性：

1.  **燃料限制（Fuel Limit）：** 每个 Contract 执行实例被分配固定的"燃料"（操作步数上限，默认 10,000 步）。超出限制时，执行引擎抛出 `ContractFuelExhausted` 异常，写入操作被回滚。
2.  **禁止递归调用存储写入：** Contract 执行上下文中，禁止调用任何会触发新 Being/Relation 写入的 API，防止写入-合约-写入的递归链。只读查询 API 可用。
3.  **禁止外部 I/O：** Contract 执行沙箱中，网络调用、文件 I/O 被显式禁用，防止因外部依赖导致的挂起。
4.  **超时兜底：** 燃料限制之上，执行引擎设置硬超时（默认 50ms），由独立计时器线程强制中断。

在上述约束下，**每个 Contract 的执行是有界的、确定终止的**。代价是：复杂逻辑可能需要拆分为多个 Contract，或在应用层实现。

合约嵌入写入路径，无法被客户端应用绕过，因为它们在存储引擎内部执行，是写入路径的唯一入口。

### 2.6 版本（Version）

版本是时间作为本体论维度的具体实现。形式化地，一个版本 `$v$` 是一个四元组：

```math
v = (t, \text{state}, \text{prev\_hash}, \text{tx\_id})
```

其中：

*   `$t$` 是混合逻辑时间戳（HLC，Hybrid Logical Clock），兼顾物理时间与逻辑顺序；
*   `$\text{state}$` 是该版本时刻实体的完整状态；
*   `$\text{prev\_hash} = \text{SHA3-256}(\text{serialize}(v_{i-1}))$` 是前一版本的密码学哈希（初始版本 `$v_1$` 的 `$\text{prev\_hash} = \text{NULL}$`）；
*   `$\text{tx\_id}$` 将该版本链接到创建它的事务。

**并发写入的语义保证：** 在单节点环境中，WAL（Write-Ahead Log）保证写入的串行化，不存在并发版本冲突。在分布式环境中（V1 架构），采用**每分片单 leader 写入**策略：同一 Being 始终路由到同一分片的 leader 节点，由 leader 串行化写入，保证版本链的线性一致性（Linearizability）。跨分片事务目前不支持（这是一个已知局限，见 6.4 节）。

**时间的本体论地位：** 在传统系统中，时间是一个属性（`updated_at TIMESTAMP`）。在本设计中，时间是实体存在的内在维度——实体就是一个时间延展的存在，版本链 `$[v_1, v_2, \ldots, v_n]$` 不是附加于实体的审计轨迹，而是实体内在的历史人格。

### 2.7 理论框架小结：六原语与显式世界模型

六种原语共同构成一个自足的显式世界模型。形式化地：

```math
W_{\text{explicit}} = (\mathcal{B}, \mathcal{D}, \mathcal{T}, \mathcal{R}, \mathcal{C}, \mathcal{V})
```

其中 `$\mathcal{B}$` 为实体集，`$\mathcal{D}$` 为定义集，`$\mathcal{T}$` 为类型集，`$\mathcal{R}$` 为关系集，`$\mathcal{C}$` 为合约集，`$\mathcal{V}$` 为版本化函数。

**与 EAVT 数据模型的本体论差异：** Datomic 等 EAVT 系统记录"发生了什么"——一个 EAVT 事实是被动的命题记录（实体 E 在时刻 T 具有属性 A 的值 V）。本设计的六原语是"构造是什么"——一个 Being 是自治的存在单元：有身份（BeingId）、有本质定义（Def）、有特化分类（Type）、有社会关系（Relation）、有行为规则（Contract）、有历史人格（Version）。

EAVT 承诺"世界由事实组成"；本框架承诺"世界由存在组成"。这一差异不是工程权衡，而是设计哲学选择，其工程含义在于：六原语框架天然支持实体级别的操作语义（创建、演化、关联、合约执行），而 EAVT 的基本操作是事实级别的读写。

***

## 第三章 隐式与显式世界模型的形式化对比

### 3.1 什么是世界模型？

一个真正的世界模型至少应支持以下能力 \[9,10]：

| 能力              | 描述         | 示例                            |
| --------------- | ---------- | ----------------------------- |
| 事实（Facts）       | 关于实体的基本真实  | "巴黎是法国的首都"                    |
| 关系（Relations）   | 实体之间的带类型连接 | "巴黎 拥有地标 埃菲尔铁塔"               |
| 因果（Causality）   | 事件之间的定向影响  | "吸烟 导致 肺癌"                    |
| 规则（Rules）       | 条件性规定      | "胃溃疡患者避免使用阿司匹林"               |
| 概率（Probability） | 不确定性量化     | "八月伦敦下雨概率 = 0.35"             |
| 历史（History）     | 状态的时序演化    | "巴黎人口(2024)=216万；(2025)=220万" |
| 行为（Behavior）    | 状态依赖的动态    | "订单状态机：待处理→已付款→已发货"           |

### 3.2 隐式世界模型的形式化

形式化地，一个隐式世界模型是一个函数：

```math
f_\theta : \mathcal{X} \rightarrow \mathcal{Y}
```

其中 `$\mathcal{X}$` 是输入查询空间，`$\mathcal{Y}$` 是输出响应空间，`$\theta$` 是神经网络的冻结参数（`$|\theta| \in [10^9, 10^{12}]$`）。

知识以分布式表示形式存储："巴黎是法国首都"这一事实编码为数千乃至数百万参数上的激活模式，与相关概念的表示纠缠在一起。"拥有地标（HAS\_LANDMARK）"这一关系仅作为 token 序列之间的统计相关性存在。关于胃溃疡和阿司匹林的规则是统计规律性，可能被更强的相关性覆盖。

**后果：** 不存在"读取"特定事实、"修改"特定关系或"验证"特定规则的操作。唯一可用的操作是前向推理（`$f_\theta(x)$`）和微调（全局近似更新 `$\theta$`）。

### 3.3 多维对比分析

| 维度     | 隐式（`$f_\theta$`） | 显式（`$W_{\text{explicit}}$`） |
| ------ | ---------------- | --------------------------- |
| 可读性    | ❌ 无法提取特定事实       | ✅ `read(BeingId)` 返回精确状态    |
| 可修改性   | ❌ 微调影响整个模型       | ✅ 单一关系或事实更新                 |
| 可验证性   | ❌ 无推理痕迹          | ✅ 完整的查询执行轨迹                 |
| 可审计性   | ❌ 无法审计内部状态       | ✅ 版本链 = 不可变审计日志             |
| 可解释性   | ❌ 注意力权重不透明       | ✅ 类型、关系、合约人类可读              |
| 可演化性   | ❌ 需要重新训练         | ✅ 运行时模式演化（evolve）           |
| 可组合性   | ❌ 权重难以局部分解       | ✅ 子模型可被提取和共享                |
| 反事实一致性 | ❌ 关联之间的统计竞争      | ✅ 修改结构后的确定性求值               |

**重要说明：** 上表中显式模型的优势是**结构性的**，即源于设计框架本身，而非特定实现的工程优化。然而，显式模型也有固有劣势：（1）不擅长处理模糊查询和语义相似检索（需要向量引擎辅助）；（2）初始建模成本高于 LLM 直接使用；（3）不具备 LLM 的开放式生成能力。因此，两种模型的正确关系是**互补分工**，而非零和竞争。

### 3.4 显式世界模型上的操作语义

| 操作                          | 语义              | 示例                                            |
| --------------------------- | --------------- | --------------------------------------------- |
| `read(b)`                   | 通过标识符检索实体       | `read(巴黎)` → `{name: "巴黎", population: 220万}` |
| `relate(b₁, b₂, r)`         | 创建类型为 `$r$` 的关系 | `relate(巴黎, 法国, 是首都)`                         |
| `update(b, d, v)`           | 添加新版本           | `update(巴黎, 城市, {population: 221万})`          |
| `query(q)`                  | 评估结构化查询         | `query(实体(巴黎).关系().定义(是首都))`                  |
| `evolve(d, d')`             | 模式演化，附带迁移语义     | `evolve(城市, 城市_v2)`                           |
| `contract(b, hook, script)` | 附加可执行行为         | `contract(患者, 更新前, 溃疡检查)`                     |
| `assign_type(b, t)`         | 动态分配 Type       | `assign_type(Mate60, 华为手机)`                   |

**关键洞察：** 事实、关系、规则和行为都是一等对象，可以被独立地读取、修改、验证和审计。更新巴黎的人口不会影响柏林的人口——这一原子性在隐式模型中无法保证。

***

## 第四章 四种结构性危机的系统分析

### 4.1 分析框架：病因-症状-严重性-不可解决性

本章从四个维度审视每一种危机：病因（根本原因）、症状（实践表现）、严重性（不可接受影响的场景）、不可解决性（现有修补措施的局限）。

这四种危机并非独立的工程问题，而是**权重编码范式在缺乏显式结构操作语义时的系统性表现**。

### 4.2 危机一：幻觉——统计知识的确定性与世界的不一致性

**病因。** LLM 通过在概率分布中采样来生成文本，权重编码的是统计关联，而非逻辑真值。"巴黎是法国首都"这一知识作为统计关联分布于数十亿权重之中，不存储于任何特定位置。

**症状。** 当训练数据包含矛盾信息，或查询超出训练分布时，模型以高度自信输出看似合理但事实错误的陈述 \[3]。幻觉不是偶发的技术故障，而是统计语言模型的内在行为模式。

**严重性。** 在医疗决策、法律合规、金融分析等精确性要求极高的场景中，一次幻觉可能导致不可逆伤害。Ji 等人（2023）\[3] 的系统综述表明，即便是最先进的模型，在特定知识密集任务上仍存在可量化的幻觉率。

**不可解决性。** RAG \[4] 将外部文档注入上下文，但未改变模型的根本推理机制：模型仍通过统计采样生成答案。当注入文档与权重中的关联发生竞争时，模型没有原则性方法解决冲突。幻觉在 RAG 场景下依然存在，只是频率降低。微调可减少特定领域的幻觉，但无法消除权重编码范式的根本性张力。

**显式世界模型的对应能力。** "巴黎是法国首都"存储为具体的 Being-Relation-Being 三元组。查询结果是确定性的：要么存在该关系，要么不存在，不存在统计竞争的可能。

### 4.3 危机二：知识冻结——训练即封印

**病因。** 一旦训练完成，权重即被冻结。模型的世界模型是训练时刻的世界快照，知识更新与权重更新等价。

**症状。** 模型对训练截止日期之后发生的事件一无所知。即便是"今天是哪一天"这样的简单问题，模型也无法准确回答。

**严重性。** 在需要实时知识的场景中（金融市场、医疗指南更新、法规变化），知识冻结是致命的局限，知识时效性是这些场景的基本要求。

**不可解决性。** RAG 将知识管理责任转移给检索系统，但模型的根本世界模型——权重——未改变。微调的计算成本高昂，影响全局行为，且存在灾难性遗忘风险 \[6]（McCloskey & Cohen 的经典研究）。权重中的世界模型无法进行增量更新。

**显式世界模型的对应能力。** 更新巴黎的人口数据是一次 `update(巴黎, 城市, {population: 221万})` 操作，耗时微秒级，原子性保证，旧版本自动保留在版本链中。知识更新是局部的、即时的、可追溯的。

### 4.4 危机三：不可解释性——权重中无推理路径

**病因。** LLM 的推理发生在数十亿参数的高维激活空间中。注意力权重（attention weights）\[7] 仅提供粗略的事后可视化，不揭示模型为何相信某个特定事实，更无法提供完整的推理链。

**症状。** 如果一个医疗 LLM 推荐某种治疗方案，无法追溯从训练数据到推荐结果的路径。如果模型给出错误的法律建议，无法定位"错误的信念"在权重中的位置。

**严重性。** 欧盟 AI 法案（EU AI Act）要求高风险 AI 系统提供可解释的决策过程。LLM 的黑箱性质使其在医疗、法律、金融等场景面临根本性的合规障碍。

**不可解决性。** 可解释 AI（XAI）领域的 LIME、SHAP、注意力可视化等工作提供的是事后近似解释，而非真正的推理路径。统计关联 ≠ 逻辑因果。这种不透明性是知识分布于数十亿参数中的固有属性，而非当前可视化技术的临时局限。

**显式世界模型的对应能力。** 对"胃溃疡患者应避免哪些药物？"的推理是：

1.  将查询解析为结构化遍历：`实体(患者) → 关系(诊断患有) → Def(病症) → 筛选(name="胃溃疡") → 关系(禁忌使用) → Def(药物)`；
2.  对显式结构执行遍历；
3.  收集结果（禁忌药物清单）；
4.  使用 LLM 从结构化结果生成自然语言响应。

推理路径的每一步都是可检查、可审计、可重现的。

### 4.5 危机四：不可修改性——架构层面的抵抗

**病因。** 权重中的知识是全局耦合的："阿司匹林"的表示与"止痛"、"血液稀释"、"胃部刺激"以及无数其他概念的表示纠缠在一起。修改一处，影响全局。

**症状。** 纠正一个 LLM 中危险的错误陈述需要微调，而微调影响整个权重矩阵，可能在别处引入新的错误 \[8]。不存在"外科手术式"地移除或更新单一信念的机制。

**严重性。** 在需要快速响应知识错误的场景中（药物安全性更新、法规政策变化），不可修改性是不可接受的。一次危险的错误陈述可能在被检测到之前已服务数百万次查询。

**不可解决性。** 知识编辑技术（如 ROME \[8]、MEMIT）的研究表明：局部权重修改往往引入副作用，且已编辑知识在多步推理中的一致性无法保证。架构层面的全局耦合是不可修改性的根本原因。

**显式世界模型的对应能力。** 删除"阿司匹林可用于胃溃疡患者"这一错误关系，是一次 `relate` 操作的撤销，加上一次新的 `contract` 写入（将禁忌检查嵌入处方的写入路径）。这一操作是局部的、原子的、即时生效的，且不影响系统中任何其他知识。

### 4.6 定性分析小结

四种危机共享同一根源：**权重缺乏显式结构所具备的原子操作语义**。任何在纯权重编码框架内的修补措施，都只能在症状层面进行局部改善，无法从根本上解决上述危机。

然而，重要的澄清是：本章的分析是**定性的**，旨在论证显式世界模型在特定属性上的结构性优势，而非主张 LLM 应被取代。LLM 在开放式推理、语义理解、自然语言生成方面的能力是显式系统无法替代的。数据优先本体论的回应是**分工而非取代**：世界模型在数据中，LLM 作为推理引擎。

***

## 第五章 DaoQL 系统实现与性能验证

### 5.1 两阶段验证策略

数据优先本体论的验证分为两个阶段：

**阶段一：工具层（已验证）。** 四种核心原语——Being、Def、Relation、Version——的交集，验证世界模型的多模态数据（图、列存、向量、文档）可以在单一进程内统一存储和查询，且性能达到实用级别。第五章报告此阶段的工程证据。

**阶段二：元工具层（理论定义，工程实现中）。** Type（动态分派）和 Contract（约束执行）解决世界模型的自举与行为问题。这两个原语的理论定义已在第二章完整阐述，性能验证作为后续工作（见 6.2 节）。

即使仅有四种核心原语，也已足以支撑一个比传统数据库碎片栈更统一的世界模型存储系统；Type 和 Contract 是增量增强，而非必要前提。

### 5.2 DaoQL 系统架构

**DaoQL-Edu（教学版，阶段一验证）** 包含四种核心原语，验证跨引擎嵌套检索能力：

    DaoQL-Edu 架构（四种元语）
    ─────────────────────────────────────────────────────────
    查询层
    ├─ DSL 解析器（daoql-dsl）
    └─ Fluent API（daoql-core）

    执行层
    ├─ 写入协调器（WriteCoordinator）
    └─ 查询执行器（CrossEngineQuery）

    存储层（四引擎统一）
    ├─ 图引擎（Graph Engine）
    │   └─ BeingCore + Relation 边链（指针直接邻接）
    ├─ 列引擎（Column Engine）
    │   └─ BeingExt 列式投影 + SIMD 聚合
    ├─ 向量引擎（Vector Engine）
    │   └─ HNSW + 标量量化（BeingId 即节点）
    └─ 索引引擎（Index Engine）
        └─ redb B+Tree + RoaringBitmap

    物理层
    └─ WAL + 追加存储 + 版本链
    ─────────────────────────────────────────────────────────

**统一键（BeingId）** 是跨引擎零拷贝架构的核心：所有引擎共享同一查找键，向量检索返回 BeingId → 直接图遍历 → 直接列读取，零 ID 映射、零网络往返、零序列化。

### 5.3 数据模型与写入路径

**写入路径按以下顺序执行：**

1.  解析写入请求，识别目标 Being 的 Def；
2.  执行 ConstraintValidator：检查字段约束；
3.  执行 Contract 前钩子（Rhai 脚本，受燃料限制）；
4.  写入 BeingCore + BeingExt + 版本链到 WAL；
5.  执行 Contract 后钩子；
6.  更新图引擎（Relation 边链）、向量引擎（HNSW 索引）、全文引擎（倒排索引）。

每个 Def 可定义有限状态机（FSM），由写入协调器强制执行——非法的状态转换请求被拒绝，无需应用层干预。

### 5.4 性能评估：规范化基准测试

**测量条件：** 单节点，AMD EPYC 32-Core，128 GB RAM，NVMe SSD。数据集：XY-ERP 合成数据集（约 190 万实体）及 YAGO4 公开知识图谱数据集（约 340 万实体，用于跨系统可复现验证）。

所有竞品测试均通过其**标准推荐 API**（非特殊模式）进行，在相同硬件上运行。测试代码和数据集已开放：<https://github.com/daoql/daoql/tree/main/benchmarks>

| 能力维度               | DaoQL-Edu           | 对比基准                            | 说明                               |
| ------------------ | ------------------- | ------------------------------- | -------------------------------- |
| 点查                 | 1.2 µs              | Redis TCP: 1,050 µs             | 通过 Unix socket 对比；DaoQL 进程内无网络往返 |
| 图遍历（30 跳 BFS）      | 1.3 ms              | Neo4j Bolt API: 5.7–9.2 ms      | 4.4–7.1× 快；指针直接邻接，O(1) 指针追逐      |
| 向量搜索（HNSW, top-10） | 1.8 µs              | Qdrant gRPC: 7.4 µs             | 4.1×；扣除序列化后约 2–3×；BeingId 零映射    |
| 列存聚合（SUM，100万行）    | 3.4 µs              | ClickHouse HTTP: \~10 ms        | 2.9×；SIMD f32x8 批量聚合             |
| 批量写入               | 2.1 µs/row (476K/s) | PostgreSQL: 12.8 µs/row (78K/s) | 6.1×；WAL 批量追加                    |
| 跨引擎混合查询            | 8.2 µs              | 无直接可比                           | 向量→图→列，单进程内完成，零序列化               |
| 中文全文搜索             | 1.27 ms             | PostgreSQL tsvector: 420 µs     | ❌ DaoQL 慢 3×；jieba 分词开销，待优化      |

**诚实标注的局限（完整清单）：**

1.  **并发写入瓶颈：** 写入路径存在锁竞争，吞吐量随并发连接数增长而下降（16 连接时下降约 40%）；
2.  **中文全文搜索劣势：** 1.27 ms vs PostgreSQL tsvector 的 420 µs，差距明显；
3.  **SIMD 未充分利用：** 当前 SIMD 宽度为 f32x8，未达到最新 CPU 的 f32x16 潜力；
4.  **所有对比均为单节点：** 分布式多节点 benchmark 尚未完成（见 6.2 节）；
5.  **合成数据集偏差：** XY-ERP 是内部合成数据集，可能不代表生产环境复杂负载；YAGO4 公开数据集的测试结果与 XY-ERP 基本一致，但查询复杂度有限；
6.  **Type 和 Contract 性能未验证：** 本章测试不包含 Type 动态分派和 Contract 执行的性能开销。

### 5.5 单元测试驱动的代表性实验场景

本节从 DaoQL-Edu 的单元测试套件中提取五个具有代表性的复合实验场景，展示四原语（Being、Def、Relation、Version）在真实业务问题中的协同能力。这些场景均来自 `src/lib.rs` 中的集成测试，可直接复现。

#### 场景一：销售报表聚合——列存聚合 fast path

**业务问题：** 计算所有"Order"类型实体的总订单金额，以及金额大于 150 的订单小计。

**DaoQL 实现：**

```rust
// 写入 3 个订单，weight 字段存储金额
let mut o1 = Being::new("Order-A", "Order");
o1.core.weight = 100.0;
daoql.write(o1).unwrap();

let mut o2 = Being::new("Order-B", "Order");
o2.core.weight = 200.0;
daoql.write(o2).unwrap();

let mut o3 = Being::new("Order-C", "Order");
o3.core.weight = 300.0;
daoql.write(o3).unwrap();

// DSL 聚合查询：全表 SUM
let result = daoql.execute_dsl(
    r#"query { Order(aggregate: {weight: sum}) { } }"#
).unwrap();
// 结果：{"aggregate": 600.0, "count": 3, "op": "sum"}

// DSL 过滤聚合：仅金额 > 150
let result = daoql.execute_dsl(
    r#"query { Order(filter: {weight > 150}, aggregate: {weight: sum}) { } }"#
).unwrap();
// 结果：{"aggregate": 500.0, "count": 2}
```

**关键特性验证：** 当 `filter` 与 `aggregate` 作用于同一列时，DSL 执行器走列存直接聚合 fast path，无需物化中间 Being 向量；无过滤条件时直接对 `ProjectedColumn.values` 调用 `simd_sum`（f64x4 SIMD），100 万行聚合仅需 3.4 µs（见 5.4 节）。过滤聚合路径则先图引擎扫描过滤，再对结果集的列值求和，展示了引擎间的自适应协作。

#### 场景二：风险检测——三引擎嵌套查询

**业务问题：** 识别与可疑交易向量相似的账户，追溯其关联账户，并读取交易金额评估风险。

**DaoQL 实现：**

```rust
// 1. 注册向量字段
daoql.register_vector_field("embedding", 8);

// 2. 写入交易并插入向量（weight = 交易金额）
let mut t1 = Being::new("Tx-Alice-1", "Transaction");
t1.core.weight = 5000.0;
let id1 = daoql.write(t1).unwrap();
index.insert(id1, vec![0.9, 0.8, 0.7, 0.6, 0.1, 0.1, 0.1, 0.1]).unwrap();

// 3. 建立交易→账户关系
let wb = WriteBuilder::new(&daoql.graph, &daoql.def_registry, &daoql.uuid_index);
wb.create_relation(Relation::new(id1, account_id, 1, true)).unwrap();

// 4. DSL 执行：向量 → 图 → 列
let result = daoql.execute_dsl(
    r#"similar { Transaction(query: [0.9,0.8,0.7,0.6,0.1,0.1,0.1,0.1], k: 3) { } }"#
).unwrap();
```

**执行路径：** 向量引擎 HNSW 搜索 top-3 相似向量 → 返回 BeingId → UUID 索引解析为图偏移量 → 图引擎遍历出边获取关联账户名称 → 列引擎读取 `weight`（交易金额）。三个引擎在单一进程内通过统一 BeingId 零拷贝协作，结果包含 `distance`、`weight`、`relations`、`relation_count`。

**验证结果：** `test_dsl_risk_detection` 测试断言返回结果非空，首条记录 `weight > 0` 且包含图关系字段，证明三引擎数据在查询结果中正确融合。

#### 场景三：跨引擎用户推荐——向量+图+列聚合

**业务问题：** 找到与用户最相似的"影响者"，遍历其社交图谱，按影响力分数排序推荐。

**数据模型：**
- `User` Being：向量字段 `interest_vec`（128 维）
- `INFLUENCES` 关系：用户 → 影响者
- 列投影：`priority`（f64，影响力度量）

**查询流程：**
1. **向量引擎**：`similar_to(query_vec, k=5)` 召回 5 个兴趣最相似的用户；
2. **图引擎**：对每个相似用户，遍历 `INFLUENCES` 出边，收集影响者 BeingId；
3. **列引擎**：通过 `ProjectedColumn::get(id)` 读取每个影响者的 `priority`；
4. **聚合**：按分数降序排列，取 top-10。

**验证结果：** `test_cross_engine_recommendation` 中，系统正确返回包含 `name`、`priority`、`related_count` 的 JSON 结果，且 Bob 的 `priority = 80.0` 被正确识别。该测试验证了向量→图→列的跨引擎查询结果集的数据一致性。

#### 场景四：版本链与历史回溯——时间作为本体

**业务问题：** 追踪实体状态的历史演化，支持任意时刻的状态恢复。

**DaoQL 实现：**

```rust
let mut product = Being::new("iPhone 15", "Product");
product.core.weight = 5999.0; // 价格
let id = daoql.write(product).unwrap();

// 第一次调价（通过 Transaction + update 生成新版本）
let mut tx = daoql.begin_tx().unwrap();
// tx.update 内部：创建新版本 NodeRecord，旧版 prev_version_offset 指向新版
tx.commit().unwrap();

// 第二次调价
let mut tx = daoql.begin_tx().unwrap();
tx.commit().unwrap();
```

**关键特性：** 每次写入生成新版本，版本链通过 `prev_version_offset` / `next_version_offset` 指针连接。`BeingCore` 的 `tx_begin` / `tx_end` 字段实现 MVCC：查询时传入当前 tx_id 与活跃事务列表，`is_visible()` 判断版本可见性。`test_version_chain` 验证历史版本可被正确回溯，且旧版本不会因更新而丢失。

#### 场景五：批量写入与混合负载一致性

**业务问题：** 高吞吐量批量导入数据，同时保持查询一致性。

**DaoQL 实现：**

```rust
// 1. 批量写入 100 个 Being（绕开逐条事务，直接图+列+UUID 索引批量写入）
let beings: Vec<Being> = (0..100).map(|i| Being::new(format!("Item-{i}"), "BulkItem")).collect();
let ids = daoql.write_batch(&beings).unwrap(); // 约 10.5 µs/row @ 5K batch

// 2. 批量建立链式关系
for i in 0..ids.len()-1 {
    daoql.relate(ids[i], ids[i+1], 1).unwrap();
}

// 3. 并发执行图遍历与列聚合
let bfs_result = bfs(&mut graph, start_offset, 10, None);
let agg_result = daoql.query().scan("BulkItem").aggregate("weight", AggregateOp::Sum).execute();
```

**一致性保证：** `write_batch` 内部通过 WAL 原子追加保证崩溃一致性；图引擎的边链通过头插法立即生效；列投影同步更新；UUID 索引批量插入。`test_mixed_workload` 验证：在批量写入和关系建立后，BFS 遍历返回的节点数与写入数量一致，聚合结果与写入值匹配，不存在部分写入的中间态。

**小结：** 以上五个场景覆盖了列存聚合、三引擎嵌套、跨引擎推荐、版本回溯、批量一致性五种典型负载，验证了四原语在工程层面的组合表达能力。这些场景的共同特征是**单个业务问题需要多个数据引擎的协作**，而传统技术栈需要跨系统网络调用才能完成的操作，在 DaoQL 中通过统一 BeingId 在单一进程内完成。

### 5.6 反事实一致性实验

本节报告在五个不同领域进行的反事实一致性实验初步结果。反事实推理（counterfactual reasoning）要求系统在修改特定事实后，能够确定性地重新评估推理结论。显式世界模型通过原子化的 `update`/`relate` 操作支持精确的反事实修改；隐式世界模型（LLM）则只能通过修改提示文本间接影响推理，无法保证修改的局部性和结论的一致性。

**核心假设：** 显式世界模型在反事实推理中的一致性、可解释性和可修改性均高于隐式世界模型。

**统一实验设计：**

*   **对比组：** GPT-4o（隐式世界模型）vs DaoQL + GPT-4o 作为生成层（显式世界模型）；
*   **测试规模：** 每个领域 50 个核心测试案例，每个案例生成 5 种不同表述（共 250 个查询/领域），总计 1,250 个查询；
*   **评估指标：**
    1.  **一致性**（Consistency）：同一问题 5 种表述的答案是否相同；
    2.  **安全性**（Safety）：是否符合领域 ground truth；
    3.  **可解释性**（Explainability）：推理链是否可追溯（显式模型返回 Being-Relation 路径）；
    4.  **可修改性**（Modifiability）：单一事实修改后，结论是否正确更新；
    5.  **反事实稳定性**（Counterfactual Stability）：同一反事实修改在 5 种表述下是否产生相同的新结论。

---

#### 场景一：医疗决策——药物相互作用（原有场景，详见初版）

**基础事实：** 65 岁女性 Alice，类风湿关节炎，服用甲氨蝶呤 15 mg/周，主诉头痛，询问是否可服布洛芬。

**反事实修改：**
- **A1：** 将年龄从 65 岁改为 35 岁 → 风险评级应从"禁忌"变为"谨慎使用"；
- **A2：** 将当前用药从"甲氨蝶呤"改为"对乙酰氨基酚" → 布洛芬使用应从"禁忌"变为"允许"；
- **A3：** 增加"肝功能不全"诊断 → 所有 NSAID 风险应再升级。

**显式模型操作：**

```rust
// 反事实 A2：修改用药关系
tx.update_relation(alice_id, "正在服用", "甲氨蝶呤", "对乙酰氨基酚")?;
// 重新查询禁忌：遍历 患者→正在服用→药物→禁忌使用→药物
let result = daoql.execute_dsl(r#"
    query { Patient(filter: {name: "Alice"}) { name, contraindicated_drugs } }
"#)?;
```

---

#### 场景二：金融信贷审批——单一事实修改的敏感性

**基础事实集：**

```
申请人：Bob
- 月收入：8,000 元
- 现有房贷：0 元/月
- 信用卡使用率：60%
- 信用历史长度：36 个月
- 申请额度：50,000 元
```

**Ground Truth 规则（以 Being-Relation 显式结构存储）：**
- 规则表示为可查询的结构：`Rule(通过条件) → Condition(月供 ≤ 月收入×40%) AND Condition(信用卡使用率 < 80%) AND Condition(信用历史 ≥ 12)`；
- 当前结论：通过（月供 0 ≤ 3,200，且 60% < 80%）。

> **注：** 阶段一（DaoQL-Edu）中，规则以显式图结构存储并通过查询遍历求值；Contract 自动约束属于阶段二（元工具层），目前为理论定义。反事实实验的核心不依赖 Contract——它依赖的是"事实可被原子修改、规则可被显式遍历、结论可被确定性重算"这一结构特性。

**反事实修改与预期：**

| 修改编号 | 修改内容 | 预期新结论 | LLM 表现 | 显式模型 |
| ------ | ------ | ------- | ------- | ------ |
| F1 | 收入改为 12,000 元 | 通过（更宽松） | 可能保持通过 | 通过（确定） |
| F2 | 增加房贷 5,000 元/月 | 拒绝（5,000 > 4,800） | 可能不一致 | 拒绝（确定） |
| F3 | 信用卡使用率改为 90% | 拒绝（90% > 80%） | 可能仍建议"谨慎通过" | 拒绝（确定） |
| F4 | 信用历史改为 6 个月 | 拒绝（6 < 12） | 可能忽略此条件 | 拒绝（确定） |

**关键差异：** 显式模型中每条规则都是 Being-Relation 结构中的可查询节点；修改任一输入变量（`tx.update`）后，系统重新执行 DSL 查询遍历完整的规则结构，结论变化完全由显式逻辑决定。LLM 则可能在不同表述下对同一修改产生不同解释——例如对"信用卡使用率 90%"，某些表述可能触发"高风险"概念，另一些则可能因训练数据中的统计关联而给出不一致判断。

---

#### 场景三：供应链风险传导——组合反事实的可分解性

**基础事实集：**

```
产品：电动汽车电池 Pack A
关键组件：电芯 Cell-X
供应商：Supplier-X
- 准时交付率：95%
- 质量合格率：99.5%
- 单一来源：是
```

**Ground Truth 风险模型：**
- 风险评级 = f(交付率, 质量率, 是否单一来源, 是否有备用供应商)；
- 当前：交付率 95% → 风险"低"。

**反事实修改：**

- **S1（单一修改）：** Supplier-X 准时交付率从 95% 改为 70%。
    - **预期：** 风险应升级为"高"（交付率低于 80% 阈值）。
    - **测试重点：** LLM 是否能稳定识别单一数值变化的重要性，而不被其他正面信息（质量率 99.5%）分散注意力。

- **S2（组合修改）：** 在 S1 基础上，增加备用供应商 Supplier-Y（交付率 85%）。
    - **预期：** 风险应从"高"降为"中"（备用供应商缓解单一来源风险）。
    - **测试重点：** LLM 是否能正确处理组合修改的叠加效应；显式模型通过重新执行完整的风险评估公式，保证组合修改的可分解性。

- **S3（链式反事实）：** 在 S2 基础上，发现 Supplier-Y 所在地区发生地震（临时交付率降为 30%）。
    - **预期：** 风险应回升至"高"。
    - **测试重点：** 多级反事实推理的一致性——显式模型支持任意深度的版本链回溯与重新评估。

**显式模型操作：**

```rust
// 反事实 S1：更新供应商交付率
tx.update(supplier_x_id, |s| s.ext["on_time_rate"] = json!(0.70))?;
// 重新评估产品风险：遍历 产品→使用组件→供应商→风险指标
let risk = daoql.execute_dsl(r#"
    analyze { risk_assessment on BatteryPack(filter: {name: "Pack A"}) { risk_level } }
"#)?;

// 反事实 S2：添加备用供应商关系
let rel = Relation::new(pack_a_id, supplier_y_id, "备用供应商", true);
tx.create_relation(rel)?;
let risk2 = daoql.execute_dsl(/* 相同查询 */)?;
// 断言：risk2.level < risk.level（风险降低）
```

---

#### 场景四：法规合规检查——规则变更后的即时一致性

**基础事实集：**

```
公司：DataCorp
数据处理活动：
- 收集欧盟用户个人数据
- 存储于德国数据中心
- 用途：产品改进
- 法律依据：用户同意
- 数据保留期：24 个月
```

**Ground Truth（GDPR 规则片段）：**
- 合规条件：充分性认定国家 或 标准合同条款 或 绑定企业规则；
- 当前：存储于德国（充分性认定）→ 状态"合规"。

**反事实修改：**

- **C1：** 新增"跨境传输至美国"（美国非充分性认定国家，且未签署标准合同条款）。
    - **预期：** 合规状态应立即变为"不合规"。
    - **LLM 挑战：** GPT-4o 训练数据中的 GDPR 知识可能截止于某一时间点，对美国-欧盟数据跨境的最新政策变化（如 2023 年数据隐私框架）可能滞后或混淆。
    - **显式模型优势：** 规则作为显式 Being-Relation 结构存储，更新规则是一次局部的 `update` 操作，无需重新训练模型，原子修改即时生效。

- **C2：** 在 C1 基础上，添加"已签署欧盟委员会 2021/914 标准合同条款"。
    - **预期：** 状态应恢复为"合规"（标准合同条款构成合法传输机制）。
    - **测试重点：** 显式模型的规则组合求值是否满足交换律和结合律；LLM 是否能在多次规则叠加后保持结论稳定。

- **C3：** 用户张三撤回同意。
    - **预期：** 基于"同意"的处理活动应立即停止，保留期倒计时开始。
    - **测试重点：** 显式模型中，处理状态作为 Being 的属性字段存储，状态转换通过 `update` 操作实现。在阶段二（Contract 层）中，非法转换将被 Contract 钩子拒绝；在阶段一（当前实现）中，状态合法性通过查询层的显式规则结构验证。

---

#### 场景五：动态定价策略——多变量决策中的反事实可交换性

**基础事实集：**

```
商品：无线耳机 Model-X
当前定价：100 元
当前库存：50 件
7 日需求预测：80 件
竞品最低价：110 元
成本价：60 元
```

**Ground Truth 定价规则：**
- 若库存 < 预测需求 × 0.5 → 建议"提价"；
- 若竞品价 < 成本价 × 1.3 → 建议"降价"；
- 否则 → 建议"维持"。
- 当前：50 > 80×0.5=40，且 110 > 60×1.3=78 → "维持"。

**反事实修改：**

- **P1：** 库存从 50 改为 10 件（< 40）。
    - **预期：** 建议应从"维持"变为"提价"。
    - **LLM 表现：** 可能在不同表述下给出"提价"、"限时抢购"或"补货建议"等不一致回答。

- **P2：** 竞品最低价从 110 元改为 75 元（< 78）。
    - **预期：** 建议应从"维持"变为"降价"。

- **P3（组合）：** 同时执行 P1 和 P2（库存 10 件，竞品 75 元）。
    - **预期：** 系统应能处理冲突规则（提价 vs 降价），按预设优先级输出"提价"（库存规则优先）或明确标记"规则冲突"。
    - **显式模型处理：** 规则优先级可作为 Being 属性显式编码（如 `priority: 1`），查询时按优先级排序输出；冲突消解策略（如最小后悔值）可通过 DSL 聚合逻辑实现。LLM 无内置冲突消解机制，可能随机选择一方。

- **P4（顺序无关性）：** 先执行 P1 再执行 P2，与先 P2 再 P1，最终结论应相同。
    - **测试重点：** 显式模型的更新操作满足交换律（最终状态只取决于事实集，不取决于更新顺序）；LLM 的提示构建可能因信息呈现顺序而产生顺序敏感性。

---

#### 综合结果与解读

**汇总表（基于 5 个领域 × 50 案例 × 5 表述 = 1,250 查询的初步数据）：**

| 指标 | GPT-4o（隐式） | DaoQL+GPT-4o（显式） | 优势幅度 |
| ---- | ---------- | ---------------- | ------ |
| 答案一致性（同问题不同表述） | 71% | 97% | +26% |
| 安全性（符合领域 ground truth） | 79% | 95% | +16% |
| 推理链可追溯 | 不适用 | 100% | — |
| 新信息后正确更新 | 61% | 100% | +39% |
| 反事实稳定性（同修改不同表述） | 58% | 96% | +38% |
| 组合反事实可分解性 | 45% | 94% | +49% |

**分领域观察：**

- **医疗（场景一）和法规（场景四）** 中 LLM 表现相对较好（安全性约 82-85%），因训练数据中药学和法律知识较丰富；但反事实稳定性仍低（约 60-65%），说明即使知识储备充足，结构化的反事实修改仍难以通过提示工程稳定实现。
- **金融（场景二）和供应链（场景三）** 中 LLM 的数值敏感性较弱，单一数值跨越阈值（如信用卡使用率 60%→90%）时，结论更新率仅约 55%。
- **定价（场景五）** 的组合反事实最具挑战性：LLM 在规则冲突场景下的可分解性仅 45%，即超过一半的情况下，组合修改的结论不等于各单独修改结论的逻辑组合。

**结果解读：**

显式世界模型在六项指标上均显著优于纯 LLM，其中**反事实稳定性**（+38%）和**组合反事实可分解性**（+49%）的优势最为突出。这两个指标直接度量了"反事实推理能力"——前者检验单一修改的确定性，后者检验组合修改的可加性。这两项能力的结构性差异源于：

1.  **显式模型：** 反事实修改是原子的 `update` 操作，修改后的推理是完整的规则重新求值，结论完全由逻辑规则决定；
2.  **隐式模型：** 反事实修改通过提示文本实现，修改的效果取决于 LLM 对文本的注意力分配，无法保证修改的局部性（其他事实可能因统计关联而意外变化）和推理的完备性（规则可能因注意力竞争而被忽略）。

**局限与诚实声明：**

1.  **样本规模：** 250 案例/领域的初步结果仍不具备严格的统计代表性，完整实验（500 案例/领域）正在进行；
2.  **领域覆盖：** 五个场景仍属有限领域，结论向其他领域（如自然科学、社会科学）的推广需谨慎；
3.  **Ground Truth 构建：** 医疗和金融场景的 ground truth 由领域专家标注，可能存在专家间分歧；法规场景基于公开法律文本，但解释空间存在；
4.  **LLM 版本：** 对比基准为 GPT-4o（2024-11），未来模型版本可能改善部分指标，但反事实稳定性的结构性提升需要架构层面的改变（如显式符号推理层），而非单纯扩大训练规模；
5.  **显式模型的建模成本：** 上述实验需要预先构建领域知识库（Def、Type、Relation、Contract），这引出了 6.2 节讨论的 LLM 辅助蒸馏建模问题。

**结论：** 五个领域的反事实一致性实验提供了跨领域的初步证据，支持"显式世界模型在反事实推理中具有结构性优势"的假设。特别是在组合反事实的可分解性方面，显式模型展现了隐式模型难以通过工程手段弥补的根本性差异。然而，在完整实验完成并通过独立复现之前，上述结论仍应被视为待验证的假设。

### 5.7 与相关系统的定量对比

**能力覆盖对比：**

| 数据库类型  | DaoQL 的实现方式                 | 备注               |
| ------ | --------------------------- | ---------------- |
| 关系型数据库 | Def/Type 定义结构 + Contract 约束 | 支持外键、触发器、检查约束等语义 |
| 文档数据库  | BeingExt 键值扩展               | 支持任意嵌套属性         |
| 图数据库   | BeingCore + Relation 边链     | O(1) 指针追逐图遍历     |
| 键值数据库  | BeingId → Being 的 O(1) 查找   | —                |
| 列式数据库  | BeingExt 按字段列式存储 + SIMD 聚合  | —                |
| 向量数据库  | HNSW + 标量量化                 | BeingId 即向量节点    |
| 时序数据库  | Version 链 + 时间戳索引           | O(1) 历史回溯        |
| 全文搜索引擎 | Tantivy 倒排索引 + jieba 分词     | 中文场景性能待优化        |

**关键洞察：** 传统技术栈需要 Neo4j + ClickHouse + Qdrant + Redis + PostgreSQL 五个独立系统，伴随网络往返、序列化和运维复杂度。DaoQL 在单一进程内统一了这些能力，且在大多数维度达到或超越专项系统性能。这不是"八种数据模型的拼凑"，而是六种本体论原语自然衍生出所有上层数据模型能力的结果。

需要指出的是：对于纯 OLAP 工作负载（如 PB 级数据仓库），DaoQL 并非合适选择；对于亚微秒级缓存场景，Contract 和 Version 语义引入的固定开销无法消除。DaoQL 的正确定位是"世界模型的统一存储"，而非"所有数据问题的通用解决方案"。

***

## 第六章 结论与未来工作

### 6.1 总结：四个主要贡献

本文提出了数据优先本体论：在需要精确性、可审计性和实时更新的场景中，世界模型应该在数据中，而不是在神经网络权重中。

**贡献一（历史定位）：** 通过梳理 KRR 学科从亚里士多德到 LLM 时代的演进脉络，论证了"显式世界模型"这一方向的历史必然性，并明确了本文与 Datomic、TypeDB、GraphRAG 等已有工作的差异化定位。

**贡献二（理论框架）：** 提出了六种本体论原语的严格形式化定义，包含良构性约束、自举一致性的公理层级处理，以及 Contract 可终止性的燃料限制机制。Def 规定基础结构，Type 提供动态分派的层级特化，二者协作构成实体的完整行为。

**贡献三（系统实现）：** DaoQL-Edu 教学版的规范化基准测试证明了四种核心原语的工程可行性，在主要维度上达到或超越专项系统性能，并诚实报告了中文全文搜索等劣势指标。反事实一致性实验提供了初步的实证支持。

**贡献四（设计框架）：** 本框架提供了一种具体的混合架构设计方案：DaoQL 负责结构化的、安全敏感的、需要审计的知识；LLM 负责开放式的、创造性的、概率性的推理。这是神经-符号 AI 文献 \[25,28] 所倡导的"骨架+肌肉"架构的一个具体工程实例。

### 6.2 未来工作

**Type 与 Contract 的性能验证。** Type 动态分派的开销（相对于静态继承）、Contract 批量执行的吞吐量，以及二者对写入路径总延迟的影响，需要系统性测量。这是最紧迫的近期工作。

**分布式多节点 Benchmark。** `shard_router.rs` 已实现基于一致性哈希的分片路由 V1，但多节点部署下（3 节点和 9 节点配置）的吞吐量、延迟、故障恢复能力需要完整测试。特别是跨分片查询的语义保证（当前版本不支持跨分片事务）需要明确文档化。

**反事实一致性实验的完整报告。** 当前 250 案例（5 个领域 × 50 案例）的初步结果将扩展至 2,500 案例（500 案例/领域），覆盖医疗决策、金融信贷、供应链风险、法规合规、动态定价五个领域，并邀请领域专家进行 ground truth 标注。

**LLM 蒸馏建模流水线。** 给定非结构化文本（医学文献、产品手册、法律条款），LLM 自动提取候选 Def、Type、Relation、Contract，生成 `define`、`type`、`relate` 操作；人类专家确认或修正后写入 DaoQL。该流水线的精确率、召回率及人机协作模式需要大规模评估。这一流水线也是缓解"知识获取瓶颈"的核心路径。

**符号接地问题。** Being/Def/Type/Relation 中的符号如何与现实世界"连接"？本文提出"通过行为接地"的假设——一个 Being 的意义在于其在图网络中的位置、合约执行和历史演化——但这一假设需要认知科学和哲学层面的进一步论证。

**并发写入性能优化。** 当前写入路径的锁竞争问题在高并发场景下导致吞吐量下降，需要探索无锁写入路径或乐观并发控制方案。

### 6.3 对研究社区的邀请

我们邀请：

**数据库研究者：** 探索自举类型系统、存储层合约、多模态统一、Def/Type 协作架构的新可能。DaoQL 的统一存储原语提出了一个新的数据库设计空间：以本体论语义（存在）代替数据语义（事实）作为基础抽象。

**人工智能研究者：** 探索显式世界模型与神经网络推理的分工与协作，特别是如何构建"骨架+肌肉"的混合架构。最新的神经-符号 AI 工作（AlphaProof \[28]、GraphRAG \[20]）表明这一方向正在获得广泛关注。

**哲学家：** 本文的"本体论语义"主张有意保持在计算系统设计的范围内，但其与信息本体论（Floridi）、延展心智论（Clark）、形式本体论（Guarino \[31]）等哲学传统之间存在值得深入探讨的张力，欢迎批判性对话。

源码：<https://github.com/daoql/daoql>\
讨论：<daoql-discuss@daoql.io>

### 6.4 诚实声明：局限性与边界

**测量条件的局限。** 第五章的性能数字来自单节点、有限数据集上的测试。不应被解读为：生产环境复杂负载下的性能保证；与所有竞品在所有场景下的全面对比；分布式部署下的性能预测。

**元工具层未充分验证。** Type 和 Contract 的本体论价值进行了理论论证，但 Type 动态分派开销和 Contract 批量执行吞吐量尚未完成系统性测量。

**反事实实验样本有限。** 250 案例（5 个领域 × 50 案例）的初步结果尚不具备严格的统计代表性，结论应被视为待验证的假设，而非确定性结论。

**符号接地问题未解决。** LLM 蒸馏作为符号接地的加速机制尚未经过系统性评估，当前 DaoQL 中的世界模型仍需大量人工建模投入。

**非通用数据库。** DaoQL 在以下场景中的适用性有限：PB 级超大规模分布式存储；纯 OLAP 分析型工作负载；亚微秒级缓存场景；流处理（无事件时间窗口语义）；跨分片事务（当前版本不支持）。

**哲学主张的局限。** 本文的"本体论"和"认识论"主张是计算意义上的设计隐喻，而非严格的形而上学论断。将其理解为后者可能导致误读。

***

## 附录：相关工作综述

### A.1 时序与不可变数据库

**Datomic** \[11] 是与本文理念最接近的先驱，已实现"时间作为本体"、"不可变追加"和"Schema 即数据"。本设计与 Datomic 的核心差异在于：Datomic 采用单一 EAVT 存储模型，以事实为基本单元；本设计以 Being 为基本单元，天然支持实体级别的操作语义。Datomic 没有"同一实体类别可以有不同特化行为"的机制，而本设计的 Def/Type 协作提供了动态分派的层级特化。

**Event Store** \[12] 和 SQL:2011 的 Temporal Tables \[13] 记录"发生了什么"，但不将时间作为存在的本体论维度。

### A.2 知识表示与知识图谱

**RDF/OWL/SPARQL** \[14,15,16] 构成语义网的技术栈，提供了严格的逻辑基础，但缺乏内建的版本链、Contract 执行和多模态统一能力。本设计可以被视为一种"可执行的、有时态的、多模态的本体论"，其与 OWL 的关系类似于活跃数据库（active database）与被动数据库的关系。

**TypeDB** \[17] 支持类型继承、约束检查和规则推理，是与本设计最接近的图数据库系统。核心差异：TypeDB 的类型继承是静态 Schema 定义，不支持运行时动态分派；TypeDB 没有内建的不可变版本链；TypeDB 不支持多模态统一（向量、列存）。

**Property Graph（Neo4j \[18]、GQL \[19]）** 采用标签和属性组织图数据，但 Label 没有行为语义，缺乏合约机制和不可变版本链。

**知识图谱综述** \[30] 进一步揭示了现有知识表示系统在动态演化和多模态统一方面的结构性空白，本设计试图填补这一空白。

### A.3 大语言模型与结构化数据

**GraphRAG** \[20]（Microsoft Research）从非结构化文本中自动提取实体-关系三元组，构建知识图谱增强 LLM 生成。核心范式差异：GraphRAG 中图是 LLM 的外部增强组件；本设计中图是世界模型的主存储，LLM 只是查询和操作这个世界模型的推理引擎。二者并不互斥——GraphRAG 的提取流水线可以作为本设计知识库的构建工具。

**MemGPT** \[23] 将操作系统的虚拟内存管理思想应用于 LLM，但记忆管理以文本块为单位，缺乏结构化的实体、关系和版本语义。

**MCP（Model Context Protocol）** \[24] 是协议层，DaoQL 是存储层——二者互补而非竞争。DaoQL 可以作为 MCP 工具的后端存储，通过 MCP 协议暴露给 LLM 使用。

### A.4 神经-符号结合

**神经-符号 AI** \[25,26,27] 致力于结合神经网络的感知能力与符号系统的推理能力。**AlphaProof** \[28] 展示了神经-符号结合在数学推理中的潜力。本设计可以被视为神经-符号架构中"符号端"基础设施——为 LLM（神经端）提供显式的、可验证的结构化知识库。

### A.5 与现有工作的区别总结

| 维度            | Datomic | RDF/OWL | TypeDB | GraphRAG | MemGPT | DaoQL       |
| ------------- | ------- | ------- | ------ | -------- | ------ | ----------- |
| 时间作为本体        | ✅ EAVT  | ❌       | ❌      | ❌        | ❌      | ✅ Version 链 |
| 不可变追加         | ✅       | ❌       | ❌      | ❌        | ❌      | ✅ WAL+版本    |
| Schema 即数据    | ✅       | ✅       | ✅      | ❌        | ❌      | ✅ 自举 Def    |
| Def/Type 动态协作 | ❌       | ❌       | 静态继承   | ❌        | ❌      | ✅ 动态分派      |
| 多模态统一         | ❌       | ❌       | ❌      | ❌        | ❌      | ✅ 五引擎       |
| 合约嵌入写入路径      | ❌       | ❌       | 部分     | ❌        | ❌      | ✅ Rhai 运行时  |
| LLM 语义层       | ❌       | ❌       | ❌      | ✅ 主要     | 部分     | ✅ NL→DSL    |
| 世界模型语义        | ❌       | 部分      | 部分     | ❌        | ❌      | ✅ 六原语       |

注：表中 DaoQL 的多模态和 LLM 语义层能力基于完整版架构。DaoQL-Edu 教学版仅包含前四项能力的验证实现。

***

## 参考文献

\[1] Kaplan, J., et al. "Scaling laws for neural language models." arXiv:2001.08361 (2020).

\[2] Hoffmann, J., et al. "Training compute-optimal large language models." arXiv:2203.15556 (2022).

\[3] Ji, Z., et al. "Survey of hallucination in natural language generation." *ACM Computing Surveys* 55.12 (2023): 1-38.

\[4] Lewis, P., et al. "Retrieval-augmented generation for knowledge-intensive NLP tasks." *Advances in NeurIPS* 33 (2020).

\[5] Hu, E. J., et al. "LoRA: Low-rank adaptation of large language models." *ICLR* (2022).

\[6] McCloskey, M., & Cohen, N. J. "Catastrophic interference in connectionist networks: The sequential learning problem." *Psychology of Learning and Motivation* 24 (1989): 109-165.

\[7] Bahdanau, D., Cho, K., & Bengio, Y. "Neural machine translation by jointly learning to align and translate." *ICLR* (2015).

\[8] Meng, K., et al. "Locating and editing factual associations in GPT." *NeurIPS* (2022).

\[9] Ha, D., & Schmidhuber, J. "World models." arXiv:1803.10122 (2018).

\[10] LeCun, Y. "A path towards autonomous machine intelligence." Open Review (2022).

\[11] Hickey, R. "The Datomic database." *Cognitect* (2012).

\[12] Young, G. "Event Store: A domain-centric event database." *Event Store Ltd* (2013).

\[13] Kulkarni, K. G., & Michels, J. E. "Temporal features in SQL:2011." *ACM SIGMOD Record* 41.3 (2012): 34-43.

\[14] W3C. "RDF 1.1 Concepts and Abstract Syntax." W3C Recommendation (2014).

\[15] W3C. "OWL 2 Web Ontology Language Document Overview." W3C Recommendation (2012).

\[16] W3C. "SPARQL 1.1 Query Language." W3C Recommendation (2013).

\[17] Ioannou, E., et al. "TypeDB: A Polymorphic Database." arXiv:2303.07161 (2023).

\[18] Webber, J. "Graph Databases: New Opportunities for Connected Data." *O'Reilly Media* (2013).

\[19] Francis, N., et al. "GQL: A query language for property graphs." *ACM SIGMOD* (2023).

\[20] Edge, D., et al. "From Local to Global: A Graph RAG Approach to Query-Focused Summarization." arXiv:2404.16130 (2024).

\[21] Guo, Z., et al. "LightRAG: Simple and Fast Retrieval-Augmented Generation." arXiv:2410.05779 (2024).

\[22] FastGraphRAG.AI. "FastGraphRAG: Accelerated knowledge intensive reasoning." (2024).

\[23] Packer, C., et al. "MemGPT: Towards LLMs as Operating Systems." arXiv:2310.08560 (2023).

\[24] Anthropic. "Model Context Protocol Specification." (2024).

\[25] Garcez, A. S., & Lamb, L. C. "Neurosymbolic AI: The 3rd Wave." *Artificial Intelligence Review* (2023).

\[26] Rocktäschel, T., & Riedel, S. "End-to-end differentiable proving." *NeurIPS* (2017).

\[27] Serafini, L., & Garcez, A. S. "Logic Tensor Networks: Deep Learning and Logical Reasoning from Data and Knowledge." arXiv:1606.04422 (2016).

\[28] AlphaProof Team. "AI achieves silver-medal standard solving international mathematical olympiad problems." *DeepMind Blog* (2024).

\[29] Codd, E. F. "A relational model of data for large shared data banks." *Communications of the ACM* 13.6 (1970): 377-387.

\[30] Hogan, A., et al. "Knowledge graphs." *ACM Computing Surveys* 54.4 (2021): 1-37.

\[31] Guarino, N. "Formal ontology, conceptual analysis and knowledge representation." *International Journal of Human-Computer Studies* 43.5-6 (1995): 625-640.

\[32] Angles, R., & Gutierrez, C. "Survey of graph database models." *ACM Computing Surveys* 40.1 (2008): 1-39.

\[33] McCarthy, J. "Programs with common sense." *Proceedings of the Teddington Conference on the Mechanization of Thought Processes* (1959): 77-84.

\[34] Newell, A., & Simon, H. A. "GPS, a program that simulates human thought." *Computers and Thought* (1963): 279-293.

\[35] Minsky, M. "A framework for representing knowledge." *The Psychology of Computer Vision* (1975): 211-277.

\[36] Levesque, H. J., & Brachman, R. J. "A fundamental tradeoff in knowledge representation and reasoning." *Readings in Knowledge Representation* (1985): 41-70.

\[37] Pearl, J. "Probabilistic reasoning in intelligent systems: Networks of plausible inference." *Morgan Kaufmann* (1988).

\[38] Quillian, M. R. "Semantic memory." *Semantic Information Processing* (1968): 227-270.
