首页 理论 架构 工程 文档 白皮书 著作 研究 案例 下载 博客 关于 开始使用 →

第167章 Knowledge类

第167章 Knowledge类

167.1 提出背景

在第162章至第166章中,ICAI已经建立了完整的对象结构基础。

Object用于描述对象:

Object

Attribute用于描述对象特征:

Object → Attribute

State用于描述对象当前状态:

Object → State

Relation用于描述对象之间的连接:

Subject → Relation → Object

Scene进一步将多个对象及其关系组织成整体结构:

Scene
├── Objects
├── Relations
├── State
└── Conditions

但是,到这一层仍然存在一个重要问题:

系统已经能够保存对象、属性、状态、关系和场景,那么这些结构如何形成可以被保存、调用、判断、验证和更新的知识?

例如系统获得:

Object A = 杯子
Object B = 水
Relation = 装有

于是形成:

杯子 → 装有 → 水

如果这个结构经过确认并被系统保存,那么它就不再只是当前场景中的一个瞬时关系,而可以成为系统能够再次使用的Knowledge。

因此,需要建立Knowledge类。

Knowledge,中文称为“知识”,是对对象、属性、状态、关系、场景以及其他结构化信息进行组织后形成的、能够被系统保存、调用、判断和更新的认知对象。

Knowledge的基本结构为:

Knowledge
├── Knowledge Type
├── Knowledge Relation
├── Knowledge State
└── Knowledge Update

其基本运行过程为:

Object / Relation / Scene
        ↓
Knowledge
        ↓
Knowledge Type
        ↓
Knowledge Relation
        ↓
Knowledge State
        ↓
Knowledge Update

因此,Knowledge不是简单的数据存储,而是ICAI内部可运行的结构化认知对象。


167.2 Knowledge的概念定义

Knowledge是由一个或多个结构化认知元素组成,并能够被系统保存、检索、判断、使用和更新的信息结构。

可以定义为:

K=(X,T,R,S,U)K=(X,T,R,S,U)

其中:

  • KK:Knowledge,知识对象;
  • XX:Knowledge Content,知识内容;
  • TT:Knowledge Type,知识类型;
  • RR:Knowledge Relation,知识关系;
  • SS:Knowledge State,知识状态;
  • UU:Knowledge Update,知识更新。

因此:

Knowledge
=
Content
+
Type
+
Relation
+
State
+
Update

知识的核心并不是“保存一段文字”,而是:

保存一个可以被系统理解为结构、关系、状态和条件的认知对象。

例如:

Knowledge
{
    Subject: 杯子,
    Relation: 装有,
    Object: 水
}

其核心结构仍然是:

杯子 → 装有 → 水

因此Knowledge可以来源于Object、Relation和Scene,也可以进一步形成独立的Knowledge对象。


167.3 Knowledge与Information的区别

Information,中文称为“信息”,主要表示系统接收到的内容。

Knowledge则表示经过对象化、结构化和关系化处理后,可以参与系统运行的认知结构。

例如:

信息:
“桌子上有一个杯子。”

经过结构化以后,可以形成:

Object A = 桌子
Object B = 杯子
Relation = 位于

形成:

杯子 → 位于 → 桌子

进一步保存为Knowledge:

Knowledge
{
    Subject: 杯子,
    Relation: 位于,
    Object: 桌子
}

因此:

Information
↓
Structure
↓
Knowledge

Knowledge的工程意义在于:

信息被转换为系统能够长期保存和重复使用的结构。


167.4 Knowledge Type

Knowledge Type是知识对象的类型。

不同Knowledge承担不同的认知作用,因此不能全部使用同一种类型。

例如:

fact
rule
relation
state
scene
experience
definition
condition

都可以作为Knowledge Type。

例如:

Knowledge Type = fact

表示事实知识。

例如:

Knowledge Type = rule

表示规则知识。

例如:

Knowledge Type = state

表示状态知识。

因此:

Knowledge
 ↓
Knowledge Type
 ↓
确定知识的结构和处理方式

167.5 Fact Knowledge

Fact Knowledge,中文称为事实知识,用于描述已经被系统记录的事实结构。

