规则与推理基础
第 23 章 · 知识图谱
知识图谱里存的不只是「写进去的事实」 ,还能通过规则 推出新事实 (如「A 是 B 的父,B 是 C 的父 ⇒ A 是 C 的祖父」),或发现矛盾 (一致性检查)。基于规则的推理 用「若条件成立则结论成立」的规则,配合前向链 (从已有事实不断推导)或后向链 (从目标反向找证据)。本章介绍前向与后向链、规则语言与引擎、以及推理在 KG 中的补全 与一致性检查 。
一、基于规则的推理:前向链与后向链
一条规则 通常形如「若前提(条件)成立,则结论成立」,可写成 premise → conclusion 或 Horn 子句。推理引擎在事实集 与规则集 上运行,产生新事实或回答查询。
前向链(Forward Chaining) :从已有事实出发,反复尝试用规则——若某条规则的前提被当前事实集满足,则把该规则的结论加入事实集;直到没有新事实可推导为止。适合「把所有能推出来的都推出来」、离线补全或物化视图。
后向链(Backward Chaining) :从待证目标出发,看哪条规则的结论能匹配该目标;若匹配,则把该规则的前提当作子目标,递归证明子目标;若子目标能由事实直接满足,则目标得证。适合「只回答当前问题」、查询时按需推导。
Forward chaining vs backward chaining
Forward chaining
Facts + Rules
Match rule premise
Add conclusion to facts
Repeat until fixpoint
Backward chaining
Goal + Rules + Facts
Goal matches rule conclusion?
Prove premises as subgoals
Recurse until facts
Forward: expand fact set until no new conclusions (materialize). Backward: prove goal by reducing to subgoals/facts (query-time).
Rule: premise → conclusion. Forward = data-driven; backward = goal-driven.
Forward chaining vs backward chaining: direction of inference
前向链:事实+规则 → 匹配前提 → 加入结论 → 直至不动点;后向链:目标 → 匹配规则结论 → 证明前提为子目标 → 递归至事实
规则示例: parent(x,y) ∧ parent(y,z) → grandparent(x,z)。前向:已有 parent(A,B)、parent(B,C) 则推出 grandparent(A,C)。后向:要证 grandparent(A,C),找规则得子目标 parent(A,y)、parent(y,C),再由事实满足。
二、规则语言与引擎
规则 需要一种形式化语言来表达。常见形式包括:Horn 子句 (一结论、多前提,对应逻辑程序);RIF(Rule Interchange Format) (W3C 规则交换格式);SWRL (Semantic Web Rule Language,与 OWL 结合,用于 RDF/本体)。规则中的原子可以是「三元组模式」或「类/属性约束」,结论可以是新三元组或类成员。
推理引擎 负责在事实与规则上执行前向或后向链。有的引擎只做规则推理,有的与本体推理 (OWL 描述逻辑)结合——下一章会讲描述逻辑与 OWL 推理机。引擎需处理:规则与事实的匹配、变量绑定、冲突与优先级(多规则可推出同一结论时)、以及终止性(避免无限推导)。
Rule language and engine pipeline
Facts
(RDF / KB)
Rules
Horn / RIF / SWRL
Engine
Forward / Backward
New facts / Answer
Materialized or query
Engine: match premise to facts, bind variables, fire rule, add conclusion; handle conflict and termination
Rule languages: Horn, RIF, SWRL (with OWL). Engines: Jena rules, RDFox, Drools, custom; often combined with DL reasoner
Facts + Rules → Engine → Inferred facts or query answers
规则语言与引擎:事实与规则输入 → 推理引擎(前向/后向)→ 新事实或查询答案
三、推理在知识图谱中的应用:补全与一致性检查
知识补全(Knowledge Completion) :利用规则推导出图中未显式存储但逻辑上成立 的三元组。例如传递性规则「若 parent(x,y) 且 parent(y,z) 则 grandparent(x,z)」,图中若有 parent(A,B)、parent(B,C),可推出 grandparent(A,C) 并加入图或仅在查询时推导。补全可提高查询召回、支持更完整的推理链;可离线物化(前向链)或查询时按需推导(后向链)。
一致性检查(Consistency Checking) :用规则或约束描述「不应出现的情况」,推理引擎或验证器检查当前图是否违反 这些约束。例如「一人不能同时是另一人的父亲和母亲」「某属性取值必须在枚举集中」。若发现违反,可标记冲突、阻止写入或触发人工审核。与本体中的 disjoint、cardinality 等结合,可做更丰富的约束检查。
应用小结
补全:用规则推导隐含事实,物化或按需;提高召回与推理链。一致性:用约束规则检测冲突,标记或拦截;与本体约束结合。
Reasoning in KG: completion and consistency
KG (explicit facts)
parent(A,B), parent(B,C)
Rules (e.g. transitivity)
Completion: grandparent(A,C)
KG + constraints
e.g. Person disjoint roles
Check violations
Consistency: conflict / OK
Completion: infer missing but entailed triples (materialize or query-time). Consistency: detect constraint violations for data quality.
Rules and reasoning enable both enrichment (completion) and validation (consistency) on the knowledge graph
Left: completion. Right: consistency. Both use rule engine over KG.
推理在 KG 中:左—补全(显式事实+规则→推出隐含事实);右—一致性检查(图+约束→发现冲突或通过)
一句话: 基于规则的推理 用「前提→结论」的规则在事实集上推导。前向链 从事实出发不断应用规则直至不动点;后向链 从目标反向分解为子目标直至事实。规则语言 有 Horn、RIF、SWRL 等;引擎 负责匹配、绑定与终止。在 KG 中 :补全 推出隐含三元组;一致性检查 发现约束违反。下一章将讲本体推理与描述逻辑(OWL、推理机)。
实践: 用 Jena 或 RDFox 等支持规则的引擎,写一条简单传递性规则(如 sameAs 的传递闭包),对一个小 RDF 图做前向推理,观察生成的新三元组;再定义一条约束(如某类实例不能有某属性),做一致性检查。
四、小结
规则推理 以「前提→结论」的规则为核心。前向链 数据驱动、可物化补全;后向链 目标驱动、适合按需回答查询。规则语言 (Horn、RIF、SWRL)与推理引擎 配合事实与规则产生新事实或答案。在知识图谱中 ,推理用于补全 (推导隐含事实)与一致性检查 (发现约束违反)。下一章讲本体推理与描述逻辑 :OWL 与描述逻辑、可满足性与分类、以及 HermiT、Pellet、RDFox 等推理机。
← 返回目录
上一章:存储选型与性能优化
下一章:本体推理与描述逻辑 →