Skip to main content
Version: v0.2.0

노원구 COVID-19 온톨로지 — 20분 walkthrough

covid19 예제에서 import한 9개 데이터셋 위에 **엔티티(Entity)와 관계(Relationship)**를 정의하고, 그래프 탐색기 · 엔티티 지도로 시각 탐색까지 이어가는 후속편입니다. 데이터셋·파이프라인까지가 "표 단위로 다루기"였다면, 온톨로지 레이어는 "동·병원·환자를 노드와 간선으로 다루기"입니다.

사전 준비
  • covid19 예제를 끝까지 따라해 컬렉션 노원구 COVID-19 분석에 9개 데이터셋이 import된 상태
  • D.Hub 계정 (covid19 예제와 동일 사용자)

시나리오와 사용 데이터셋

본 예제는 covid19에서 import된 9개 데이터셋 중 다음 3개를 엔티티의 backing dataset으로 사용합니다.

데이터셋엔티티Identity KeysDisplay Column
clinicsClinicclinic_idclinic_name
patientPatientpatient_idpatient_id
region_dongRegionsido·sigungu·dong (복합키)dong

나머지 6개 데이터셋은 본 예제에서 직접 사용하지 않습니다 — hotspot_result는 본문 마지막 다음 단계에서 추가 모델링 아이디어로 안내합니다.


Step 1. 온톨로지 빌더 진입 (1분)

  1. 좌측 사이드바에서 온톨로지를 클릭합니다.
  2. 온톨로지 모델링 리스트에서 노원구 COVID-19 분석 컬렉션의 모델링 항목을 선택합니다 (없으면 새 모델링 또는 컬렉션 detail 페이지에서 생성).
  3. 온톨로지 빌더(Ontology Builder) 캔버스가 열립니다.
여기까지 완료하면
  • 캔버스가 빈 상태로 보입니다(엔티티/관계가 아직 0개).
  • 좌측에 템플릿(Person, Organization, Product 등) 네비게이션 패널, 상단에 + Entity 버튼, 우측에 인스펙터(현재는 비어 있음)가 보여야 합니다.

Step 2. 엔티티 3개 정의 (5분)

세 종류의 엔티티를 캔버스에 만듭니다. 각 엔티티는 캔버스에서 + Entity 버튼으로 생성한 뒤, 우측 인스펙터에서 속성·Identity Keys·Display Column을 설정합니다.

2-1. Clinic

  1. 상단의 + Entity 버튼을 클릭합니다.
  2. 우측 인스펙터에서 다음을 설정합니다.
    • 이름: Clinic
    • 설명: 안심병원·선별진료소
    • 속성(Properties): clinic_id (STRING), clinic_name (STRING), clinic_type (STRING), latitude (FLOAT), longitude (FLOAT)
    • Identity Keys: clinic_id
    • Display Column: clinic_name
  3. 변경 사항이 자동 저장됩니다.

2-2. Patient

  1. 다시 + Entity 클릭.
  2. 인스펙터 설정.
    • 이름: Patient
    • 설명: 환자 위치·감염일
    • 속성: patient_id (STRING), age_group (STRING), sido (STRING), sigungu (STRING), dong (STRING), infection_date (DATE)
    • Identity Keys: patient_id
    • Display Column: patient_id

2-3. Region

  1. + Entity 클릭.
  2. 인스펙터 설정.
    • 이름: Region
    • 설명: 동별 인구 통계
    • 속성: sido (STRING), sigungu (STRING), dong (STRING), float_population (INTEGER), residents_population (INTEGER)
    • Identity Keys (복합키): sido, sigungu, dong — 세 컬럼을 모두 Identity Keys 패널에 추가합니다.
    • Display Column: dong
여기까지 완료하면
  • 캔버스에 Clinic, Patient, Region 세 개의 엔티티 노드가 보입니다.
  • 각 노드를 클릭하면 우측 인스펙터에 속성 목록과 Identity Keys / Display Column 필드가 채워져 있습니다.
  • Region 인스펙터의 Identity Keys 패널에 세 개의 키 컬럼(sido · sigungu · dong)이 순서대로 나열되어 있어야 합니다.

Step 3. 관계 2개 정의 (4분)