例如:

杯子 → 位于 → 桌子

可以建立:

Knowledge Type = fact

其结构为:

Subject = 杯子
Relation = 位于
Object = 桌子

形成:

Kfact=(S,R,O)K_{fact}=(S,R,O)

事实知识主要回答:

当前系统知道什么事实?

例如:

人A → 使用 → 手机B
手机B → 连接 → 网络C

都可以成为Fact Knowledge。


167.6 Rule Knowledge

Rule Knowledge,中文称为规则知识,用于描述:

当某些条件成立时,可以进行什么判断或产生什么结果。

例如:

如果杯子中有水
且人拿着杯子
则可以判断为饮水准备状态

可以结构化为:

Condition 1
AND
Condition 2
↓
Rule
↓
Result

因此Rule Knowledge不是普通事实,而是:

条件
→
规则
→
结果

这类知识将在后续Method、Behavior和Decision工程中发挥重要作用。


167.7 Knowledge Relation

Knowledge Relation表示知识对象之间的结构关系。

Knowledge自身也不是孤立存在的。

例如:

Knowledge A:
杯子 → 装有 → 水

Knowledge B:
人 → 拿着 → 杯子

两个Knowledge之间可以形成:

Knowledge A
      ↓
supports
      ↓
Knowledge B

或者:

Knowledge A
      ↓
depends_on
      ↓
Knowledge B

因此Knowledge之间同样可以建立关系网络。


167.8 Knowledge Relation与Object Relation的区别

Object Relation:

Object A → Relation → Object B

描述的是现实对象之间的关系。

Knowledge Relation:

Knowledge A → Relation → Knowledge B

描述的是知识结构之间的关系。

例如:

Object Relation:
杯子 → 位于 → 桌子

而:

Knowledge Relation:
“杯子位于桌子”
        ↓
支持
        ↓
“杯子可以从桌子上拿起”

因此:

Object Relation
=
对象之间的关系

Knowledge Relation
=
知识之间的关系

二者不能混为一谈。


167.9 Knowledge State

Knowledge State是知识对象当前所处的状态。

知识不是永久固定的。

一条Knowledge可能处于:

unknown
active
verified
unverified
changed
obsolete
invalid

等状态。

例如刚刚获得的知识:

Knowledge State = unknown

经过系统确认以后:

Knowledge State = verified

如果后来发现知识已经发生变化:

verified
↓
changed

如果知识不再适用:

changed
↓
obsolete

因此:

Knowledge
 ↓
Knowledge State
 ↓
描述知识当前是否有效以及处于什么阶段

167.10 Knowledge State与事实状态的区别

必须区分:

Object State
Relation State
Scene State

和:

Knowledge State

例如:

杯子状态 = 完整

表示Object State。

杯子 → 位于 → 桌子
Relation State = active

表示Relation State。

喝水场景 = 进行中

表示Scene State。

而:

Knowledge:
杯子 → 位于 → 桌子

Knowledge State = verified

表示系统当前认为这条知识已经被确认。

因此:

Object State
→ 对象状态

Relation State
→ 关系状态

Scene State
→ 场景状态

Knowledge State
→ 知识状态

这是四个不同的工程层次。


167.11 Knowledge Update

Knowledge Update表示知识内容发生变化时,对Knowledge对象进行更新。

例如原知识:

杯子 → 位于 → 桌子A

后来发现杯子已经被移动到桌子B:

杯子 → 位于 → 桌子B

因此Knowledge发生变化。

其过程为:

Old Knowledge
      ↓
Change Detection
      ↓
Knowledge Update
      ↓
New Knowledge

形式化表示:

Kold→Update→KnewK_{old}\rightarrow Update\rightarrow K_{new}

例如:

K1:
杯子 → 位于 → 桌子A

↓ Update

K2:
杯子 → 位于 → 桌子B

原Knowledge不能简单被物理删除,因为旧知识本身可能属于历史记录。

因此更新应同时考虑:

Current Knowledge
+
Knowledge History

167.12 Knowledge Update的原因

Knowledge Update可能由多种原因触发。

例如:

