39

Step 2-3: Neo4j 데이터 구축 및 핵심 분석 쿼리

설비-공정 Knowledge Graph

학습 목표
  • dataset.json을 Neo4j에 멱등하게 적재하는 스크립트를 완성한다
  • 라벨마다 id UNIQUE 제약과 조회용 인덱스를 만든다
  • 핵심 분석 쿼리 다섯 개를 구현하고 결과가 실제로 나오는지 확인한다
  • 데이터를 지우는 동작은 명시적으로 요청했을 때만 일어나게 만든다

Step 2-3: Neo4j 구축 + 핵심 쿼리

목표

Step 1에서 만든 dataset.json을 Neo4j에 넣고, 핵심 분석 쿼리 다섯 개를 구현합니다.

python step1_ontology.py     # dataset.json 생성 (노드 123 / 관계 197)
python step2_neo4j.py        # 적재 + 쿼리

지우는 동작은 부탁받았을 때만

clear_database()를 실행부에서 무조건 부르면 안 됩니다. Day 2~4에서 쌓은 그래프가 오류 한 줄 없이 사라지고, 이어지는 쿼리 다섯 개는 제목 줄만 다섯 번 찍습니다. 되돌릴 방법도 없습니다.

기본 동작은 "지우지 않고 얹기"이고, 비우려면 --reset을 붙이며 그때도 확인을 받습니다. 멱등 적재(MERGE)이므로 여러 번 실행해도 그래프는 늘어나지 않습니다.

핵심 쿼리 다섯 개

#쿼리따라갈 경로
Q1알람 원인 추적 (확률순)Fault → RootCause → MaintenanceAction → Skill
Q2부품 수명 위험도Equipment → Component → Part
Q3인력 스킬 매칭MaintenanceAction → Skill ← Worker
Q4공정 영향도Equipment ← Process → NEXT_PROCESS, PRODUCES
Q5정비 이력 패턴MaintenanceRecord → Equipment

Q4와 Q5는 Step 1에서 만든 Process·MaintenanceRecord·Product가 있어야 결과가 나옵니다. 결과가 비면 데이터가 없는 것인지 쿼리가 틀린 것인지 먼저 갈라 보세요. verify()가 노드 0을 찍으면 적재부터 다시 봐야 합니다.

Neo4j Browser 확인

  • CALL db.schema.visualization() → 스키마 캡처
  • Q1과 Q4의 결과 그래프 캡처
에디터 로딩 중...
힌트 보기
  • clear_database()는 --reset 을 줬을 때만 부르고, 그때도 몇 개를 지우는지 보여준 뒤 확인을 받으세요
  • UNWIND $rows AS row MERGE (n:`Label` {id: row.id}) SET n += row.props 패턴으로 일괄 적재합니다
  • 관계는 양 끝을 MATCH 두 줄로 나눠 찾습니다. 쉼표로 붙이면 한쪽이 없을 때 조용히 0행이 됩니다
  • Q5의 조건은 CASE 없이 WHERE $name IS NULL OR e.name CONTAINS $name 으로 씁니다
  • 쿼리 결과가 비면 먼저 MATCH (n) RETURN count(n) 으로 데이터가 있는지 확인하세요
정답 보기
에디터 로딩 중...
AI로 학습하기 — 꿀팁
Neo4j 일괄 입력 스크립트 생성AI 학습 팁

AI에게 제조 설비 JSON 데이터를 Neo4j에 UNWIND 배치 패턴으로 삽입하는 Python 스크립트를 만들어달라고 요청하세요.

제조 설비 고장 이력 JSON 배열을 Neo4j에 삽입하는 Python 스크립트를 작성해줘. UNWIND 배치 패턴, uniqueness constraint, 노드/엣지 인덱스 생성 DDL까지 포함하고, 트랜잭션 오류 시 롤백 처리도 넣어줘.
이 팁이 도움이 됐나요?
용어