엔티티 간 관계는 별도 버튼이 아니라 노드의 연결 핸들을 다른 노드로 드래그해서 만듭니다.

3-1. Patient lives_in Region

  1. Patient 노드의 테두리에 마우스를 올려 연결 핸들(작은 점)을 표시합니다.
  2. 핸들에서 시작해 마우스를 드래그해 Region 노드 위에서 놓습니다.
  3. Create Relationship 대화상자가 열립니다.
    • 관계 이름: lives_in
    • 방향: Patient → Region (드래그 방향대로)
  4. 저장합니다.

3-2. Clinic located_in Region

  1. Clinic 노드 핸들 → Region 노드로 드래그.
  2. Create Relationship 대화상자.
    • 관계 이름: located_in
  3. 저장.
여기까지 완료하면
  • 캔버스에 Patient → lives_in → Region, Clinic → located_in → Region 두 개의 화살표가 그려져 있습니다.
  • Region 노드에 두 개의 화살표가 모입니다.
  • 관계 화살표를 클릭하면 인스펙터에 관계 타입과 방향이 표시됩니다.

Step 4. 각 엔티티에 데이터셋 매핑 (5분)

엔티티는 그 자체로는 스키마이며, 실제 인스턴스는 backing dataset의 행에서 가져옵니다. 각 엔티티의 인스펙터 Data Source 탭에서 데이터셋과 컬럼 매핑을 지정합니다.

4-1. Clinic ← clinics 데이터셋

  1. 캔버스에서 Clinic 엔티티를 선택합니다.
  2. 우측 인스펙터의 Data Source 탭을 엽니다.
  3. 데이터셋 선택: 동일 컬렉션의 clinics를 선택합니다.
  4. 필드 매핑: 동일 이름의 컬럼이 자동 매핑됩니다 (clinic_id ← clinic_id, clinic_name ← clinic_name, latitude ← latitude, longitude ← longitude 등).
  5. Identity Keys 매핑: clinic_id가 자동 인식되었는지 확인.

4-2. Patient ← patient 데이터셋

  1. Patient 엔티티 선택 → Data Source 탭.
  2. 데이터셋: patient.
  3. 자동 필드 매핑 확인 (patient_id, age_group, sido, sigungu, dong, infection_date).
  4. Identity Keys 매핑 확인 (patient_id).

4-3. Region ← region_dong 데이터셋

  1. Region 엔티티 선택 → Data Source 탭.
  2. 데이터셋: region_dong.
  3. 필드 매핑 확인 — Region 속성 float_population이 데이터셋 컬럼 float_population에 매핑되었는지 확인. 컬럼명이 다르면 수동 매핑.
  4. Identity Keys 매핑 (복합키): sido/sigungu/dong 세 컬럼이 모두 매핑되어야 합니다. 하나라도 비면 그래프 적재가 실패합니다.
여기까지 완료하면
  • 세 엔티티 모두 인스펙터 Data Source 탭에 backing dataset 이름이 표시됩니다.
  • 매핑 저장 직후부터 백엔드 sink가 자동으로 그래프 데이터베이스(Neo4j)에 데이터를 적재합니다(별도 Build 버튼 없음).
  • 적재가 끝나면 다음 Step의 그래프 탐색기에 노드가 보이기 시작합니다 — 데이터 양에 따라 몇 초~수십 초 걸릴 수 있습니다.

Step 5. 그래프 탐색기로 탐색 (3분)

빌더에서 정의한 엔티티/관계가 실제 그래프로 적재되었는지 시각적으로 확인합니다.

  1. 사이드바에서 온톨로지그래프 탐색기를 엽니다.

  2. 좌측 메타데이터 패널Labels (Nodes) 항목에 Clinic, Patient, Region이 보이고 각 옆에 노드 개수가 표시됩니다.

  3. Patient 라벨을 클릭하면 자동으로 MATCH (n:Patient) RETURN n LIMIT 100 같은 쿼리가 실행되어 환자 노드들이 시각화 영역에 펼쳐집니다.

  4. 환자 노드 하나를 더블 클릭하면 연결된 Region 노드가 추가로 펼쳐집니다(lives_in 관계 활용).

  5. (선택) 하단 쿼리 에디터에 다음 Cypher를 입력하고 Run을 클릭하면 환자-거주지 관계를 한 번에 시각화합니다.

    MATCH (p:Patient)-[:lives_in]->(r:Region)
    RETURN p, r
    LIMIT 50