新对象发现
状态变化
关系变化
场景变化
条件变化
新事实进入
旧事实失效
知识验证
知识修正

统一表示为:

New Information
      ↓
Comparison
      ↓
Knowledge Change
      ↓
Knowledge Update

其中Comparison负责比较旧结构与新结构。

例如:

旧:
杯子 → 位于 → 桌子A

新:
杯子 → 位于 → 桌子B

比较:

Subject相同
Relation相同
Object不同

于是确定:

Knowledge Changed = true

再执行Update。


167.13 Knowledge的PHP OOP实现

按照前面各类的工程化设计,Knowledge也应该成为独立PHP类。

基础实现:

class Knowledge
{
    protected $content;
    protected $type;
    protected $relations = array();
    protected $state;
    protected $history = array();

    public function __construct($content, $type)
    {
        $this->content = $content;
        $this->type = $type;
        $this->state = 'unknown';

        $this->recordHistory();
    }

    public function getContent()
    {
        return $this->content;
    }

    public function getType()
    {
        return $this->type;
    }

    public function getState()
    {
        return $this->state;
    }

    public function setState($state)
    {
        $this->state = $state;
        $this->recordHistory();
    }

    public function addRelation($relation)
    {
        $this->relations[] = $relation;
    }

    public function getRelations()
    {
        return $this->relations;
    }

    protected function recordHistory()
    {
        $this->history[] = array(
            'content' => $this->content,
            'type' => $this->type,
            'state' => $this->state,
            'time' => time()
        );
    }

    public function getHistory()
    {
        return $this->history;
    }
}

该类已经形成:

Knowledge
├── Content
├── Type
├── Relations
├── State
└── History

167.14 Knowledge Update方法

进一步增加Knowledge更新能力:

public function update($content, $type = null)
{
    $this->content = $content;

    if ($type !== null) {
        $this->type = $type;
    }

    $this->state = 'changed';

    $this->recordHistory();
}

于是:

旧Knowledge
↓
update()
↓
新Knowledge

例如:

$knowledge = new Knowledge(
    '杯子位于桌子A',
    'fact'
);

$knowledge->update(
    '杯子位于桌子B'
);

更新以后:

Knowledge Content
=
杯子位于桌子B

Knowledge State
=
changed

167.15 Knowledge验证

Knowledge需要能够被验证。

可以增加:

public function verify()
{
    $this->state = 'verified';
    $this->recordHistory();
}

运行过程:

Knowledge
↓
Verification
↓
verified

例如:

$knowledge->verify();

知识状态从:

unknown

变为:

verified

这样Knowledge就具有状态生命周期。


167.16 Knowledge生命周期

Knowledge的基本生命周期可以表示为:

Knowledge发现
↓
Knowledge创建
↓
Knowledge解析
↓
Knowledge结构化
↓
Knowledge验证
↓
Knowledge使用
↓
Knowledge变化检测
↓
Knowledge Update
↓
Knowledge重新验证
↓
Knowledge继续使用
↓
Knowledge失效

形式化表示:

Knew→Verify→Active→Change→Update→Verify→ActiveK_{new} \rightarrow Verify \rightarrow Active \rightarrow Change \rightarrow Update \rightarrow Verify \rightarrow Active

如果知识失效:

Active
↓
Invalid

因此Knowledge是具有生命周期的认知对象。


167.17 Knowledge与Object

Knowledge可以描述Object。

例如:

Object:
杯子

其属性:

颜色 = 白色
材质 = 陶瓷

这些结构可以形成Knowledge:

Knowledge A:
杯子颜色是白色

Knowledge B:
杯子材质是陶瓷

因此:

Object
 ↓
Attribute
 ↓
Knowledge

但是Knowledge不等于Object。

Object是被认知和操作的对象。

Knowledge是系统保存和使用的结构化认知内容。


167.18 Knowledge与Relation

Relation可以直接形成Knowledge。

例如:

杯子 → 位于 → 桌子

这是一个Relation。

当系统将其作为可以保存、验证和再次调用的事实结构时:

Relation
↓
Knowledge

形成:

Knowledge Type = fact

