본문으로 건너뛰기

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설비 첨부 문서
RegistryEntryUNS 레지스트리 항목

계층 관계: Site → Area → Line → Equipment → Tag


관계 종류 (3종)

계층과 별개로, 자산 사이에는 방향이 있는 관계가 있습니다. 영향 전파 질문은 이 관계를 따라갑니다.

관계의미
FEEDSA 가 B 에 공급한다 (상류 → 하류)
DEPENDS_ONA 가 B 에 의존한다
PRODUCESA 가 B 를 생산한다

그래프 도구 (통합 MCP)

AI 는 아래 세 도구로 그래프에 접근합니다. 이름이 비슷하지만 돌려주는 축이 다릅니다 — 셋을 구분하는 것이 이 문서의 핵심입니다.

도구돌려주는 것언제 쓰나
get_ontology한 사이트의 ISA-95 구조 요약 + 트리 (구역/라인/설비, 설비별 태그 개수)"이 사이트는 어떻게 구성돼 있나", "설비가 몇 대인가"
query_ontology방향성 관계 그래프 (root + nodes[] + edges[])"X 가 멈추면 어디까지 영향인가", "무엇이 X 를 먹이나"
query_sparqlSPARQL SELECT/ASK 결과 행여러 조건을 교차해야 하는 질의

순수한 계층만 필요하면 온톨로지가 아니라 get_asset_tree 가 더 적합합니다.

get_ontology 주요 파라미터

파라미터설명
site_id필수. 이름밖에 모를 때는 search_domains 로 먼저 ID 를 해소합니다
asset_id부분 트리의 루트. 특정 라인/설비만 볼 때 지정합니다
depth루트 아래 확장 깊이. 사이트 루트 기준 1=구역, 2=라인, 3=설비
include_tagstrue 면 설비 노드에 태그 이름 목록을 싣습니다. 기본은 개수(tag_count)만
태그 총수는 total_tag_count 하나만 믿으세요

노드별 tag_count 를 더하면 틀립니다. 펼치지 않은 가지의 태그가 빠지기 때문입니다. 응답에 total_tag_count_unknown=true 가 있으면 셀 수 없었다는 뜻이므로 추정하지 말고 범위를 좁혀 다시 조회하세요.

query_ontology 주요 파라미터

파라미터기본값설명
entity_id(필수)탐색 시작 엔티티
directionDOWNDOWN=하류 영향, UP=상류 원인, BOTH
relation_type(전체)FEEDS / DEPENDS_ON / PRODUCES
depth2탐색 깊이 1~5

영향 전파 탐색 예시

"주입기 DJ_M_01_1 이 멈추면 어디까지 영향인가" — direction=DOWN 으로 하류를 따라갑니다.

[Equipment: DJ_M_01_1] ← 시작 노드
│ FEEDS
┌──────┴──────┐
▼ ▼
[Equipment: [Equipment:
건조기] 컨베이어]
│ FEEDS

[Equipment: 포장기]

응답에는 방문한 노드(nodes[])와 이어진 관계(edges[])가 함께 들어옵니다. 깊이 제한에 걸려 더 못 간 경우 truncated 가 표시되므로, 이 값이 truedepth 를 올려 다시 조회하세요.


갱신 방식

그래프는 플랫폼 DB 를 원천으로 주기적으로 다시 만들어집니다. 설비를 추가하거나 태그를 바꾸면 다음 갱신 주기에 반영되므로, 방금 등록한 설비가 그래프에 아직 없을 수 있습니다. 갱신 주기는 플랫폼 설정 semantic.graph.refresh.minutes 로 정합니다.


활용 시나리오

시나리오어떻게
공장 구성 파악get_ontology 로 구역/라인/설비 구조와 태그 개수를 한 번에
이상 원인 추적query_ontology direction=UP — 이상 설비의 상류에서 원인 후보 찾기
정지 영향 범위 산정query_ontology direction=DOWN — 멈췄을 때 하류로 번지는 범위
다중 조건 교차query_sparql — "알람이 설정된 태그를 가진 3라인 설비" 같은 복합 조건