여기까지 완료하면
  • 메타데이터 패널의 Labels (Nodes) 카운트가 Clinic 20, Patient 13, Region 9 근사값으로 채워져 있어야 합니다.
  • 카운트가 0이면 Step 4의 Data Source 매핑이 아직 적재되지 않은 상태입니다 — 30초~1분 기다린 뒤 페이지 새로고침.
  • Cypher 쿼리 결과의 노드 색상은 라벨별로 자동 지정됩니다.

Step 6. 엔티티 지도로 안심병원 분포 시각화 (2분)

Clinic 엔티티는 latitude/longitude 속성을 가지므로 지도 위에 직접 표시할 수 있습니다.

  1. 사이드바에서 온톨로지 → 모델링 리스트에서 Clinic 엔티티 항목을 선택합니다.
  2. 엔티티 상세에서 지도 탭을 클릭합니다 (URL은 /ontology/entities/<clinic-id>/map 형태).
  3. Clinic의 latitude/longitude 속성이 자동 인식되어 노원구 영역에 20개의 마커가 표시됩니다.
  4. 마커 하나를 클릭하면 clinic_name, clinic_type, sample_available 등 속성이 팝업으로 표시됩니다.
여기까지 완료하면
  • 지도 위에 노원구 영역의 20개 안심병원·선별진료소 마커가 보입니다.
  • Patient 엔티티에는 latitude/longitude 속성이 없어 지도에 직접 표시되지 않습니다. 환자 위치를 지도에 보고 싶다면 본문 다음 단계 표의 hotspot_result 활용 아이디어를 참고하세요.

마치며

축하합니다 — covid19 데이터셋 위에 의미 레이어를 얹어 그래프로 한 단계 끌어올렸습니다. 이번 20분의 산출물:

  • ✅ 엔티티 3개 (Clinic, Patient, Region) + Identity Keys / Display Column 설정
  • ✅ 관계 2개 (lives_in, located_in)
  • ✅ Data Source 매핑 3건 (clinics / patient / region_dong) → 자동 sink로 Neo4j 적재
  • ✅ 그래프 탐색기 시각 탐색 + Cypher 쿼리 1건
  • ✅ Clinic 분포 지도 시각화

다음 단계

더 깊이 가려면가이드
hotspot_result로 환자 접촉 관계(자기참조) 모델링관계 (Relationships)
Cypher로 직접 그래프 질의 작성Cypher 가이드
스키마를 JSON 또는 CSV로 일괄 정의스키마 편집기
같은 흐름을 API/cURL로 자동화개발자 가이드 - API 튜토리얼
컬렉션·온톨로지를 다른 사용자에게 공유공유 및 권한
데이터셋·파이프라인 단계로 돌아가기covid19 예제

문제 해결

증상점검
Step 2에서 속성 타입이 자동으로 추론되지 않음인스펙터에서 각 속성을 클릭해 타입을 직접 지정 (STRING / INTEGER / FLOAT / BOOLEAN / DATE)
Step 3에서 드래그 시 Create Relationship 대화상자가 안 뜸시작 핸들이 정확히 노드 테두리의 점에서 출발했는지 확인. 노드 내부에서 시작하면 노드 이동으로 인식됨
Step 4 Data Source 탭에서 데이터셋 목록이 비어 있음컬렉션 범위가 일치하는지 확인 (동일 컬렉션의 데이터셋만 노출). 노원구 COVID-19 분석 컬렉션을 선택했는지 점검
Step 5 그래프 탐색기 라벨 카운트가 0Step 4 Data Source 저장 직후 sink 작업이 진행 중. 30초~1분 기다린 뒤 페이지 새로고침. 그래도 0이면 Identity Keys 매핑 누락 여부 점검
Step 6 지도에 마커가 보이지 않음Cliniclatitude/longitude가 FLOAT으로 매핑되었는지 확인. 문자열로 매핑되면 좌표로 인식되지 않음. 좌표계는 WGS84 가정