查、算、改都在这里
对象集把问题写成一句话,聚合回答多少,改只走动作;API、SDK、CLI 是同一套能力。

本课目标
读完这一课,你将能够
- 用对象集把一个业务问题写成一句话
- 用聚合回答「多少、多大」
- 说出 API、SDK、CLI 是同一套能力
对象集:把问题写成一句话
对象集(Object Set)是一组对象:一个对象类型的全部对象,筛一筛,沿关系走一步,和另一组取并集、交集或差集。问题越复杂,拼的步数越多,但每一步都是业务语言。
const client = semantic.ontology();
const paying = client.objects("customer").where({ stage: "付费", seats: { $gt: 30 } });
const agents = await paying.pivotTo("agents").fetchPage({ $pageSize: 20 });
这三行的意思是:座位数超过 30 的付费客户公司,它们的全部智能体。筛选写在 where 里,沿关系走一步是 pivotTo,取回一页是 fetchPage。
聚合:多少、多大
聚合(Aggregate)回答「一共多少」「平均多大」:计数、求和、平均、最大、最小,还可以按某个属性分组。模型用量和云费用都实现了 Billable 接口,所以按月汇总全部成本只要一次:
const byMonth = await client.interface("Billable").aggregate({
$select: { "costUsd:sum": "desc" },
$groupBy: { month: "exact" },
});
派生属性也能这样用:给对象集临时加上「每家公司的应用数」,再按它排序、展示,不用另建一张表。
改:只有动作
查和算可以随意组合,改只有一个入口:动作。开发者、应用、智能体调用的是同一个动作,走同样的校验。先只校验,看每一项的结果;没问题再执行。
aidc semantic apply adjust-seats --param customer=cell-lanting --param seats=60 --validate-only
aidc semantic apply adjust-seats --param customer=cell-lanting --param seats=60
API
/api/v1/ontologies/…:对象类型、对象、对象集、聚合、动作,一应俱全,字段按通行的 Ontology 接口写法。
SDK
semantic.ontology():在应用里自动用访客的身份,只看得到清单登记过的对象类型。
CLI
aidc semantic …:给开发者和智能体,输出 JSON,退出码稳定。
要点
- 对象集 = 筛选 + 沿关系走 + 并、交、差,每一步都是业务语言。
- 聚合回答多少、多大,可以按属性分组;接口让不同对象能一起算。
- 改只有一个入口:动作,先校验再执行。
- API、SDK、CLI 是同一套能力的三种形态。
练一练
把三个问题写成对象集
用示例本体练习:客户公司、智能体、应用、模型用量、云费用。
写出「座位数超过 30 的付费客户」的 where 条件。
从这些客户出发,沿哪条关系能拿到它们的全部应用?
写一个聚合:按月汇总全部成本,费用最高的月份排在最前。
小测
选一个答案,马上看解析。
Q1「付费客户的全部智能体」用对象集怎么表达?
从问题里的主语出发筛选,再沿关系走一步,就是 where 加 pivotTo。
Q2想按月汇总模型用量和云费用的总成本,最简单的是?
接口把不同对象类型当成一组,一次聚合就够了,也不用复制数据。
Q3应用里的按钮、CLI 命令和智能体都要改同一个属性,规则写在哪里?
规则只写一次,写在动作里;无论从哪里进来,都走同一套校验。