IIoT Data에서 암묵지 추출하고 활용 하는 방법

- 현장에서 IIoT Data를 Graph보여주고 질문과 응답
- IIoT Data에서 암묵지 추출하는 방안
. 특정 제품 제작 전반의 IoT data에서 데이터 분석


 


질문: “그래프와 같은 데이터는 무엇을 의미하나요?”

답변(숙련자):

그래프요? 펌프 온도 흐름이에요. 파란 선이 실제, 박스는 구간 나눠 본 거죠.

급히 내려가면일단 정지. 공급 막힘/밸브 문제 먼저 봅니다.

급히 올라가면부하 좀 빼고 냉각 키움. 유량/열교환 체크.

가끔 튀는 스파이크센서나 접촉 흔들린 걸로 봄. 단자/케이블 확인.

계속 높은 채로 평탄냉각 약해요. 열교환기 막힘/스케일 의심.

값이 너무 한 줄로 고정센서 맛갔을 확률 큼. 교정하거나 갈아낍니다.

대충 기준: 85℃ 넘으면 쉬어가고, 90℃면 경보 수준입니다.

PS) 설비 명칭 및 설치 Spec data 포함 해야 됨


  • 보이면 → 내가 하는 일
보이는 패턴내가 바로 하는 말/행동
온도가 떨어짐(급하강)“라인 잠깐 세워요.” → 공급/밸브/펌프 먼저 봄
온도가 쭉쭉 올라감“부하 조금 빼자.” → 냉각/유량 키움, 열교환 확인
툭툭 튐(스파이크)“센서 접점 봐요.” → 커넥터/케이블 흔들림 체크
높은 온도 유지“냉각 안 받네.” → 열교환기 막힘·스케일 점검
값이 안 움직임“센서 고정값이네.” → 센서 교정/교체
예측선보다 실제가 계속 높음“요즘 부하가 쎄요.” → 레시피/유량/주변온도 재확인

한마디식(그대로 적기 좋은 문장)

푹 내려가면 멈추고 라인부터 봅니다.

온도 많이 오르면 냉각 키우고 유량 늘려요.

툭툭 튀면 센서 접점부터 확인합니다.

85도 넘기 시작하면 속도 줄이고, 90도면 경보라고 봐요.


이러한 답변인 암묵지를 온톨로지로 변경하기 위해서는 좀 더 구체적인 질문 필요

암묵지를 온톨로지(KG)로 바꾸려면 “숫자·조건·행동”이 들리는 질문이 필요합니다.
바로 현장에서 쓸 수 있는 구체 질문 → (기대 답변형식) → 온톨로지 매핑 묶음을 드릴게요.
(워터펌프 온도 시계열 기준, 현장 말투 유지)


 1) 설비·센서 맥락(누구의 어떤 값인가?)

  • “이 그래프, 어느 펌프/라인 거죠?” → (설비ID/라인명)ex:Equipment, ex:equipId
  • “온도 태그 이름은요?” → (예: Pump-AX1001/T_out)sosa:ObservableProperty, ex:tagId
  • “단위는 무엇으로 보십니까?” → (예: ℃)qudt:unit, ex:unit
  • “샘플 주기·윈도 길이?” → (예: 1s, 윈도 120s, 스트라이드 30s)ex:samplingRate, ex:windowSec, ex:strideSec

2) 밴드(정상/고온/과열) 경계

  • “정상 온도 범위는요?” → (예: 30–70℃)ex:Band/Normal ; ex:min ; ex:max
  • “고온, 과열 기준?” → (예: High 70–85, Overheat >85, 경보 90)ex:Band/High, ex:Band/Overheat, ex:alarmThreshold

3) 안정성·변동 패턴 수치

  • “안정/보통/불안정 표준편차 경계요?” → (예: <2, 2–5, ≥5)ex:stdStableLt, ex:stdModerateLt
  • “급격 하향을 뭐로 보나요?” → (기울기 < −1.0 ℃/s + 연속하락 ≥70%)ex:dropSlopeThresh, ex:dropRunPct
  • “스파이크 기준치는요?” → (ΔT≥8℃ within 10s or z≥3)ex:spikeDelta, ex:spikeWindowSec, ex:spikeZ
  • “비정상 평탄은요?” → (std<0.3 & 60s 이상 지속)ex:flatStdLt, ex:flatMinDurationSec
     

