Ontologie (Wissensgraph) verstehen
Was ist eine Ontologie?
Eine Ontologie ist eine kartenartige Darstellung der Beziehungen zwischen allen Dingen in der Fabrik — Anlagen, Sensoren, Alarmen, Arbeitsaufträgen, Produkten usw.
Klassische Datenbanken (Tabellen) eignen sich gut für „Listen". Für die Verfolgung von Beziehungen — „Welche Sensoren sind mit dieser Anlage verbunden? Welche Alarme sind für diesen Sensor konfiguriert? Welche Arbeitsaufträge hängen mit diesem Alarm zusammen?" — sind sie jedoch schlecht geeignet.
Die Ontologie stellt solche Beziehungen als Graph dar, sodass eine KI sie unmittelbar durchsuchen kann.
Mit der Umstellung 2026-07 ist die Ontologie kein eigenständiger Dienst mehr, sondern wurde in das integrierte MCP der PlantPulse-Plattform (server-web /api/v5/mcp) überführt. Die nachfolgenden Erläuterungen zu Konzept und Synchronisierung gelten unverändert; die Graph-Werkzeuge werden über das integrierte MCP bereitgestellt.
Tabelle vs. Graph
Bisheriger Ansatz (relationale DB-Tabellen)
[설비 테이블] [센서 테이블]
+----------+--------+ +----------+----------+-------+
| 설비_ID | 이름 | | 센서_ID | 설비_ID | 단위 |
+----------+--------+ +----------+----------+-------+
| E001 | 주입기 | | T001 | E001 | °C |
| E002 | 포장기 | | T002 | E001 | bar |
+----------+--------+ | T003 | E002 | rpm |
+----------+----------+-------+
"E001 설비와 연결된 모든 것을 찾으려면?"
→ 설비 테이블 조회 → 센서 테이블 조인 → 알람 테이블 조인 → 작업지시 테이블 조인 → ...
→ 테이블이 많아질수록 조인이 복잡해지고 느려짐
Ontologie-Ansatz (Graph-DB)
[회사: 코펜스]
│
OWNS_SITE
│
[사이트: 대전]
│
HAS_AREA
│
[구역: 제조동]
│
HAS_LINE
│
[라인: M_01]
╱ ╲
HAS_EQUIPMENT HAS_EQUIPMENT
╱ ╲
[설비: 주입기] [설비: 포장기]
╱ │ ╲ │
HAS_TAG HAS_TAG HAS_ALARM HAS_TAG
╱ │ ╲ │
[온도] [압력] [고온알람] [속도]
│
TRIGGERS
│
[작업지시: 점검]
│
ASSIGNED_TO
│
[직원: 김기사]
Wie findet man „alles, was mit der Einspritzmaschine zusammenhängt"? → Man folgt einfach den Kanten (Beziehungen), die vom Knoten der Einspritzmaschine ausgehen → Ergebnis im Millisekundenbereich
Aufbau der PlantPulse-Ontologie
14 Knotentypen (Entitäten)
Alles in der Fabrik wird durch 14 Knotentypen abgebildet.
┌─────────────────────────────────────────────┐
│ 자산 계층 │
│ │
│ Company ─→ Site ─→ Area ─→ Line ─→ Equipment │
│ │ │
│ Tag ←┘ │
└─────────────────────────────────────────────┘
┌─────────────────────────────────────────────┐
│ 운영 데이터 │
│ │
│ AlarmConfig Order Calendar │
│ (알람 설정) (작업지시) (일정) │
└─────────────────────────────────────────────┘
┌─────────────────────────────────────────────┐
│ 마스터 데이터 │
│ │
│ Product Customer Employee Opc │
│ (제품) (고객) (직원) (OPC서버) │
└─────────────────────────────────────────────┘
┌─────────────────────────────────────────────┐
│ 문서 데이터 │
│ │
│ AssetStatement AssetDocument │
│ (설비 명세서) (설비 문서) │
└─────────────────────────────────────────────┘
Beziehungen (Kanten)
Die Verbindungen zwischen Knoten werden als Beziehungen dargestellt. Jede Beziehung hat eine Richtung.
| Beziehung | Bedeutung | Beispiel |
|---|---|---|
OWNS_SITE | Unternehmen besitzt Standort | KOPENS → Werk Daejeon |
HAS_AREA | Standort enthält Bereich | Werk Daejeon → Fertigungsgebäude |
HAS_LINE | Bereich enthält Linie | Fertigungsgebäude → Linie M_01 |
HAS_EQUIPMENT | Linie enthält Anlage | M_01 → Einspritzmaschine |
HAS_TAG | Anlage besitzt Sensor | Einspritzmaschine → Temperatursensor |
HAS_ALARM | Alarm für Anlage/Tag konfiguriert | Temperatursensor → Übertemperaturalarm |
HAS_ORDER | Arbeitsauftrag der Anlage zugewiesen | Einspritzmaschine → Inspektionsauftrag |
PRODUCES | Linie produziert Produkt | M_01 → Produkt A |
CONNECTED_TO | Verbindung zum OPC-Server | Einspritzmaschine → OPC-Server 1 |
Subgraph-Navigation
Die stärkste Funktion der Ontologie ist die Subgraph-Navigation.
Ausgehend von einem bestimmten Knoten wird über die depth (Tiefe) festgelegt, wie weit gesucht wird; alle Verbindungen innerhalb dieses Bereichs werden auf einmal abgerufen.
depth=1 (nur direkte Verbindungen)
질문: "주입기에 직접 연결된 것들을 보여줘"
[라인: M_01]
│
┌───────┼───────┐
▼ ▼
[온도센서] [압력센서]
│
[고온알람]
depth=2 (bis zur zweiten Ebene)
질문: "주입기와 2단계 이내 연결된 모든 것을 보여줘"
[구역: 제조동] ← depth 2
│
[라인: M_01] ← depth 1
│
┌────────┼────────┐
▼ ▼ ▼
[온도] [압력] [고온알람] ← depth 1
│ │
▼ ▼
[OPC1] [작업지시] ← depth 2
│
[김기사] ← depth 2
Eine größere depth durchsucht einen weiteren Bereich, liefert aber bei zu hohen Werten sehr umfangreiche Ergebnisse. depth=2 ist für die meisten Analysen geeignet.
Automatische Synchronisierung
Ändern sich Daten in der PlantPulse-Hauptdatenbank (PostgreSQL), wird der Neo4j-Graph automatisch synchronisiert.
PlantPulse IIoT DB (PostgreSQL)
│
│ 60초마다 변경 감지
│
▼
Ontology 동기화 엔진
│
│ 변경된 엔티티만 업데이트
│ 배치 크기: 500건
│
▼
Neo4j 그래프 DB
(항상 최신 상태 유지)
Neo4j muss nicht manuell gepflegt werden. Wird eine Anlage hinzugefügt oder ein Arbeitsauftrag erstellt, erscheint dies automatisch im Graphen.
Wie die KI die Ontologie nutzt
Beispiel 1: Gesamtbericht zu einer Anlage
사용자: "주입기 상태를 종합적으로 알려줘"
AI 내부 동작:
1. Ontology → 주입기 서브그래프(depth=2) 조회
→ 연결된 센서 5개, 알람 3개, 작업지시 2개 파악
2. 통합 MCP → 센서 5개 최신값 조회
3. TimeSeries → 이상 탐지 실행
4. 통합 MCP → 알람 3개 상태 확인
5. 통합 MCP → 작업지시 2개 진행 상황 확인
6. 종합 리포트 생성:
"주입기는 현재 정상 가동 중입니다.
센서 5개 중 온도센서에서 경미한 이상이 감지되었습니다.
관련 점검 작업지시가 김기사에게 할당되어 있습니다."
Beispiel 2: Analyse des Auswirkungsbereichs einer Anomalie
사용자: "온도센서 이상이 어디까지 영향을 미칠 수 있어?"
AI 내부 동작:
1. Ontology → 온도센서 서브그래프(depth=3) 조회
→ 온도센서 → 주입기 → M_01 라인 → 제조동
2. 영향 범위 파악:
"온도센서 이상 → 주입기 정지 가능
→ M_01 라인 가동률 저하
→ 같은 라인의 다른 설비(포장기)에도 영향"
Beispiel 3: Visualisierung der Werksstruktur
사용자: "대전 공장 구조를 보여줘"
AI 내부 동작:
1. Ontology → 대전 사이트 그래프 조회
2. Mermaid 다이어그램으로 자동 변환:
graph TD
대전공장 --> 제조동
대전공장 --> 유틸리티동
제조동 --> M_01라인
제조동 --> M_02라인
M_01라인 --> 주입기
M_01라인 --> 포장기
...
Leistungsvergleich Graph-DB vs. relationale DB
| Abfragetyp | Relationale DB (PostgreSQL) | Graph-DB (Neo4j) |
|---|---|---|
| Abfrage einer einzelnen Entität | schnell | schnell |
| Beziehungssuche über 2 Ebenen | 2 JOINs erforderlich | sofort |
| Beziehungssuche über 3 Ebenen | 3 JOINs, zunehmend langsamer | sofort |
| Beziehungssuche über N Ebenen | N JOINs, sehr langsam | gleichbleibende Geschwindigkeit |
| „Alles Verbundene" | komplexe Abfrage nötig | ein einziger Subgraph-Aufruf |
Relationale Datenbanken sind stark bei „Listenabfragen", Graph-Datenbanken bei der „Beziehungsnavigation". PlantPulse setzt beide gemeinsam ein und nutzt so die jeweiligen Stärken.