第四章:本体推理的技术基础设施
当LLM不够用了——本体推理的企业决策实践
第三章讲了"怎么落地"的方法论。这一章聚焦在"落地靠什么"——推理的技术基础设施。
如果说前三章是在论证"为什么要做本体推理"和"怎么做才能不失败",那么从这一章开始,我们要进入技术内核。本章的目标读者不是做纯理论研究的,而是在落地时需要判断"该选什么推理机"“该用 OWL 的哪个子集”"SWRL 能做什么不能做什么"的实践者。
企业级本体推理的技术选型,不是"哪个最好用"的问题,是"我的场景适配哪个"的问题。
4.1 推理机的分类:Tableau / Hypertableau / 规则引擎
本体推理机的核心任务:给定一个本体(TBox + ABox),判断它是否一致(没有逻辑矛盾),以及推断隐含的结论(那些没有显式写在文件里但逻辑上成立的事实)。
实现这个任务的技术路线,可以分为三大类。
4.1.1 Tableau 算法:描述逻辑的经典验证法
最经典的方法叫Tableau(表推)算法。它的核心思想是"反证法":要证明结论 C 在本体 O 中成立,就假设 C 的否定(¬C)为真,然后尝试构建一个反例——如果构建过程中产生矛盾,说明 ¬C 不可能成立,则 C 必然成立。
整个构建反例的过程,就是对概念描述做逐步分解。以 OWL 中的概念构造符为例:
- 给定
Person ⊓ ∃hasChild.Student(x)(x 既是 Person,又有一个 child 是 Student),分解为两条约束:Person(x)和∃hasChild.Student(x) - 给定
∀hasChild.Adult(x)和hasChild(x, y),推出Adult(y)
Tableau 算法沿着公理逐条展开,创建个体,检查约束,直到:
- 出现矛盾(一个个体同时被判定为 C 和 ¬C)→ 原假设不成立,推理成功
- 无法再展开且无矛盾→ 找到反例,假设置疑
这就是 Pellet [1] 和早期的 FaCT++ 等推理机的核心算法。它的优点是完备(所有逻辑蕴含的结论都能推出)且正确(推出的结论一定逻辑成立)。缺点也很直接:最坏情况下的复杂度是指数级的(对 OWL-DL 而言是 NEXPTIME-hard)。
4.1.2 Hypertableau:解决非确定性爆炸
Tableau 算法在遇到一般包含公理(General Concept Inclusion, GCI)时会面临严重的非确定性问题。GCI 是什么?就是像这样的公理:
SubClassOf(CEO, Person)——即"每个 CEO 都是人"
这类公理在 OWL 本体中极其常见。标准 Tableau 算法处理 GCI 时,会对每个知识库中的个体做试探性的"分支"——假设它是 CEO 或不是 CEO,然后各自计算,形成指数级分支。
HermiT [2] 提出了Hypertableau(超表推)算法,核心改进在于:
- 吸收优化(Absorption):把 GCI 尽量"吸收"进已有的概念定义中,减少独立处理的需求。比如
SubClassOf(CEO, Person)可以直接在CEO的定义中处理,不需要为每个个体单独展开 - 一次性规则触发(hyper-resolution):将多个相互关联的推理步骤合并为一个原子操作,减少中间的搜索空间
- 阻塞(Blocking)优化:当检测到无限扩展的模式时终止展开——例如
Person ⊑ ∃hasParent.Person会导致无限构造祖先,blocking 检测到循环后停止
量化对比:牛津大学团队的实验数据显示,在包含大量 GCI 的生物医学本体(如 GALEN)上,HermiT 的 Hypertableau 比标准 Tableau 推理快 2-3 个数量级 [3]。
一句话总结:Pellet 是"经典版"推理机,稳定可靠;HermiT 是"优化版"推理机,在复杂本体上快得多。
4.1.3 规则引擎:RETE 与正向链接
还有一条完全不同的技术路线:规则引擎。
规则引擎不依赖描述逻辑的 Tableau 证明,而是用产生式规则做推理。它把每条公理和规则转换为"如果……则……"的形式,然后用正向链接(forward chaining)不断推导新的事实,直到没有新事实产生。
代表算法是RETE(由 Charles Forgy 于 1979 年在 CMU 博士论文中提出)[4]。RETE 的核心思想是用空间换时间:构建一个"α 节点 → β 节点"的判别网络,将规则的条件部分编译为网络结构,数据流入后匹配路径,避免重复扫描所有规则。
举个例子:有 1000 条规则和 10 万条事实,朴素算法每条规则都要扫描全部事实,RETE 算法则将匹配过程网络化——只有相关的事实被传入相关规则的匹配节点。
这条技术路线的代表实践:
- Drools(Java 规则引擎,使用 ReteOO 算法)
- Jena 规则引擎(支持 RETE 和前向/后向链接,可用于 RDFS/OWL 推理的子集)
- OWL 2 RL Profile的所有推理都可以用规则引擎实现(因为 RL 被设计为"规则可表达的")
4.1.4 三类推理机的对比
| 维度 | Tableau (Pellet) | Hypertableau (HermiT) | 规则引擎 (RETE/前向链) |
|---|---|---|---|
| 算法原理 | 反证法 + 分解 + 分支 | 反证法 + 吸收优化 + 阻塞 | 条件匹配 + 逐步推导 |
| 完备性 | 完备 + 正确 | 完备 + 正确 | 取决于规则集是否完备 |
| 性能瓶颈 | GCI 导致分支爆炸 | 大规模 ABox 可能内存压力 | 大量实例时效率高 |
| 适用本体规模 | 小中型 | 中大型(复杂 TBox) | 大型(实例数据多) |
| OWL 2 Profile | DL | DL | RL(最适配) |
| 代表工具 | Pellet, FaCT++ | HermiT | Drools, Jena Rules, RDFox |
选型建议:
- 如果你的本体有大量概念层级和复杂 GCI(如医学术语库 SNOMED CT):用 HermiT
- 如果你的本体规模不巨大但需要最完整的推理覆盖:用 Pellet
- 如果你的场景是大量实例数据上的简单规则推理(如"所有北京的供应商自动标记为华北区"):用规则引擎
4.2 OWL-DL 的推理能力与 EL 的边界
第一章介绍过 OWL 的层级结构。这里深入到推理复杂度层面,讨论两个最重要、最实用的 Profile:OWL-DL和OWL-EL。
4.2.1 OWL-DL:全能力下的"昂贵安全网"
OWL-DL(Description Logic)是 OWL 2 中表达能力最强的子语言。它基于描述逻辑SROIQ(D),能够表达:
- 概念的交(⊓)、并(⊔)、补(¬)
- 属性的全称量化(∀)、存在量化(∃)
- 数量约束(≥, ≤)
- 属性的传递性、对称性、互逆性、不相交性
- 个体的等值和不等值断言
- 数据类型属性(整数、字符串、日期等)
对应的推理复杂度是NEXPTIME-complete[5]。这意味着:在最坏情况下,推理时间随本体规模增长而指数级增长。
但在实践中,很多使用 OWL-DL 建模的本体并不触及最坏情况——因为建模者不会把所有理论允许的公理类型全部用上。另一方面,当本体体量超过一定规模(比如超过 5000 个类、500 个属性),即使没有触发最坏复杂度,Pellet 或 HermiT 也可能需要数十分钟甚至更久来完成一次分类推理。
这引出一个关键工程判断:你的企业场景真的需要 OWL-DL 的全部能力吗?
4.2.2 OWL-EL:放弃表达力换取推理效率
OWL-EL(Existential Language)是一个表达能力削减但推理高效的子语言。它基于描述逻辑EL++,支持:
- 概念的交(⊓)
- 存在量化(∃)
- 属性的传递性
- 概念包含公理(GCIs)
- 数据类型属性(有约束)
但不支持:
- 概念的并(⊔)、补(¬)
- 属性的全称量化(∀)
- 数量约束(≥, ≤)
- 属性的对称性、互逆性、不相交性
为什么放弃这么多?因为 EL 上的推理复杂度是PTIME-complete(多项式时间)[6],意味着即使本体规模很大,推理时间也保持可控。
SNOMED CT 就是 EL 的最典型案例:拥有超过 30 万个类、100 多个属性的大型医学术语本体,使用 EL 推理机(如 ELK)可以在数秒内完成分类推理 [7]。如果用 OWL-DL 全能力的推理机跑同样的本体,可能永远跑不完。
4.2.3 DL vs EL:工程视角的决策框架
| 维度 | OWL-DL | OWL-EL |
|---|---|---|
| 推理复杂度 | NEXPTIME-hard | PTIME-complete |
| 概念并(Or) | ✅ | ❌ |
| 概念补(Not) | ✅ | ❌ |
| 全称量化(∀) | ✅ | ❌ |
| 存在量化(∃) | ✅ | ✅ |
| 数量约束(≥, ≤) | ✅ | ❌ |
| 概念层级分类 | ✅(慢) | ✅(快) |
| 一致性检测 | ✅ | ✅ |
| 典型推理机 | HermiT, Pellet, FaCT++ | ELK, Snorocket, CEL |
| 适合本体规模 | < 5000 类 | > 10 万类 |
| 企业典型场景 | 风控规则本体、供应链本体 | 产品目录、术语标准化、编码映射 |
工程实践中的一条重要原则:
不要用 OWL-DL 建模你用 EL 就能表达的知识。你节约的不是建模时间,是推理时间。
实际上,很多企业级本体项目的 POC 阶段,建议先用 EL 建模和验证——因为 EL 推理快,可以在短时间内完成一致性检测和分类,快速暴露建模错误。验证通过后,如果确实需要全称量化或数量约束,再升级到 DL。这个"先 EL 后 DL"的策略,是许多本体工程师的实际工作方式。
4.2.4 另两个 Profile 简述
- OWL-QL(Query Language):基于 DL-Lite,查询回答的数据复杂度为 AC0(可用 SQL 重写实现),适合大规模 ABox 上的查询场景——如果你主要做"查",而不是"推",QL 是最佳选择
- OWL-RL(Rule Language):所有推理可用规则引擎(前向链 + 后向链)实现,PTIME-complete,3.1 节提到的规则引擎路线就对应 RL
| Profile | 复杂度 | 一句话场景 |
|---|---|---|
| EL | PTIME | 大规模术语分类(TBox 主导) |
| QL | AC0(数据) | 大规模查询回答(ABox 主导) |
| RL | PTIME | 规则化推理(规则引擎友好) |
| DL | NEXPTIME | 需要全部表达力的复杂推理 |
4.3 SWRL:当 OWL 不够用时的规则补充
4.3.1 OWL 的表达力边界
第一章引入 SWRL 时说过:OWL 负责定义"是什么关系",SWRL 负责定义"满足什么条件时触发什么结论"。这里展开讲。
OWL 公理能表达的推理模式主要是描述逻辑模式:传递、对称、互逆、等价、不相交。但很多企业场景需要条件推理:
“如果某供应商在过去三个月内退货率超过 10%,且该供应商评级为 A 级,则降级为 B 级。”
这个规则需要比较数值(退货率 > 10%)、引用多个属性(退货率、评级)、连接多个条件——这些 OWL 公理做不到。OWL-DL 不支持条件分支和数值比较。
SWRL 就是这个缺口的标准填充。
4.3.2 SWRL 的核心结构
SWRL 规则的基本形式是:
Body → Head (如果 Body 中的条件全部成立,则推断 Head 中的结论)一条规则的内部结构由四类元素组成 [8]:
| 元素 | 角色 | 例子 |
|---|---|---|
| Imp | 规则本身 | 一条完整的head ← body规则 |
| Atom | 规则中的原子条件 | hasDisease(?p, ?d) |
| Variable | 变量(占位符) | ?p(病人)、?d(疾病) |
| Built-in | 内置函数 | greaterThan(?rate, 0.1) |
一个真实例子:
Rule: 高退货率供应商降级 Body: hasSupplierRetention(?order, ?supplier) /* 原子1:订单的供应商 */ hasReturnRate3M(?supplier, ?rate) /* 原子2:供应商的3月退货率 */ hasRating(?supplier, "A") /* 原子3:供应商当前评级 */ greaterThan(?rate, 0.1) /* Built-in:退货率 > 10% */ Head: hasRating(?supplier, "B") /* 结论:降级为B */4.3.3 Built-in:SWRL 的真正威力
SWRL 规定了一套标准内置函数(Built-ins)[9],分为八类:
| 类别 | 函数举例 | 用途 |
|---|---|---|
| 比较 | greaterThan,lessThan,equal,notEqual | 数值/字符串比较 |
| 数学 | add,subtract,multiply,divide,pow,sqrt,abs | 算术运算 |
| 字符串 | stringConcat,stringLength,substring,contains,matches | 字符串处理 |
| 日期/时间 | date,time,addDayTimeDuration,subtractDates | 时间运算 |
| 布尔 | booleanNot | 布尔反转 |
| 列表 | listConcat,listIntersection | 集合操作 |
| URI | resolveURI | URI 解析 |
这些 Built-in 使得 SWRL 的表达力远超 OWL 公理:它可以比较数值、连接字符串、计算日期差——这正是企业决策中大量出现的"条件-阈值-动作"模式的底层需求。
4.3.4 SWRL 的关键限制:DL-Safe
SWRL 有一个重要的安全约束叫DL-Safe[10]:
SWRL 规则中的每个变量必须出现在规则 Body 的非 Built-in 原子中。
这意味着你不能写:
/* 非 DL-Safe:?x 只出现在 Built-in 中 */ greaterThan(?x, 100) → hasAlert(?x, "warning")而必须写:
/* DL-Safe:?x 出现在 DataProperty 原子中 */ hasValue(?s, ?x) ∧ greaterThan(?x, 100) → hasAlert(?s, "warning")这个限制不是语法层面的挑剔,它确保 SWRL 规则在 OWL-DL 本体上的推理是可判定的(一定会停机、一定会给出确定的结果)。如果不加这个限制,SWRL+OWL-DL 组合在理论上是不可判定的——推理机可能永远跑不完 [11]。
工程含义:写 SWRL 规则时,每个变量必须先绑定到一个 OWL 概念或属性,然后才能在 Built-in 中使用。这是一个容易被忽略但必须遵守的约束。
4.3.5 SWRL 的推理机支持
| 推理机 | SWRL 支持程度 | 备注 |
|---|---|---|
| Pellet | 完整支持 DL-Safe SWRL | 推理时编译为 Tableau 规则 |
| HermiT | 通过 Pellet 集成支持 | HermiT 本身不原生支持 SWRL |
| Drools + OWL API | 支持(转换为 Drools 规则) | 基于规则引擎路线 |
| Stardog | 原生 SWRL + 自定义规则 | 商业产品,完整支持 |
4.4 确定性推理与不确定性推理的分工
前三节都在讲确定性推理:给定一个本体和公理,推出一个唯一确定的结论。本体是一致的,或不一致的。疾病是 X 的,或不是 X 的。没有"可能是"“大约 70% 可能是”。
但在企业决策中,很多知识天然是不确定的。
4.4.1 为什么企业决策需要不确定性推理
几个典型场景:
| 场景 | 不确定因素 | 确定性推理的问题 |
|---|---|---|
| 供应商风险评估 | “近期投诉增多”——什么是"近期"?多少算"增多"? | 阈值一刀切 |
| 客户流失预测 | 多个弱信号叠加,没有单个决定性指标 | 规则无法精确定义 |
| 医疗诊断辅助 | 症状不完全、检查结果有误差 | 确定性规则覆盖率太低 |
这些场景的共同特征:知识在阈值附近是模糊的、信号是不完全的、结论是概率性的。确定性推理(OWL + SWRL)可以处理"是非分明"的问题,但处理不了"边缘模糊"的问题。
4.4.2 三类不确定性推理方法
与确定性推理互补的不确定性推理方法,主要有三派:
| 方法 | 核心思想 | 处理什么 | 输出形式 |
|---|---|---|---|
| 模糊推理 | 隶属度函数(0~1连续值),非二元分类 | "边缘模糊"的问题 | 置信度 + 推理链 |
| Dempster-Shafer 证据理论 | 多源证据融合,不要求全概率分配 | 不完全信息 | 信度区间 [Bel, Pl] |
| 粗糙集三支决策 | 等价类划分 → 正域/负域/边界域 | 不确定下的决策 | Positive / Boundary / Negative |
4.4.3 分工框架:确定性与不确定性协同
确定性和不确定性推理不是"二选一",而是分层协作:
┌─────────────────────────────────────────────┐ │ 企业决策推理链 │ ├─────────────────────────────────────────────┤ │ 第一层:确定性推理(OWL + SWRL) │ │ 职责:可明确定义的规则 → 一致性的硬结论 │ │ 例子:供应商A评级为C → 订单须CEO审批 │ ├─────────────────────────────────────────────┤ │ 第二层:不确定性推理(模糊 / DS / 粗糙集) │ │ 职责:模糊条件、不完全信号 → 软结论+置信度 │ │ 例子:退货率"偏高" + 投诉"增多" → 风险评分 0.72│ ├─────────────────────────────────────────────┤ │ 第三层:决策采纳(人 or Agent) │ │ 职责:综合硬结论和软结论,做最终决策 │ │ 例子:风险评分 0.72 → 触发供应商审查流程 │ └─────────────────────────────────────────────┘分工原则:
- 确定性推理负责"法律的条文"(硬规则、合规要求、无歧义的边界条件)
- 不确定性推理负责"法官的自由裁量"(模糊信号、趋势判断、多源弱信号的聚合)
- 决策采纳层把两者汇总,形成可追溯的最终决策
确定性推理保证结论的可解释性和一致性(不会今天说 A 是对的、明天同样的输入说 A 是错的)。不确定性推理保证覆盖现实世界的灰度地带(没有一个企业决策是完全确定性的)。
4.4.4 一条关键工程原则
不要试图把所有企业规则都塞进 OWL + SWRL。
这个错误非常常见:项目团队发现 SWRL 能表达条件规则,于是把所有决策规则都翻译为 SWRL,包括那些天然模糊的规则(“客户活跃度高于正常水平”、“近期投诉量显著增加”)。
结果有两个:
- SWRL 规则被写成了一堆武断的阈值(“退货率 > 10% = 高风险”),失去实际判断力
- 本体的规则数量爆炸,维护成本失控
正确的做法:确定性推理处理"硬规则"(占决策总数的约 20-30%),不确定性推理处理"软判断"(约 60-70%),人做最后的综合决策(剩余的 10-20% 特殊情况)。
确定性推理的技术实现在本章 4.1-4.3 已详细展开;不确定性推理(模糊推理、证据理论、粗糙集)的实现将在主线二的实战项目中深入讨论。
4.5 推理机性能:实战数据参考
CTO 和架构师最关心的问题之一是:推理机能跑多快?能撑多大的本体?以下数据来自社区 benchmark 和实际项目经验,供选型参考。
规模与性能关系
| 本体规模 | 类数量 | 个体数量 | 规则数量 | 推荐推理机 | 推理耗时(典型) |
|---|---|---|---|---|---|
| 小型(部门级) | < 500 | < 10,000 | < 100 | Pellet / HermiT | < 5 秒/次 |
| 中型(企业级) | 500-5,000 | 10K-100K | 100-500 | HermiT + 增量推理 | 5-120 秒/次 |
| 大型(跨部门) | 5,000-20,000 | 100K-1M | 500-2,000 | Jena Rules + HermiT 按需 | 2-30 分钟/次(分类推理) |
| 超大型 | > 20,000 | > 1M | > 2,000 | 拆分本体 + 分批推理 | 小时级(不建议全量实时) |
工程建议
- 不要试图对所有实例做实时的 DL 分类推理。中型以上本体,分类推理(TBox reasoning)在构建/更新时做,查询推理(ABox query)在线做。
- OWL-EL profile 是性能捷径。如果你的领域约束可以用 EL 表达——比如医学术语分类、产品分类——EL 推理机(如 ELK)可在秒级完成百万级类的分类。
- 增量推理是降低延迟的核心策略。大多数推理场景不需要每次从头推理——新增一个实例,只影响与该实例类型相关的规则。Jena 的增量推理、RDFox 的增量物化均支持此模式。
- 本体设计决定了性能下限,推理机选型决定了性能上限。一个设计糟糕的本体(过多的全称量化、嵌套的补集、循环的 SWRL 依赖)在任何推理机上都会超时。
4.6 数据科学家关心的技术选择
OWL本体 vs 知识图谱Embedding:不是"选哪个",是"先后顺序"
这是数据科学家最常问的问题。两者的本质区别:
| 维度 | OWL本体推理 | 知识图谱Embedding |
|---|---|---|
| 推理方式 | 演绎:从公理推导结论 | 归纳:从图结构学出向量 |
| 可解释性 | 每条结论可追溯到公理 | 向量相似度——难以解释"为什么" |
| 覆盖范围 | 已知关系(公理覆盖) | 未知关系(link prediction) |
| 数据需求 | 领域专家定义规则 | 大规模图数据 |
| 典型输出 | “供应商X是高风险,因为它满足条件A∧B∧C” | “供应商X和Y相似度0.93” |
正确的用法是互补: 先用OWL本体定义核心业务约束(硬规则),确保关键决策可解释;再用KG Embedding发现本体尚未建模的隐含关系。两者不是替代关系,是"骨架"和"肉"的关系。
SWRL规则 vs ML模型:分工边界
在决策推理中,SWRL和ML模型各有所长:
| 场景 | SWRL | ML模型 | 建议 |
|---|---|---|---|
| 监管合规判断 | ★★★★★ 精确匹配法规条款 | ★★ 黑盒不满足合规 | 用SWRL |
| 客户分群 | ★★ 规则静态,难以动态适应 | ★★★★★ 聚类/分类天然优势 | 用ML |
| 供应链风险评估 | ★★★★ 硬指标(集中度/合规/质量) | ★★★ 软信号(舆情/趋势) | SWRL做硬规则,ML做软信号 |
| 反欺诈检测 | ★★★ 已知欺诈模式 | ★★★★ 新型欺诈模式检测 | ML发现异常,SWRL验证已知模式 |
核心原则:规则清晰且需要解释 → SWRL;模式模糊但数据充足 → ML;两者都需要的场景 → SWRL+ML组合。
推理链质量评估:三个可量化指标
推理链(inference trace)的质量可以从三个维度评估:
完整性:推理链是否覆盖了结论所需的全部前提?缺失前提 = 不可信。
- 量化方式:
完整性 = 成功验证的公理数 / 推理链声明的总公理数
- 量化方式:
一致性:推理链中的各步骤是否存在矛盾?
- 量化方式:HermiT一致性检查——本体TBox+A-Box组合是否unsatisfiable
数据时效性:推理链中引用的A-Box事实,距当前时间的最大间隔。
- 量化方式:
时效性分数 = 1 - (max(数据年龄) / 业务允许的最大延迟)
- 量化方式:
不确定推理的嵌入方式
确定性推理(OWL+SWRL)覆盖硬规则,但企业决策中有大量软判断。三种不确定推理的嵌入方式:
| 方法 | 嵌入方式 | 典型场景 |
|---|---|---|
| 模糊推理(Fuzzy OWL) | 扩展OWL公理为模糊版本;每个断言附带隶属度 [0,1] | “较大金额”“较高风险”“显著偏离” |
| Dempster-Shafer证据理论 | 将来自多个数据源的同类断言合并为一条综合置信度 | 多个系统对同一实体的矛盾标记合并 |
| 粗糙集(Rough Set) | 用于属性约简——找出哪些属性对分类决策真正不可或缺 | 降维后的本体重构 |
要点:模糊推理的隶属度函数需要领域专家定义,不是纯数据驱动——这恰好防止了"统计分数伪装成逻辑结论"的问题。
推理结论的置信度量化
推理结论的置信度量化分两种情况:
确定性推理(OWL+SWRL):
- 理论上置信度是0或1——要么蕴含(entailed),要么不蕴含
- 实践中需要对数据源标注不确定性:一个A-Box事实来自"人工录入"和来自"传感器直接采集",可靠性不同
- 建议:为每个A-Box断言附加一个
certainty属性(如0.0-1.0),在推理链输出中加权计算综合置信度
不确定性推理(模糊/证据理论):
- 模糊推理输出隶属度(如"高风险"的隶属度为0.78)
- 证据理论输出belief和plausibility区间(如[0.65, 0.82])
- 关键约定:确定性推理和不确定性推理的结论应分开呈现——“硬结论(确定性): X满足高风险条件”+“软信号(不确定性): 高风险置信度0.78”,而不是把它们混合成一个模糊数字。
本章小结
- 三类推理机各有适用场景:Tableau 是经典(Pellet),Hypertableau 是复杂本体的优化版(HermiT),规则引擎是大规模实例数据的选择(Drools / Jena Rules)
- OWL-DL 和 OWL-EL 的核心差异是推理复杂度:DL 能表达一切但最坏 NEXPTIME,EL 牺牲了并/补/全称量化但换来多项式时间推理。工程上用 EL 验证、DL 补充是常见模式
- SWRL 填补了 OWL 的规则缺口,Built-in 函数赋予它数值比较、字符串运算、日期计算的能力;DL-Safe 约束确保推理可判定;不是所有规则都该用 SWRL 写
- 确定性推理与不确定性推理不是竞争关系,是分层分工:确定性负责硬规则的可解释性,不确定性负责模糊信号的覆盖,决策采纳层做最终综合
下一章将进入企业级架构设计:如何在生产环境中把推理机、知识存储、服务编排整合为一个可运行的系统。
参考资料
[1] Sirin, E., & Parsia, B. (2004). Pellet: An OWL DL Reasoner.Proceedings of the 2004 International Workshop on Description Logics (DL2004), CEUR-WS Vol-104.
[2] Glimm, B., Horrocks, I., Motik, B., Stoilos, G., & Wang, Z. (2014). HermiT: An OWL 2 Reasoner.Journal of Automated Reasoning, 53(3), 245-269.
[3] Motik, B., Shearer, R., & Horrocks, I. (2007). Optimized Reasoning in Description Logics using Hypertableaux.Proceedings of CADE-21, LNCS 4603, Springer.
[4] Forgy, C. L. (1982). Rete: A Fast Algorithm for the Many Pattern/Many Object Pattern Match Problem.Artificial Intelligence, 19(1), 17-37.
[5] Kazakov, Y. (2008). RIQ and SROIQ are Harder than SHOIQ.Proceedings of KR 2008, AAAI Press.
[6] Baader, F., Brandt, S., & Lutz, C. (2005). Pushing the EL Envelope.Proceedings of IJCAI-05.
[7] Kazakov, Y., Krötzsch, M., & Simančík, F. (2014). The Incredible ELK: From Polynomial Procedures to Efficient Reasoning with EL Ontologies.Journal of Automated Reasoning, 53(1), 1-61.
[8] Horrocks, I., Patel-Schneider, P. F., Boley, H., Tabet, S., Grosof, B., & Dean, M. (2004). SWRL: A Semantic Web Rule Language Combining OWL and RuleML. W3C Member Submission.
[9] SWRL Built-Ins Specification. W3C Member Submission, 2004. Available at: https://www.w3.org/Submission/SWRL/#8
[10] Motik, B., Sattler, U., & Studer, R. (2005). Query Answering for OWL-DL with Rules.Journal of Web Semantics, 3(1), 41-60.
[11] Horrocks, I., & Patel-Schneider, P. F. (2004). A Proposal for an OWL Rules Language.Proceedings of WWW 2004, ACM.