第265章 Attribute API|属性 API
265.1 提出背景
在 ICAI 机器认知工程中,第263章建立了 Element API,第264章建立了 Object API。
Element API 解决的是:
现实数据
↓
Element
Object API 解决的是:
Element
↓
Object Instance
但是,一个 Object 并不是只有一个名称和一个 ID。
对象之所以能够被机器认知,是因为对象具有大量能够描述自身的 Attribute(属性)。
例如一个物体可以具有:
Position
Velocity
Mass
Size
Force
Pressure
Temperature
Shape
Color
Stability
Distance
Orientation
这些属性又不是永远固定不变的。
例如:
Position(t)
Velocity(t)
Force(t)
Pressure(t)
Distance(t)
都会随着时间、环境以及其他对象的作用发生变化。
因此,在 Object API 之后,必须建立一个专门负责对象属性管理和动态属性计算的工程接口。
这个接口就是 Attribute API(属性 API)。
其基本结构为:
Element API
↓
Element
↓
Object API
↓
Object
↓
Attribute API
↓
Object Attribute
↓
State
↓
Scene
↓
Cognition
因此:
Attribute API 是 ICAI 机器认知系统中负责对象属性创建、读取、更新、验证、计算、历史管理和动态传递的标准工程接口。
265.2 Attribute API 的定义
Attribute API 是 ICAI 系统针对 Object Attribute(对象属性)建立的标准工程接口。
属性可以定义为:
A=(N,V,U,T,S)A=(N,V,U,T,S)
其中:
- NN:Name,属性名称;
- VV:Value,属性值;
- UU:Unit,单位;
- TT:Timestamp,时间戳;
- SS:Source,属性来源。
例如:
Force
Value = 2.3
Unit = N
Timestamp = t1
Source = ForceSensor
因此:
Attribute
├── Name
├── Value
├── Unit
├── Timestamp
└── Source
属性属于对象。
因此:
O=(I,C,A,R,S,P,T)O=(I,C,A,R,S,P,T)
其中:
A={A1,A2,…,An}A=\{A_1,A_2,\ldots,A_n\}
表示一个对象可以包含多个属性。
例如:
Object O1001
↓
Attributes
├── Position
├── Velocity
├── Mass
├── Force
├── Pressure
└── Stability
265.3 Attribute API 的核心目的
Attribute API 的核心目的不是简单地:
setAttribute()
getAttribute()
而是建立一个能够被 ICAI 整个认知运行系统持续使用的动态属性层。
它主要解决六个问题:
属性定义
↓
属性接收
↓
属性存储
↓
属性更新
↓
属性计算
↓
属性传递
进一步形成:
Element
↓
Attribute
↓
Object State
↓
Scene State
↓
Cognition
↓
Method
↓
Behavior
因此,Attribute API 是连接:
对象结构 → 状态计算 → 认知计算 → 行为计算
的重要工程接口。
265.4 Attribute 与 Element 的关系
Element 与 Attribute 虽然具有相似的数据结构,但两者在 ICAI 中具有不同的工程意义。
Element 是进入系统的基础数据元素。
Attribute 是属于某个对象的数据属性。
例如传感器产生:
Force = 2.3N
首先形成:
Force Element
经过对象关联:
Force Element
↓
Object O1001
↓
Force Attribute
因此:
Element
=
进入系统的数据元素
Attribute
=
对象内部的数据属性
可以表示为:
Ao=F(E,O)A_o=F(E,O)
其中:
- EE:Element;
- OO:目标对象;
- AoA_o:对象属性。
因此完整关系是:
Sensor
↓
Element API
↓
Element
↓
Object API
↓
Object
↓
Attribute API
↓
Attribute
265.5 属性的对象归属
属性必须具有明确的 Object Owner(对象归属)。
例如:
O1001
├── Position = (100,50,20)
├── Mass = 0.06kg
└── Force = 2.3N
O1002
├── Position = (150,80,20)
├── Mass = 0.12kg
└── Force = 0N
即使两个对象具有相同的属性名称,也属于不同的属性实例。
因此属性工程结构可以表示为:
A=(ObjectID,Name,Value,Unit,Time,Source)A=(ObjectID,Name,Value,Unit,Time,Source)
其中:
- ObjectIDObjectID:属性所属对象;
- NameName:属性名称;
- ValueValue:属性值;
- UnitUnit:单位;
- TimeTime:产生时间;
- SourceSource:数据来源。
这样系统能够明确回答:
这个属性属于谁?
这个属性是什么?
当前值是多少?
什么时候产生?
来自哪里?
265.6 属性类型
Attribute API 必须能够处理不同类型的属性。
标量属性
例如:
Mass = 0.06
Temperature = 25
Force = 2.3
Pressure = 0.15
可以表示为:
A=VA=V
其中 VV 为一个数值。
向量属性
例如:
Position = (120,80,50)
Velocity = (0,0,10)
ForceVector = (0,0,2.3)
可以表示为:
A=[x1,x2,…,xn]TA=[x_1,x_2,\ldots,x_n]^T
布尔属性
例如:
Open = true
Stable = false
Connected = true
字符串属性
例如:
Color = "White"
Material = "Glass"
结构化属性
例如:
BoundingBox
├── Width
├── Height
└── Depth
因此 Attribute API 可以统一支持:
Scalar
Vector
Boolean
String
Array
Object
Structured Value
265.7 动态属性
ICAI 的属性系统最重要的特点之一,是支持 Dynamic Attribute(动态属性)。
动态属性是随着时间变化的对象属性。
例如:
Position=P(t)Position=P(t) Velocity=V(t)Velocity=V(t) Force=F(t)Force=F(t) Pressure=Pr(t)Pressure=P_r(t)
因此:
t1 → Force = 1N
t2 → Force = 2N
t3 → Force = 3N
t4 → Force = 2N
这不是四个不同的 Force 属性,而是:
同一个 Object
+
同一个 Attribute
+
不同时间的 Value
因此:
At=(N,Vt,U,Tt,S)A_t=(N,V_t,U,T_t,S)
其中 VtV_t 是时间 tt 时刻的属性值。
Attribute API 必须能够支持这种时间变化。
265.8 属性更新
属性更新是 Attribute API 最基本的运行功能之一。
定义:
At+1=Update(At,Et+1)A_{t+1}=Update(A_t,E_{t+1})
其中:
- AtA_t:当前属性;
- Et+1E_{t+1}:新的元素数据;
- At+1A_{t+1}:更新后的属性。
例如:
Force Element = 3N
↓
Attribute API
↓
Force Attribute = 3N
下一次:
Force Element = 4N
↓
Attribute API
↓
Force Attribute = 4N
于是:
Attribute(t)
↓
New Element
↓
Attribute Update
↓
Attribute(t+1)
265.9 属性历史
对于动态属性,仅保存当前值是不够的。
例如:
Position:
t1 = 100
t2 = 105
t3 = 112
t4 = 120
Attribute API 可以维护 Attribute History(属性历史)。
表示为:
HA={(t1,V1),(t2,V2),…,(tn,Vn)}H_A=\{(t_1,V_1),(t_2,V_2),\ldots,(t_n,V_n)\}
其中:
- tit_i:时间;
- ViV_i:对应时间的属性值。
这样系统可以获得:
Current Value
+
Previous Value
+
Historical Values
历史数据可以进一步用于:
变化检测
状态判断
趋势计算
行为判断
反馈分析
因此属性历史不仅是数据库记录,也是动态认知的重要基础数据。
265.10 属性变化率
对于动态属性,系统不仅可以保存 Value,还可以计算 Change Rate(变化率)。
例如位置:
vt=Pt−Pt−1Δtv_t=\frac{P_t-P_{t-1}}{\Delta t}
其中:
- PtP_t:当前时间的位置;
- Pt−1P_{t-1}:上一时间的位置;
- Δt\Delta t:时间间隔;
- vtv_t:位置变化率。
对于力量:
rt=Ft−Ft−1Δtr_t=\frac{F_t-F_{t-1}}{\Delta t}
其中:
- FtF_t:当前力量;
- Ft−1F_{t-1}:上一时刻力量;
- rtr_t:力量变化率。
在工程运行过程中,可以采用离散时间计算:
Current Value
-
Previous Value
↓
Difference
↓
÷ Time Interval
↓
Change Rate
这使 Attribute API 不仅能够保存属性,还能够为动态状态计算提供基础数据。
265.11 属性向量
多个相关属性可以形成 Attribute Vector(属性向量)。
例如:
Xt=[PositionVelocityForcePressureStability]X_t= \begin{bmatrix} Position\\ Velocity\\ Force\\ Pressure\\ Stability \end{bmatrix}
其中:
- PositionPosition:位置;
- VelocityVelocity:速度;
- ForceForce:力量;
- PressurePressure:压力;
- StabilityStability:稳定性。
属性向量的意义是将对象当前多个属性组织成统一的计算结构。
例如:
Object
↓
Attribute Set
↓
Attribute Vector
↓
State Calculation
↓
Behavior Calculation
属性向量不是统计数据集合,而是 ICAI 对象动态状态的结构化数学表达。
265.12 属性与状态
Object State(对象状态)通常不是独立于属性存在的。
状态可以由属性计算得到:
St=F(At,Rt,Ct)S_t=F(A_t,R_t,C_t)
其中:
- StS_t:对象状态;
- AtA_t:对象属性;
- RtR_t:对象关系;
- CtC_t:对象类别及相关条件。
例如:
Force = 0
Velocity = 0
Position = Stable
↓
State
↓
Stable
当属性发生变化:
Force = 2.3N
Velocity > 0
↓
State
↓
Moving / Contact / Grasping
因此:
Attribute Change
↓
State Calculation
↓
State Change
Attribute API 是对象状态变化的重要数据入口。
265.13 属性与关系
某些属性变化必须结合对象关系进行理解。
例如:
Hand
↓
Touch
↓
Egg
同时:
Egg
Force = 2.3N
单独观察 Force,只知道对象受到力量。
加入 Relation:
Touch(Hand, Egg)
+
Force(Egg)=2.3N
才能形成更完整的对象状态判断。
因此:
St=F(At,Rt,Ct)S_t=F(A_t,R_t,C_t)
Attribute API 负责提供 AtA_t,Relation API 或 Object API 提供 RtR_t,最终由状态相关引擎进行计算。
265.14 属性作为方法参数
Attribute API 在 ICAI 工程中的一个重要价值,是使动态属性能够成为 Method(方法)的输入参数。
例如:
Action=M(Object,Force,Position,Velocity,Stability)Action=M(Object,Force,Position,Velocity,Stability)
其中:
- ObjectObject:目标对象;
- ForceForce:当前力量;
- PositionPosition:当前位置;
- VelocityVelocity:当前速度;
- StabilityStability:当前稳定性;
- MM:方法。
因此:
Object
↓
Attribute API
↓
Attribute Vector
↓
Method Parameters
↓
Method
↓
Behavior
例如抓取:
Grasp(
Object,
Force,
Position,
Velocity,
Stability
)
这里 Method 并不需要预先为每一种物体建立独立方法。
它根据当前对象的实际属性计算行为参数。
因此:
Egg
Glass
Bottle
可以共享同一个基本抓取方法,而由当前属性决定具体动作参数。
265.15 属性与动态行为
行为并不是由对象名称直接决定的。
更准确地说:
Bt=F(Gt,Ot,At,St,Sct)B_t=F(G_t,O_t,A_t,S_t,Sc_t)
其中:
- BtB_t:当前行为;
- GtG_t:目标;
- OtO_t:对象;
- AtA_t:对象属性;
- StS_t:对象状态;
- SctSc_t:当前场景。
因此 Attribute 是行为计算的重要输入。
例如:
目标:抓取
+
对象:物体
+
质量:0.06kg
+
位置:P
+
速度:V
+
稳定性:S
↓
Behavior
↓
Grasp
↓
Action
这使行为系统能够根据现实对象的动态数据产生不同动作。
265.16 Attribute API 与 Scene
Scene(场景)不是简单的 Object 集合。
场景状态需要使用对象属性:
Sct=F(Ot,At,Rt,St,Et,Pt,Tt)Sc_t=F(O_t,A_t,R_t,S_t,E_t,P_t,T_t)
因此:
Attribute API
↓
Object Attribute
↓
Object State
↓
Scene State
当某个对象属性发生变化时,场景可能随之发生变化。
例如:
Object A Position
t1 = (100,50)
t2 = (120,50)
则对象的空间关系可能变化:
Near(A,B)
↓
Far(A,B)
于是:
Attribute Change
↓
Object Change
↓
Relation Change
↓
Scene Change
↓
Cognition Update
265.17 Attribute API 的验证
属性进入系统之后必须进行 Validation(验证)。
定义:
Valid(A)=Valid(Name)∧Valid(Value)∧Valid(Unit)∧Valid(Time)Valid(A)= Valid(Name) \land Valid(Value) \land Valid(Unit) \land Valid(Time)
其中:
- Valid(Name)Valid(Name):属性名称是否合法;
- Valid(Value)Valid(Value):属性值是否合法;
- Valid(Unit)Valid(Unit):单位是否合法;
- Valid(Time)Valid(Time):时间是否合法。
例如:
Force = "ABC"
Unit = "N"
如果 Force 被定义为数值属性,则:
Valid(Value) = 0
系统应拒绝或者标记该属性。
因此:
Element
↓
Attribute API
↓
Validation
↓
Valid Attribute
↓
Object Update
265.18 Attribute API 的接口
Attribute API 可以提供:
/api/attribute/create
/api/attribute/get
/api/attribute/update
/api/attribute/delete
/api/attribute/list
/api/attribute/history
/api/attribute/value
/api/attribute/vector
/api/attribute/validate
也可以采用资源形式:
/api/objects/{object_id}/attributes
/api/objects/{object_id}/attributes/{name}
/api/objects/{object_id}/attributes/{name}/history
例如:
GET
/api/objects/O1001/attributes/force
返回:
{
"object_id": "O1001",
"name": "force",
"value": 2.3,
"unit": "N",
"timestamp": "2026-09-04 10:00:00"
}
这个接口返回的是对象当前属性数据,而不是直接进行认知决策。
265.19 Attribute Engine
在 PHP OOP 工程中,可以建立 AttributeEngine:
class AttributeEngine
{
public function update($attribute, $value, $timestamp)
{
$attribute['value'] = $value;
$attribute['timestamp'] = $timestamp;
return $attribute;
}
public function calculateChange($current, $previous, $deltaTime)
{
if ($deltaTime <= 0) {
return 0;
}
return ($current - $previous) / $deltaTime;
}
}
其基本运行过程:
Element
↓
Attribute Engine
↓
Validate
↓
Update Value
↓
Calculate Change
↓
Store History
↓
Notify Object
这样属性处理被封装为独立的软件工程能力。
265.20 Attribute Model
AttributeModel 可以表示一个运行时属性:
class AttributeModel
{
protected $objectId;
protected $name;
protected $value;
protected $unit;
protected $timestamp;
protected $source;
public function __construct(
$objectId,
$name,
$value,
$unit,
$timestamp,
$source
) {
$this->objectId = $objectId;
$this->name = $name;
$this->value = $value;
$this->unit = $unit;
$this->timestamp = $timestamp;
$this->source = $source;
}
public function getValue()
{
return $this->value;
}
public function setValue($value)
{
$this->value = $value;
}
}
该模型表示的是:
Object
↓
Attribute Runtime Object
而不是简单数据库字段。
265.21 Attribute Controller
AttributeController 负责接收 API 请求:
class AttributeApiController
{
protected $service;
public function update($request)
{
return $this->service->update(
$request['object_id'],
$request['name'],
$request['value'],
$request['unit']
);
}
}
其结构:
HTTP Request
↓
AttributeApiController
↓
AttributeService
↓
AttributeEngine
↓
AttributeModel
↓
Repository
Controller 不负责属性计算。
Engine 不负责 HTTP 路由。
Model 不负责 API 通信。
这样保持 ICAI 工程结构的边界清晰。
265.22 Attribute API 与数据库
属性可以使用独立的数据表进行存储。
例如:
cognitive_attributes
基本字段可以包括:
id
object_id
attribute_name
attribute_value
attribute_type
unit
source
timestamp
created_at
updated_at
动态历史可以进一步使用:
cognitive_attribute_history
例如:
id
object_id
attribute_name
value
timestamp
source
数据库承担的是:
Persistence
而 Attribute Engine 承担的是:
Attribute Processing
两者必须保持区分。
265.23 Attribute API 的事件机制
属性发生变化时,可以产生 Attribute Event(属性事件)。
例如:
Attribute Created
Attribute Updated
Attribute Changed
Attribute Threshold Reached
Attribute Removed
运行过程:
Element API
↓
Element
↓
Attribute API
↓
Attribute Changed
↓
Attribute Event
↓
Object Engine
↓
State Engine
↓
Scene Engine
↓
Cognitive Engine
例如:
Force
2.0N
↓
Force
2.5N
↓
Attribute Changed
↓
Object State Recalculation
↓
Scene Update
↓
Cognition Update
因此 Attribute API 可以成为整个系统动态变化传播链中的重要节点。
265.24 Attribute API 与反馈
设备执行动作以后,现实世界发生变化。
例如:
Action
↓
Device
↓
Object Movement
↓
Sensor
↓
New Element
↓
Attribute API
↓
New Attribute
于是:
Old Attribute
↓
World Change
↓
New Element
↓
Attribute Update
↓
New Object State
形成:
At→Action→Worldt+1→At+1A_t\rightarrow Action\rightarrow World_{t+1}\rightarrow A_{t+1}
因此属性变化本身就是机器认知反馈的重要表现形式。
265.25 Attribute API 的完整运行链
综合前面的 Element API 和 Object API:
World
↓
Sensor
↓
Real-Time Data
↓
Element API
↓
Element
↓
Object API
↓
Object
↓
Attribute API
↓
Attribute
↓
Attribute Vector
↓
State
↓
Scene
↓
Cognition
↓
Method
↓
Behavior
↓
Action
↓
Device
↓
World Change
↓
Feedback
↓
Element API
↓
Attribute Update
↓
Re-Cognition
这里形成了一个重要结构:
Element
=
现实数据元素
Object
=
现实对象结构
Attribute
=
对象当前特征
State
=
对象当前状态
Scene
=
多个对象形成的当前环境结构
Cognition
=
系统针对当前目标、对象和场景形成的认知
265.26 Attribute API 的工程边界
Attribute API 必须保持明确边界。
它主要负责:
属性定义
属性创建
属性读取
属性更新
属性删除
属性验证
属性历史
属性变化
属性向量
属性计算
属性事件
它不直接负责:
对象识别
场景构建
复杂认知
行为规划
动作执行
设备控制
因此:
Object API
↓
负责对象
Attribute API
↓
负责对象属性
State API / State Engine
↓
负责状态
Scene API
↓
负责场景
Cognition API
↓
负责认知
这种边界保证了 ICAI API 体系可以逐层扩展,而不会让一个 API 承担整个认知系统。
265.27 Attribute API 的核心工程价值
Attribute API 的真正价值,是建立动态对象特征的标准工程层。
如果没有 Attribute API:
Object
↓
大量分散字段
↓
不同程序分别读取
↓
不同程序分别计算
↓
对象状态难以统一
有了 Attribute API:
Object
↓
Attribute API
↓
统一属性
↓
统一更新
↓
统一验证
↓
统一历史
↓
统一计算
↓
统一事件
从而使对象成为一个真正可以动态运行的机器认知对象。
尤其重要的是,Attribute API 使:
Attribute→Method ParameterAttribute\rightarrow Method\ Parameter
成为明确的工程关系。
于是:
实时属性
↓
属性向量
↓
方法参数
↓
行为计算
↓
动作参数
不需要为每一个现实对象建立一套完全独立的行为程序。
265.28 本章总结
第265章建立了 Attribute API 的工程定义。
Attribute API 是 ICAI 对象系统中负责对象属性管理与动态属性处理的标准工程接口。
其基本属性结构为:
A=(N,V,U,T,S)A=(N,V,U,T,S)
对象则由多个属性共同构成:
O=(I,C,A,R,S,P,T)O=(I,C,A,R,S,P,T)
动态属性随时间变化:
At→At+1A_t\rightarrow A_{t+1}
属性变化进一步影响对象状态:
At→StA_t\rightarrow S_t
并影响场景和认知:
Attribute
↓
Object State
↓
Scene State
↓
Cognition
同时,属性又可以进入方法:
Attribute
↓
Attribute Vector
↓
Method Parameter
↓
Behavior
↓
Action
因此,ICAI API 体系进一步形成:
Element API
↓
Element
↓
Object API
↓
Object
↓
Attribute API
↓
Attribute
↓
State
↓
Scene
↓
Cognition
第263章解决:
现实数据如何进入 ICAI。
第264章解决:
数据如何形成机器对象。
第265章解决:
机器对象如何获得、维护和计算动态属性。
由此,ICAI 的对象结构从:
Object
进一步发展为:
Object
↓
Attribute
↓
Dynamic Attribute
↓
Attribute Vector
↓
State
下一阶段将自然进入 State API|状态 API,解决对象属性经过动态计算之后,如何形成、更新和管理机器可识别的对象状态。