4) 패턴 → 현장 조치(암묵지의 핵심)

  • “급히 내려가면?” → (작업 중지 StopWork + 공급/밸브 점검)ex:RapidDrop → ex:StopWork
  • “급히 올라가거나 과열이면?” → (부하감소/냉각 CoolDown)ex:RapidRise|Overheat → ex:CoolDown
  • “툭툭 튀면?” → (설비·센서 점검 Inspect)ex:Spike → ex:Inspect
  • “값이 고정이면?” → (센서 점검/교정 CheckSensor)ex:Flat → ex:CheckSensor
  • “조치 발동 조건은?” → (예: Overheat 85℃ 30s 이상 지속 시 CoolDown)ex:actionCondition (temp>85 & dur≥30s)
     

5) 원인 가설·교차신호

  • “이 패턴, 주로 왜 생겨요?” → (공급막힘/유량저하/열교환막힘 등)ex:likelyCause
  • “같이 보는 태그는?” → (유량 L/min, ΔP bar, 전류 A, 진동 mm/s)ex:correlatedTag

6) 예외·운전모드

  • “이 기준이 안 맞는 모드?” → (예열/세정 모드엔 예외)ex:excludedMode
  • “얼마나 지속되면 진짜로 간주?” → (예: 10초 미만은 무시)ex:debounceSec
     

7) 메타데이터

  • “누가 정했나요? 버전?” → (숙련자ID, v1.2, 날짜)prov:wasAttributedTo, ex:ruleVersion, dct:created
     

“질문 → 필드 → 온톨로지” 상위 12개 필드(요약표)

 


8) 결과 TTL 템플릿(바로 쓰는 양식)

@prefix ex: <http://example.org/manufacturing#> .
@prefix time: <http://www.w3.org/2006/time#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

ex:Pump-AX1001 a ex:Equipment ;
  ex:hasSignal ex:Pump-AX1001_T_out .

ex:Pump-AX1001_T_out a ex:TemperatureSignal ;
  ex:tagId "T_out" ;
  ex:unit "degC" ;
  ex:samplingRate "1"^^xsd:double ;
  ex:windowSec "120"^^xsd:int ;
  ex:strideSec "30"^^xsd:int ;
  ex:normalMin "30"^^xsd:double ; ex:normalMax "70"^^xsd:double ;
  ex:highMin "70"^^xsd:double   ; ex:highMax "85"^^xsd:double ;
  ex:overheatMin "85"^^xsd:double ;
  ex:alarmThreshold "90"^^xsd:double ;
  ex:stdStableLt "2"^^xsd:double ; ex:stdModerateLt "5"^^xsd:double ;
  ex:dropSlopeThresh "-1.0"^^xsd:double ; ex:dropRunPct "0.7"^^xsd:double ;
  ex:spikeDelta "8"^^xsd:double ; ex:spikeWindowSec "10"^^xsd:int ;
  ex:flatStdLt "0.3"^^xsd:double ; ex:flatMinDurationSec "60"^^xsd:int .

# 암묵지 규칙(패턴→조치)
ex:rule_RapidDrop_Stop a ex:OperationalHeuristic ;
  ex:appliesToSignal ex:Pump-AX1001_T_out ;
  ex:appliesToPattern ex:RapidDrop ;
  ex:recommendsAction ex:StopWork ;
  ex:hasSeverity "Critical" ;
  ex:actionCondition "slope<-1.0 && runPct>=0.7" ;
  ex:justification "급격 하향은 공급/밸브 문제 가능 → 즉시 정지 후 점검." .

ex:rule_Overheat_Cool a ex:OperationalHeuristic ;
  ex:appliesToSignal ex:Pump-AX1001_T_out ;
  ex:appliesToPattern ex:Overheat ;
  ex:recommendsAction ex:CoolDown ;
  ex:hasSeverity "High" ;
  ex:actionCondition "temp>85 && dur>=30" ;
  ex:justification "과열 지속 → 부하감소/냉각." .

