Ontology — 工厂知识图谱
概述
PlantPulse Ontology 是以图的形式表达工厂实体及其相互关系的工厂知识图谱(Knowledge Graph)。
它帮助 AI 准确处理诸如"连接到该设备的传感器有哪些?"、"这台泵停机后影响会波及到哪里?"这类必须沿着关系才能回答的问题。仅需要层级结构时,资产树就够用;但涉及影响传播或多条件交叉时,就需要图谱。
Ontology 并非独立服务,而是运行在 PlantPulse 平台的 server-web 内部。 该图谱是基于 Apache Jena 的内存 RDF 模型,以平台 DB 为源定期重建。 无需另行安装或运维图数据库。
原独立服务 plantpulse-ontology(:8888) 已归档。当时的工具名称
(ontology_get_stats、ontology_get_graph 等)已不复存在。
节点类型(11 种)
以下是出现在 RDF 图中的类。
| 类 | 说明 |
|---|---|
Site | 工厂/站点 |
Area | 区域(生产厂房、公用工程等) |
Line | 生产线 |
Equipment | 设备(注液机、包装机等) |
Asset | 上述层级节点的公共父类 —— 用于不区分层级、查询全部资产时 |
Tag | 传感器标签 |
AlarmConfig | 报警设置 |
CommandDef | 设备命令定义 |
Statement | 设备规格书 |
Document | 设备附件文档 |
RegistryEntry | UNS 注册项 |
层级关系: Site → Area → Line → Equipment → Tag
关系类型(3 种)
除层级之外,资产之间还存在有方向的关系。影响传播类问题正是沿着这些关系展开的。
| 关系 | 含义 |
|---|---|
FEEDS | A 向 B 供给(上游 → 下游) |
DEPENDS_ON | A 依赖于 B |
PRODUCES | A 生产 B |
图谱工具(集成 MCP)
AI 通过以下三个工具访问图谱。它们名称相似,但返回的维度不同 —— 区分这三者正是本文的重点。
| 工具 | 返回内容 | 何时使用 |
|---|---|---|
get_ontology | 单个站点的 ISA-95 结构摘要 + 树(区域/产线/设备,以及各设备的标签数量) | "这个站点是怎么构成的"、"有多少台设备" |
query_ontology | 有向关系图(root + nodes[] + edges[]) | "X 停机会影响到哪里"、"什么在给 X 供给" |
query_sparql | SPARQL SELECT/ASK 结果行 | 需要交叉多个条件的查询 |
如果只需要纯粹的层级结构,比起 Ontology,get_asset_tree 更为合适。
get_ontology 主要参数
| 参数 | 说明 |
|---|---|
site_id | 必填。 只知道名称时,先用 search_domains 解析出 ID |
asset_id | 子树的根节点。只查看特定产线/设备时指定 |
depth | 根节点以下的展开深度。以站点根为基准,1=区域,2=产线,3=设备 |
include_tags | 为 true 时,在设备节点上附带标签名称列表。默认仅返回数量(tag_count) |
total_tag_count 为准把各节点的 tag_count 相加会得出错误结果,因为未展开分支上的标签会被遗漏。
若响应中出现 total_tag_count_unknown=true,表示无法计数,请不要臆测,
而应缩小范围后重新查询。
query_ontology 主要参数
| 参数 | 默认值 | 说明 |
|---|---|---|
entity_id | (必填) | 遍历起始实体 |
direction | DOWN | DOWN=下游影响,UP=上游原因,BOTH |
relation_type | (全部) | FEEDS / DEPENDS_ON / PRODUCES |
depth | 2 | 遍历深度 1~5 |
影响传播遍历示例
"注液机 DJ_M_01_1 停机后影响会波及到哪里" —— 使用 direction=DOWN 沿下游追踪。
[Equipment: DJ_M_01_1] ← 시작 노드
│ FEEDS
┌──────┴──────┐
▼ ▼
[Equipment: [Equipment:
건조기] 컨베이어]
│ FEEDS
▼
[Equipment: 포장기]
响应中同时包含访问过的节点(nodes[])和相连的关系(edges[])。若因深度限制而无法继续遍历,会显示 truncated;当该值为 true 时,请调高 depth 后重新查询。
更新方式
图谱以平台 DB 为源定期重建。新增设备或修改标签后,需等到下一个更新周期才会生效,因此刚刚注册的设备可能尚未出现在图谱中。更新周期由平台配置 semantic.graph.refresh.minutes 设定。
应用场景
| 场景 | 如何实现 |
|---|---|
| 掌握工厂构成 | 用 get_ontology 一次性获取区域/产线/设备结构及标签数量 |
| 追溯异常原因 | query_ontology direction=UP —— 在异常设备的上游查找原因候选 |
| 评估停机影响范围 | query_ontology direction=DOWN —— 停机后向下游蔓延的范围 |
| 多条件交叉 | query_sparql —— 处理"3 号产线中带有已设置报警标签的设备"这类复合条件 |