因此:

Relation
=
当前对象关系结构

Knowledge
=
可以被系统保存、使用和更新的结构化知识

同一个结构可以同时具有Relation层和Knowledge层的工程表达。


167.19 Knowledge与Scene

Scene可以产生场景知识。

例如:

Scene:
人正在喝水

其中包含:

人
杯子
水
桌子

以及:

人 → 拿着 → 杯子
杯子 → 装有 → 水
杯子 → 位于 → 桌子

如果这个场景结构被系统保存:

Scene
↓
Knowledge

可以形成:

Knowledge Type = scene

于是:

Scene Knowledge

成为系统可以再次使用的结构。


167.20 Knowledge与经验

Knowledge和Experience虽然存在联系,但不是同一个对象。

Knowledge主要回答:

系统知道什么?

Experience主要回答:

系统过去发生过什么,以及从过去过程中获得了什么结构?

例如:

Knowledge:
杯子可以装水。

而Experience可能记录:

过去执行取杯
→ 拿起杯子
→ 杯子没有破损
→ 成功装水

于是:

Experience
↓
结构提取
↓
Knowledge

因此Knowledge可以成为Experience学习后的稳定结构之一。


167.21 Knowledge Relation Network

当Knowledge数量增加以后,可以形成Knowledge Relation Network。

例如:

Knowledge A
杯子 → 装有 → 水

与:

Knowledge B
人 → 拿着 → 杯子

建立:

Knowledge A
      ↑
 depends_on
      ↑
Knowledge B

再与:

Knowledge C
人正在喝水

建立:

Knowledge A
      ↓
supports
      ↓
Knowledge C

Knowledge B
      ↓
supports
      ↓
Knowledge C

于是:

Knowledge
 ↓
Knowledge Relations
 ↓
Knowledge Network

知识不再是孤立记录,而成为可以进行结构匹配的知识网络。


167.22 Knowledge状态更新模型

Knowledge运行过程中可以建立如下更新模型:

Current Knowledge
       ↓
New Information
       ↓
Comparison
       ↓
No Change ─────────→ Keep
       ↓
     Change
       ↓
Knowledge Update
       ↓
State = changed
       ↓
Verification
       ↓
State = verified

因此:

Kcurrent+Inew→Compare→Update→VerifyK_{current}+I_{new} \rightarrow Compare \rightarrow Update \rightarrow Verify

其中:

  • KcurrentK_{current}:当前知识;
  • InewI_{new}:新信息;
  • Compare:结构比较;
  • Update:知识更新;
  • Verify:知识验证。

167.23 Knowledge在ICAI中的位置

经过第162~167章,ICAI的核心对象链进一步扩展。

Individual
 ↓
Object
 ↓
Attribute
 ↓
State
 ↓
Relation
 ↓
Scene
 ↓
Knowledge

其中:

Object
→ 对象

Attribute
→ 对象特征

State
→ 对象状态

Relation
→ 对象关系

Scene
→ 对象关系形成的整体结构

Knowledge
→ 可以被系统保存、验证、调用和更新的结构化认知内容

因此Knowledge位于对象结构与认知结构之间的重要位置。


167.24 Knowledge的工程架构

在PHP OOP系统中,可以形成如下结构:

Knowledge
├── Knowledge Content
├── Knowledge Type
├── Knowledge Relations
├── Knowledge State
└── Knowledge History

外围可以建立:

KnowledgeManager
KnowledgeRepository
KnowledgeValidator
KnowledgeUpdater
KnowledgeMatcher

其中:

KnowledgeManager负责Knowledge对象管理。

KnowledgeRepository负责Knowledge持久化。

KnowledgeValidator负责知识状态验证。

KnowledgeUpdater负责知识更新。

KnowledgeMatcher负责知识结构之间的匹配。

这样Knowledge类就可以从单一对象进一步进入完整工程模块。


167.25 Knowledge Manager

可以建立基本的KnowledgeManager:

class KnowledgeManager
{
    protected $knowledge = array();

    public function addKnowledge(Knowledge $knowledge)
    {
        $this->knowledge[] = $knowledge;
    }