9) 빠른 수집 양식(JSON) — 인터뷰 기록 → KG 변환용

{
  "equipId": "Pump-AX1001",
  "tagId": "T_out",
  "unit": "degC",
  "samplingRateSec": 1,
  "windowSec": 120,
  "strideSec": 30,
  "bands": {"normal":[30,70], "high":[70,85], "overheat":[85, null], "alarm": 90},
  "stability": {"stableStdLt":2, "moderateStdLt":5},
  "rapidDrop": {"slopeLt": -1.0, "runPctGe": 0.7},
  "spike": {"deltaGe": 8, "windowSec": 10},
  "flat": {"stdLt": 0.3, "minDurationSec": 60},
  "rules":[
    {"pattern":"RapidDrop","action":"StopWork","severity":"Critical","condition":"slope<-1.0 && runPct>=0.7"},
    {"pattern":"Overheat","action":"CoolDown","severity":"High","condition":"temp>85 && dur>=30"}
  ],
  "correlatedTags":["Flow_L_min","DeltaP_bar","Current_A","Vibration_mm_s"],
  "excludedModes":["Warmup","Cleaning"],
  "debounceSec":10,
  "author":"Expert_007","ruleVersion":"v1.2","created":"2025-09-30"
}

10) 인터뷰 진행 팁:

  • 숫자로 어디부터 위험으로 봅니까?(온도/시간/기울기)”
  • 얼마나 이어지면 진짜로 위험이죠?(지속시간)”
  • 그때 바로 뭐 하세요?(중지/냉각/점검/센서확인)”
  • 이 기준 안 맞는 상황 있어요?(예열/세정 등 예외)”
  • 근거로 같이 보는 값은요?(유량/압력/전류/진동)”

참조 자료

1) 최소 확장 스키마(요약)

  • ex:TimeSeriesSegment : 슬라이딩 윈도우 조각
  • ex:VolatilityPattern : RapidDrop/RapidRise/Spike/Flat …
  • ex:Action : StopWork, CoolDown, Inspect, CheckSensor …
  • ex:OperationalHeuristic : “패턴 → 권고조치(심각도, 근거 포함)” 규칙
  • 속성:
    • ex:hasPattern(세그먼트→패턴), ex:recommendsAction(규칙→액션)
    • ex:hasSeverity(규칙/세그먼트 심각도), ex:justification(설명)
       

2) 예시 TTL (암묵지 규칙 + 세그먼트)

@prefix ex:   <http://example.org/manufacturing#> .
@prefix time: <http://www.w3.org/2006/time#> .
@prefix xsd:  <http://www.w3.org/2001/XMLSchema#> .

# --- 패턴 ---
ex:RapidDrop a ex:VolatilityPattern .     # 급격 하향
ex:RapidRise a ex:VolatilityPattern .     # 급격 상승
ex:Spike     a ex:VolatilityPattern .     # 급변(스파이크)
ex:Flat      a ex:VolatilityPattern .     # 평탄(정상)

# --- 조치(Action) ---
ex:StopWork    a ex:Action .      # 작업 중지
ex:CoolDown    a ex:Action .      # 냉각/부하감소
ex:Inspect     a ex:Action .      # 설비 점검
ex:CheckSensor a ex:Action .      # 센서 점검/교정

# --- 암묵지 규칙(Operational Heuristic) ---
ex:rule_RapidDrop_Stop a ex:OperationalHeuristic ;
  ex:appliesToPattern ex:RapidDrop ;
  ex:recommendsAction ex:StopWork ;
  ex:hasSeverity "Critical" ;
  ex:justification "급격한 하향 그래프는 작업 중지(공정 붕괴/공구 파손/공급단절 가능)." .

ex:rule_RapidRise_Cool a ex:OperationalHeuristic ;
  ex:appliesToPattern ex:RapidRise ;
  ex:recommendsAction ex:CoolDown ;
  ex:hasSeverity "High" ;
  ex:justification "급격 상승은 과열 위험 → 냉각·이송감속 권고." .

