Ontology — 工場ナレッジグラフ
概要
PlantPulse Ontology は、工場のエンティティとその関係をグラフで表現した 工場ナレッジグラフ(Knowledge Graph) です。
「この設備に接続されているセンサーは?」「このポンプが停止したらどこまで影響が及ぶか?」のように、関係をたどらなければ答えられない質問を AI が正確に処理できるよう支援します。階層だけが必要な場合は資産ツリーで十分ですが、影響の伝播や複数条件の交差にはグラフが必要です。
オントロジーは独立したサービスではなく、PlantPulse プラットフォームの server-web 内で動作します。 グラフは Apache Jena ベースのインメモリ RDF モデルであり、プラットフォーム DB を源泉として定期的に再構築されます。 別途グラフ 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 は以下の3つのツールでグラフにアクセスします。名前は似ていますが返す軸が異なります — この3つを区別することが本ドキュメントの要点です。
| ツール | 返すもの | 使う場面 |
|---|---|---|
get_ontology | 1サイトの ISA-95 構造サマリ + ツリー (エリア/ライン/設備、設備ごとのタグ数) | 「このサイトはどう構成されているか」「設備は何台か」 |
query_ontology | 方向性のある関係グラフ (root + nodes[] + edges[]) | 「X が停止したらどこまで影響するか」「何が X に供給しているか」 |
query_sparql | SPARQL SELECT/ASK の結果行 | 複数条件を交差させる必要のある照会 |
純粋な階層のみが必要な場合は、オントロジーではなく 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ラインの設備」のような複合条件 |