    public function getKnowledge()
    {
        return $this->knowledge;
    }

    public function count()
    {
        return count($this->knowledge);
    }
}

运行结构为:

KnowledgeManager
 ↓
Knowledge Collection
 ↓
Knowledge

这样系统可以管理多个Knowledge对象。


167.26 Knowledge与数据库

当Knowledge需要长期保存时,可以映射到数据库。

例如建立:

knowledge

表。

基本字段可以包括:

id
knowledge_type
content
state
created_at
updated_at

如果Knowledge具有Subject、Relation、Object结构,还可以进一步保存:

subject_id
relation_type
object_id

于是数据库层可以表达:

Knowledge
├── Subject
├── Relation
├── Object
├── Type
├── State
└── Time

PHP Object层负责运行。

MySQL负责持久化。

形成:

PHP Knowledge Object
        ↓
Knowledge Repository
        ↓
MySQL

这使Knowledge真正进入可运行的软件工程结构。


167.27 Knowledge的认知运行链

Knowledge的完整认知运行链可以表示为:

Information
↓
Object
↓
Attribute
↓
Relation
↓
Scene
↓
Knowledge
↓
Knowledge Type
↓
Knowledge Relation
↓
Knowledge State
↓
Knowledge Update
↓
Knowledge Network

其中:

Information

是输入结构;

Object

是对象结构;

Relation

是关系结构;

Scene

是整体场景结构;

Knowledge

是可保存和使用的结构化认知结构。


167.28 Knowledge与认知决策

Knowledge最终需要进入认知运行过程。

例如:

Knowledge:
杯子中有水

Knowledge:
人手中有杯子

系统进行结构匹配:

Knowledge A
+
Knowledge B
↓
Condition
↓
Method
↓
Behavior

于是Knowledge成为后续Method和Behavior执行的重要依据。

其运行链为:

Knowledge
↓
Knowledge Matching
↓
Condition
↓
Method
↓
Behavior
↓
State Change
↓
New Knowledge

这形成知识驱动的对象运行闭环。


167.29 Knowledge Update与学习

Knowledge Update也是学习过程的重要工程基础。

当系统发现:

旧Knowledge

与:

新Information

不一致时:

Old Knowledge
+
New Information
↓
Comparison
↓
Difference
↓
Knowledge Update

例如:

旧知识:
杯子位于桌子A

新信息:
杯子位于桌子B

系统比较以后发现:

Object相同
Relation相同
Target Object不同

于是:

Knowledge Changed
↓
Update
↓
New Knowledge

这使学习不再只是增加数据,而成为:

对已有认知结构进行比较、修正和更新的过程。


167.30 本章总结

Knowledge类是ICAI从对象结构进入知识结构的重要基础类。

其核心模型为:

K=(X,T,R,S,U)K=(X,T,R,S,U)

其中:

  • XX:Knowledge Content,知识内容;
  • TT:Knowledge Type,知识类型;
  • RR:Knowledge Relation,知识关系;
  • SS:Knowledge State,知识状态;
  • UU:Knowledge Update,知识更新。

因此:

Knowledge
├── Content
├── Type
├── Relation
├── State
└── Update

Knowledge的核心运行过程为:

Information
→ Structure
→ Knowledge
→ Verification
→ Usage
→ Change Detection
→ Update
→ Verification

从对象工程角度看:

Object
→ Attribute
→ State
→ Relation
→ Scene
→ Knowledge

形成了从对象对象关系、从对象关系场景结构、再从场景结构可保存认知结构的连续工程链。

Knowledge并不是简单的信息存储,也不是普通文本集合,而是能够被系统作为对象进行:

创建
保存
验证
调用
匹配
判断
更新

的一种结构化认知对象。

因此,第167章建立的核心关系是:

Object
↓
Relation
↓
Scene
↓
Knowledge
↓
Knowledge State
↓
Knowledge Update

至此,ICAI已经从“对象工程”进一步进入“知识对象工程”,为后续的Knowledge Matching、Method、Behavior以及认知运行过程提供了直接的软件对象基础。

Leave a Reply

Your email address will not be published. Required fields are marked *