第34章 EOM 模型
本章大纲
- EOM 定义
- Element
- Object
- Relation
- Method
- EOM 数据结构
- EOM 创建
- EOM 查询
- EOM 匹配
- EOM 更新
- EOM 完整案例
34.1 EOM 定义
EOM 是 SAI Framework 中用于把基础元素组织成对象、关系和对象操作能力的一种核心结构模型。
EOM:
E = Element(元素)
O = Object(对象)
M = Method(方法)
而 Relation 是连接 E、O、M 的关系结构。
因此,本章所说的 EOM,不只是简单的三个名词,而是一种从信息元素逐步形成可操作对象的组织模型:
Element
↓
Object
├── Property
├── State
├── Relation
└── Method
进一步可以表示:
Element
↓
Object
↓
Relation
↓
Method
EOM 的核心思想
前面第29~33章分别建立了:
Element
Object
Property
Method
Relation
现在把这些结构统一起来:
Element
↓
Object
↙ ↓ ↘
Property State Relation
↓
Method
其中:
- Element:最基础的信息单元
- Object:由元素组织形成的实体
- Relation:连接实体及其组成部分
- Method:对象可以执行的操作
所以 EOM 的目标不是“保存数据”,而是:
把分散的信息元素组织成具有身份、属性、关系、状态和操作能力的对象结构。
34.2 Element
Element 是 EOM 的基础输入。
前一章已经定义:
Element 是信息中可以被独立识别、描述、比较、匹配和进一步组织的最基础信息单元。
例如从场景中获得:
temperature
32
person
present
fan
off
living-room
可以形成:
Element
├── temperature
├── 32
├── person
├── present
├── fan
├── off
└── living-room
这些元素本身还不是完整对象。
例如:
fan
只能说明存在一个“fan”元素。
而:
fan
off
living-room
speed = 0
经过组织后才能形成:
Object
Fan
所以:
Element
→ 基础信息单元
是 EOM 的起点。
34.2.1 Element 的结构
可以统一为:
Element
{
id
type
value
source
state
time
metadata
}
例如:
Element
id = element-000001
type = property
value = temperature
source = sensor-001
state = valid
另一个:
Element
id = element-000002
type = value
value = 32
source = sensor-001
state = valid
34.2.2 Element 的作用
Element 主要负责:
识别
描述
保存
比较
匹配
组织
但 Element 本身不负责:
完整对象组织
复杂关系管理
决策
行为
因此:
Element
↓
EOM Object Construction
才进入对象层。
34.3 Object
Object 是 EOM 的核心实体。
定义:
Object 是由相关 Element 组织形成的、具有明确身份、类型、属性、状态、关系和方法的实体。
例如:
Element
├── fan
├── off
├── speed
├── 0
└── living-room
组织后:
Object
ID = fan-001
Type = fan
并拥有:
Property
├── speed = 0
└── location = living-room
State
└── off
Method
├── turnOn()
├── turnOff()
└── setSpeed()
34.3.1 Element → Object
这是 EOM 最关键的转换。
Element
↓
识别共同对象
↓
组织
↓
Object
例如:
Element A
fan
Element B
speed
Element C
0
Element D
living-room
通过对象标识和关联关系:
fan
├── speed → 0
└── location → living-room
形成:
Object
fan-001
34.3.2 Object 不等于 Element
例如:
Element
fan
只是一个元素。
而:
Object
fan-001
├── Type = fan
├── speed = 0
├── location = living-room
├── state = off
└── Method = turnOn()
是完整对象。
所以:
Element → 局部
Object → 整体
34.4 Relation
Relation 是 EOM 中的连接结构。
如果没有 Relation:
Person
Fan
Room
Sensor
彼此只是独立对象。
加入 Relation:
Person
│
└── located_at → Room
Fan
│
└── located_at → Room
Sensor
│
└── detects → Temperature
对象世界就建立起来了。
34.4.1 Relation 的基本形式
Subject
↓
Relation
↓
Object
例如:
person-001
↓
located_at
↓
room-001
34.4.2 Relation 连接 Element
Relation 不一定只能连接 Object。
例如:
Element A
temperature
Element B
room
可以:
temperature
↓
property_of
↓
room
所以 EOM 中 Relation 可以参与:
Element → Element
Element → Object
Object → Object
Object → Property
Property → Property
State → Object
34.5 Method
Method 是 Object 的操作能力。
例如:
Object
Fan
拥有:
Method
├── turnOn()
├── turnOff()
└── setSpeed(speed)
因此:
Object
↓
Method
表示:
这个对象能够执行什么操作。
34.5.1 Method 与 Object 的关系
例如:
fan-001
│
├── turnOn()
├── turnOff()
└── setSpeed()
Method 并不是独立于 Object 的行为。
它属于对象能力结构的一部分。
34.5.2 Method 与 Property 的关系
Method 执行后可能改变 Property:
setSpeed(1200)
↓
Property
speed = 1200
也可能改变 State:
turnOn()
↓
State
off → on
所以:
Method
↓
改变
├── Property
└── State
34.6 EOM 数据结构
EOM 可以建立统一的数据结构。
EOM
{
elements
objects
relations
methods
}
更完整:
EOM
{
elements: {},
objects: {},
relations: {},
methods: {}
}
34.6.1 Element 数据
elements
{
element-000001:
{
type: "object",
value: "fan"
},
element-000002:
{
type: "property",
value: "speed"
},
element-000003:
{
type: "value",
value: 1200
}
}
34.6.2 Object 数据
objects
{
fan-001:
{
type: "fan",
properties:
{
speed: 1200
},
state: "on"
}
}
34.6.3 Relation 数据
relations
{
relation-001:
{
type: "located_at",
subject: "fan-001",
object: "room-001"
}
}
34.6.4 Method 数据
methods
{
fan-001:
{
turnOn,
turnOff,
setSpeed
}
}
34.7 EOM 创建
EOM 创建可以从 Element 开始。
基本流程:
Information
↓
Element
↓
Element Organization
↓
Object
↓
Property / State
↓
Relation
↓
Method
34.7.1 创建 Element
例如:
$fanElement = new Element(
'element-000001',
'object',
'fan',
'scene-001'
);
创建:
Element
type = object
value = fan
34.7.2 创建 Object
$fan = new Object(
'fan-001',
'fan'
);
34.7.3 添加 Property
$fan->setProperty(
'speed',
0
);
$fan->setProperty(
'location',
'living-room'
);
形成:
Fan
├── speed = 0
└── location = living-room
34.7.4 设置 State
$fan->setState(
'off'
);
34.7.5 添加 Method
$fan->addMethod(
'turnOn',
$turnOn
);
$fan->addMethod(
'turnOff',
$turnOff
);
$fan->addMethod(
'setSpeed',
$setSpeed
);
34.7.6 创建 Relation
$relation = new Relation(
'relation-000001',
'located_at',
'fan-001',
'room-001',
'scene-001'
);
最终:
Fan
│
└── located_at
↓
Room
34.8 EOM 查询
EOM 建立之后,需要能够查询。
例如:
查询:
fan-001
返回:
Object
ID = fan-001
Type = fan
State = off
Property:
speed = 0
location = living-room
34.8.1 按 ID 查询
$fan = $objectManager->get(
'fan-001'
);
34.8.2 按 Type 查询
例如:
查询 type = fan
得到:
fan-001
fan-002
fan-003
34.8.3 按 Property 查询
例如:
查询:
speed = 1200
可能得到:
fan-001
fan-003
34.8.4 按 State 查询
例如:
查询:
state = on
得到:
fan-001
fan-002
34.8.5 按 Relation 查询
例如:
查询:
located_at = room-001
得到:
fan-001
person-001
sensor-001
于是:
EOM Query
├── ID Query
├── Type Query
├── Property Query
├── State Query
└── Relation Query
34.9 EOM 匹配
EOM Matching 用于判断一个 EOM 结构是否符合另一个结构或者指定条件。
例如:
Object A
type = fan
speed = 1200
state = on
条件:
type = fan
state = on
结果:
Match = true
34.9.1 Element Matching
例如:
Element A
type = temperature
value = 32
Element B
type = temperature
value = 32
可以:
Match = true
34.9.2 Object Matching
例如:
Object A
type = fan
Object B
type = fan
可以匹配。
如果:
Object B
type = door
则:
Match = false
34.9.3 Property Matching
例如:
speed = 1200
条件:
speed > 1000
得到:
Match = true
34.9.4 Relation Matching
例如:
fan-001
located_at
room-001
查询条件:
fan
located_at
room-001
匹配:
true
34.9.5 EOM 综合匹配
例如条件:
Object Type = fan
Property speed > 1000
State = on
Relation located_at room-001
目标对象:
Fan
speed = 1200
state = on
located_at = room-001
结果:
Match = true
这里的匹配依然是结构、值、条件和关系的离散匹配,不需要引入 Embedding、Vector Search 或其他大模型机制。
34.10 EOM 更新
EOM 不是静态结构。
外部世界发生变化后:
External World
↓
Information
↓
Element
↓
EOM Update
34.10.1 Property 更新
原来:
Fan
speed = 0
收到新信息:
speed = 1200
更新:
speed
0 → 1200
34.10.2 State 更新
原来:
Fan
state = off
收到:
fan turned on
更新:
off → on
34.10.3 Relation 更新
原来:
Fan
located_at
Room-001
移动后:
Fan
located_at
Room-002
则关系需要更新:
Room-001
↓
located_at
↑
删除旧关系
Fan
↓
located_at
↓
Room-002
34.10.4 Element 更新驱动 Object 更新
完整过程:
Sensor
↓
Information
↓
Element
↓
Element Changed
↓
Object Property / State Changed
↓
Relation Changed
这使 EOM 能够持续反映外部世界变化。
34.11 EOM 完整案例
下面建立一个完整的客厅场景。
第一步:获得 Elements
Element
├── room
├── living-room
├── temperature
├── 32
├── person
├── present
├── fan
├── off
└── speed
第二步:组织 Room Object
Object
ID = room-001
Type = room
加入 Property:
temperature = 32
name = living-room
State:
occupied
形成:
Room
├── Property
│ ├── name = living-room
│ └── temperature = 32
│
└── State
└── occupied
第三步:组织 Person Object
Object
ID = person-001
Type = person
Property:
location = living-room
State:
present
第四步:组织 Fan Object
Object
ID = fan-001
Type = fan
Property:
speed = 0
location = living-room
State:
off
Method:
turnOn()
turnOff()
setSpeed()
第五步:建立 Relation
person-001
│
└── located_at → room-001
fan-001
│
└── located_at → room-001
形成:
room-001
/ \
/ \
person-001 fan-001
│
├── speed = 0
├── state = off
└── Method
├── turnOn
├── turnOff
└── setSpeed
34.12 EOM 完整 PHP 示例
下面把核心结构组合起来:
<?php
$elements = array();
$objects = array();
$relations = array();
$elements[] = new Element(
'element-000001',
'object',
'room',
'scene-001'
);
$elements[] = new Element(
'element-000002',
'object',
'fan',
'scene-001'
);
$elements[] = new Element(
'element-000003',
'property',
'temperature',
'sensor-001'
);
$elements[] = new Element(
'element-000004',
'value',
32,
'sensor-001'
);
$room = new Object(
'room-001',
'room'
);
$room->setProperty(
'name',
'living-room'
);
$room->setProperty(
'temperature',
32
);
$room->setState(
'occupied'
);
$fan = new Object(
'fan-001',
'fan'
);
$fan->setProperty(
'speed',
0
);
$fan->setProperty(
'location',
'living-room'
);
$fan->setState(
'off'
);
$objects['room-001'] = $room;
$objects['fan-001'] = $fan;
$relations[] = new Relation(
'relation-000001',
'located_at',
'fan-001',
'room-001',
'scene-001'
);
得到:
EOM
│
├── Elements
│ ├── room
│ ├── fan
│ ├── temperature
│ └── 32
│
├── Objects
│ ├── room-001
│ └── fan-001
│
└── Relations
└── fan-001
located_at
room-001
34.13 EOM 的完整运行链
现在把第29~34章连接起来:
External World
↓
InformationSource
↓
Sensor
↓
InformationReceiver
↓
Information
↓
SceneCollector
↓
Scene
↓
Central
↓
Dispatcher
↓
Coordinator
↓
Perception
↓
Element
↓
EOM
EOM 内部:
Element
↓
Object
├── Property
├── State
├── Relation
└── Method
然后进入:
Cognition
↓
Understanding
↓
Reasoning
↓
Decision
↓
Behavior
↓
Method
↓
Object
形成完整闭环:
信息
↓
元素
↓
对象
↓
关系
↓
理解
↓
推理
↓
决策
↓
行为
↓
方法
↓
对象状态/属性变化
↓
反馈
↓
信息
34.14 EOM 的核心意义
EOM 最重要的价值是把:
“信息”
转换成:
“结构化对象世界”
例如最初只有:
32
person
fan
off
living-room
通过 EOM:
Room
├── temperature = 32
│
├── Person
│
└── Fan
├── state = off
└── speed = 0
再通过 Relation:
Person → located_at → Room
Fan → located_at → Room
再通过 Method:
Fan
├── turnOn()
├── turnOff()
└── setSpeed()
于是 SAI 获得:
实体
+
属性
+
状态
+
关系
+
操作能力
这才构成后续认知处理所需要的基本对象世界。
本章小结
第34章建立了 EOM 模型。
EOM 的核心:
E = Element
O = Object
M = Method
同时由 Relation 将这些结构连接起来:
Element
↓
Object
├── Property
├── State
├── Relation
└── Method
核心过程:
Element
↓
识别
↓
组织
↓
Object
↓
Relation
↓
Method
核心操作:
EOM
├── 创建
├── 查询
├── 匹配
└── 更新
核心数据结构:
EOM
├── Elements
├── Objects
├── Relations
└── Methods
最重要的概念关系:
Element → 信息基础单元
Object → 实体
Property → 实体特征
State → 实体状态
Relation → 实体联系
Method → 实体操作能力
因此:
EOM 是 SAI Framework 从“元素级信息”进入“对象级结构”的核心组织模型。
到第34章结束,SAI 已经完成:
Information
↓
Scene
↓
Element
↓
EOM
↓
Object
├── Property
├── State
├── Relation
└── Method
下一章 第35章:从 Information 到 Object 将把前面的 Information、Scene、Element、EOM、Object 全部串联起来,完整说明一条信息是如何逐步转换成 SAI 可理解和可操作的对象结构。
说明:以上 PHP 代码是本章的设计示例,用于说明 SAI Framework 的 OOP 结构,未作为实际项目代码执行验证。