47

Step 1: 확장 온톨로지 설계 및 데이터 모델링

설비-공정 Knowledge Graph

학습 목표
  • Day 2 정본 시드 위에 프로젝트 요구사항(Product, QualityInspection)을 얹는다
  • 클래스 계층과 부분-전체를 나눈 채로 엔티티 14종·관계 18종까지 확장한다
  • 노드 50건·관계 80건 기준을 넘는 데이터셋을 만들어 dataset.json으로 저장한다
  • 관계 수를 직접 세고 정의역·치역까지 확인하는 검증기를 구현한다

Step 1: 확장 온톨로지 설계

목표

Day 2의 정본 시드(seed_kg.py, 노드 115 / 관계 183) 위에 프로젝트 요구사항을 얹어 제출용 데이터셋을 완성합니다.

seed_kg.py를 같은 폴더에 두고 시작하세요. 처음부터 다시 만들 필요가 없습니다.

추가할 엔티티

  • Product: 감속기 제품 두 가지
  • QualityInspection: 검사 항목·규격·측정값·판정을 담은 기록 여섯 건 (불합격 사례를 섞으세요)

시드에 이미 들어 있는 것: Process 6종, MaintenanceRecord 12건, NEXT_PROCESS, USES_EQUIPMENT, FOR_EQUIPMENT.

추가할 관계

  • PRODUCES (Process → Product)
  • INSPECTS (QualityInspection → Product)
  • MEASURED_BY (QualityInspection → Equipment)

검증기를 직접 만듭니다

validate_dataset()이 이 Step의 핵심입니다. 관계를 세는 방법이 틀리면 아무도 통과하지 못합니다. 항목에 belongs_to 키가 있는지로 세면 노드 하나가 관계를 최대 1개만 만들 수 있으므로, 관계 수가 노드 수를 절대 넘지 못합니다. 그 상태로 "노드 50 / 관계 80"을 기준으로 두면 요구사항을 다 채운 사람도 계속 미달을 봅니다.

검증기가 확인할 것:

항목통과 조건
노드 수50 이상
관계 수80 이상 (관계 목록을 직접 센다)
중복 id없어야 함
참조 무결성관계의 양 끝 노드가 실제로 존재
정의역·치역관계의 출발·도착 클래스가 온톨로지와 일치 (하위 클래스는 통과)
고아 노드어느 관계에도 연결되지 않은 노드 없음

결과

총 노드 수: 123 (기준 50)
총 관계 수: 197 (기준 80)
모든 검증 통과
dataset.json 저장 완료

Tip: Graph Schema Designer로 먼저 그려보기

코드로 곧장 스키마를 짜기 전에 그림으로 먼저 그려보면 빠진 엔티티·관계가 한눈에 보입니다.

👉 Graph Schema Designer 열기

  • 제조 온톨로지 라벨 팔레트(Equipment·Component·Part·Fault·Process…) + 프리셋 내장
  • 노드·관계를 드래그로 그리면 CREATE/MERGE Cypher가 실시간으로 생성됩니다
  • 위 ONTOLOGY의 엔티티와 관계를 캔버스에 옮겨 Product·QualityInspection을 시각적으로 이어보세요

더 풍부한 편집이 필요하면 Neo4j Labs의 arrows.app에서 그린 뒤 Export ▸ Cypher로 내보냅니다.

두 도구가 내보내는 Cypher는 설계를 눈으로 확인하는 용도입니다. 실제 적재는 Step 2의 load_from_json()으로 하세요. 화면에서 내보낸 Cypher를 그대로 붙이면 id 없이 이름으로만 노드가 만들어져, 다시 실행할 때마다 그래프가 늘어나거나 기존 노드와 어긋납니다.

에디터 로딩 중...
힌트 보기
  • seed_kg.build_dataset()이 {'nodes': [...], 'relationships': [...]} 를 돌려줍니다. 그 리스트에 append 하면 확장이 끝납니다
  • 노드는 {'labels': [...], 'id': ..., 'props': {...}}, 관계는 {'from_label','from','type','to_label','to','props'} 형식입니다
  • 정의역·치역 검사에서 CNCMill 같은 하위 클래스도 Equipment로 통과시켜야 합니다. subClassOf를 따라 올라가는 함수를 하나 만드세요
  • 고아 노드 검사는 관계의 from/to를 모두 모은 집합과 노드 id 집합의 차집합으로 구합니다
  • dataset.json은 Step 2에서 그대로 읽어 Neo4j에 넣습니다. 형식을 바꾸면 Step 2도 함께 고쳐야 합니다
정답 보기
에디터 로딩 중...
AI로 학습하기 — 꿀팁
확장 온톨로지 엔티티·관계 코드 생성AI 학습 팁

AI에게 8개 이상 엔티티 타입과 10개 이상 관계를 포함한 확장 온톨로지를 Neo4j 노드·엣지 초기화 코드와 함께 생성시키세요.

제조 프로젝트용 확장 온톨로지를 설계하고 Python 코드로 작성해줘. Equipment·Part·Process·Failure·Sensor·MaintenanceWork·Supplier·Operator 8개 엔티티와 PART_OF·CAUSED_BY·REQUIRES·DETECTED_BY·PERFORMED_BY·SUPPLIED_BY·OPERATED_BY·TRIGGERS·PREVENTS·MITIGATES 10개 관계를 정의하고, Neo4j에 초기 샘플 데이터를 삽입하는 Cypher 스크립트도 함께 작성해줘.
이 팁이 도움이 됐나요?
용어