ex:rule_Spike_Inspect a ex:OperationalHeuristic ;
  ex:appliesToPattern ex:Spike ;
  ex:recommendsAction ex:Inspect ;
  ex:hasSeverity "Medium" ;
  ex:justification "불규칙 급변은 공정 불안정 → 설비 점검." .

ex:rule_Flat_CheckSensor a ex:OperationalHeuristic ;
  ex:appliesToPattern ex:Flat ;
  ex:recommendsAction ex:CheckSensor ;
  ex:hasSeverity "Low" ;
  ex:justification "비정상적 평탄/고정값 지속 시 센서 드리프트/단선 의심." .

# --- 세그먼트(점선 박스) 예시 ---
ex:seg_071 a ex:TimeSeriesSegment ;
  time:hasBeginning "2025-09-30T10:25:00"^^xsd:dateTime ;
  time:hasEnd       "2025-09-30T10:27:00"^^xsd:dateTime ;
  ex:hasPattern ex:RapidDrop ;
  ex:mean 72.1 ; ex:std 5.9 ; ex:min 60.4 ; ex:max 78.2 .

ex:seg_072 a ex:TimeSeriesSegment ;
  time:hasBeginning "2025-09-30T10:27:00"^^xsd:dateTime ;
  time:hasEnd       "2025-09-30T10:29:00"^^xsd:dateTime ;
  ex:hasPattern ex:Spike ;
  ex:mean 91.2 ; ex:std 6.7 ; ex:min 84.9 ; ex:max 97.6 .

이렇게 넣어두면 “점선 박스의 의미(패턴)와 현장 행동(조치)”가 데이터로 연결됩니다.


3) 즉시 쓰는 SPARQL

A. “작업 중지”가 권고되는 세그먼트 찾기

PREFIX ex: <http://example.org/manufacturing#>
SELECT ?seg ?severity ?why
WHERE {
  ?seg ex:hasPattern ?p .
  ?rule a ex:OperationalHeuristic ;
        ex:appliesToPattern ?p ;
        ex:recommendsAction ex:StopWork ;
        ex:hasSeverity ?severity ;
        ex:justification ?why .
}
ORDER BY DESC(?severity)

B. 세그먼트별 권고 조치 표

PREFIX ex: <http://example.org/manufacturing#>
SELECT ?seg ?pattern ?action ?severity
WHERE {
  ?seg ex:hasPattern ?p .
  ?rule ex:appliesToPattern ?p ;
        ex:recommendsAction ?a ;
        ex:hasSeverity ?severity .
  BIND(STRAFTER(STR(?p), "#") AS ?pattern)
  BIND(STRAFTER(STR(?a), "#") AS ?action)
}

C. (Update) 패턴 기반으로 ‘필요 조치’ 트리플을 그래프에 부여

PREFIX ex: <http://example.org/manufacturing#>
INSERT {
  ?seg ex:requiresAction ?a .
}
WHERE {
  ?seg ex:hasPattern ?p .
  ?rule ex:appliesToPattern ?p ;
        ex:recommendsAction ?a .
}

4) 패턴 판정(예시 규칙)

  • RapidDrop: 윈도우 선형기울기 slope < -β 또는 연속 하락 샘플 비율 ≥ θ
  • RapidRise: slope > +β
  • Spike: zscore(max) ≥ κ 또는 Δt 내 |Δx| ≥ δ
  • Flat: std < ε 또는 (max-min) < ε
    → 이 판정은 Python에서 계산해 ex:hasPattern만 KG에 적재하면 됩니다. (이미 만든 라벨링 파이프라인에 한 줄 추가)
     

5) NL 질의 예시(지금 앱에 붙이기 쉬운 문장)

  • “점선 박스 중 작업 중지 대상만 보여줘” → recommendsAction ex:StopWork
  • “급격 하향(rapid drop) 구간과 조치” → hasPattern ex:RapidDrop JOIN 규칙
  • “스파이크만 필터하고 심각도 순 정렬” → hasPattern ex:Spike + ORDER BY ?severity




 

기업 홍보를 위한 확실한 방법
협회 홈페이지에 회사정보를 보강해 보세요.