オントロジー (工場ナレッジグラフ)
概要
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ライン設備」のような複合条件 |