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

第265章 Attribute API|属性 API

第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,解决对象属性经过动态计算之后,如何形成、更新和管理机器可识别的对象状态。

Leave a Reply

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