본문으로 건너뛰기
버전: v0.2.0

그래프 탐색기 (Graph Explorer)

Graph Explorer는 구축된 온톨로지 데이터를 시각적으로 탐색하고 분석하는 도구입니다. 그래프 데이터베이스에 적재된 데이터를 Cypher 쿼리로 조회하고 시각화합니다. 페이지 아이콘은 노드와 엣지(관계)를 강조하는 형태입니다.

URL 딥링크 (prefill)

Graph Explorer는 URL 쿼리 파라미터로 시작 상태를 prefill할 수 있어, 특정 노드/쿼리에서 시작하는 탐색 링크를 공유할 수 있습니다 — 거버넌스 감사, 조사 요청 등에 유용합니다.

화면 구성

스크린샷 TODO

그래프 탐색기 — 좌측 메타데이터 패널, 중앙 그래프 시각화, 하단 Cypher 에디터. URL prefill로 진입한 직후의 상태(특정 라벨 강조)가 보이면 좋습니다.

1. 메타데이터 패널 (Metadata Panel)

왼쪽 패널에서는 현재 선택된 컬렉션의 그래프 스키마 정보를 보여줍니다.

  • Labels (Nodes): 정의된 엔티티 라벨 목록 (예: Person, Company)
    • 각 라벨 옆에 노드 개수가 표시됩니다.
  • Relationship Types: 정의된 관계 타입 목록 (예: BOUGHT, MANAGED)
    • 각 타입 옆에 관계 개수가 표시됩니다.
  • Property Keys: 사용 중인 속성 키 목록
  • 항목을 클릭하면 해당 타입의 모든 데이터를 조회하는 쿼리가 자동 실행됩니다.

2. 시각화 영역 (Visualization)

중앙 화면은 조회된 데이터를 그래프(노드와 링크) 형태로 보여줍니다.

  • 인터랙션: 노드를 드래그하거나 확대/축소할 수 있습니다.
  • 상세 정보: 노드나 링크를 클릭하면 해당 요소의 속성(Property) 정보가 표시됩니다.
  • 확장 탐색: 노드를 더블클릭하면 연결된 이웃 노드들을 추가로 조회합니다.
  • 레이아웃: Force-directed 레이아웃으로 자동 배치되며, 수동으로 조정할 수 있습니다.

3. 쿼리 에디터 (Query Editor)

하단 패널에서는 Cypher 쿼리를 직접 작성하고 실행할 수 있습니다.

  • 쿼리 입력: 그래프 데이터베이스의 표준 쿼리 언어인 Cypher를 지원합니다.
  • 실행 (Run): 쿼리를 실행하고 결과를 시각화 영역에 반영합니다.
  • 결과 뷰: 그래프, 테이블, 텍스트 형식으로 결과를 확인할 수 있습니다.

Cypher 쿼리 가이드

기본 패턴 매칭

-- 모든 Person 노드 조회
MATCH (p:Person)
RETURN p
LIMIT 100

-- 특정 관계로 연결된 노드 조회
MATCH (p:Person)-[:BOUGHT]->(product:Product)
RETURN p, product
LIMIT 50

-- 조건 필터링
MATCH (p:Person)-[:BOUGHT]->(product)
WHERE p.age > 30 AND product.price > 10000
RETURN p, product

집계 쿼리

-- 라벨별 노드 개수
MATCH (n)
RETURN labels(n) as label, count(*) as count
ORDER BY count DESC

-- 관계별 통계
MATCH ()-[r]->()
RETURN type(r) as relationship, count(*) as count
ORDER BY count DESC

-- 가장 많은 구매를 한 고객
MATCH (p:Person)-[:BOUGHT]->(product)
RETURN p.name, count(product) as purchase_count
ORDER BY purchase_count DESC
LIMIT 10

경로 탐색

-- 두 노드 간 최단 경로
MATCH path = shortestPath(
(a:Person {name: "Alice"})-[*]-(b:Person {name: "Bob"})
)
RETURN path

-- N-hop 이웃 조회
MATCH (p:Person {name: "Alice"})-[*1..3]-(neighbor)
RETURN DISTINCT neighbor
LIMIT 50

유용한 Cypher 함수

함수설명예시
count()개수 세기count(n)
collect()리스트로 수집collect(n.name)
labels()노드 라벨 조회labels(n)
type()관계 타입 조회type(r)
properties()모든 속성 조회properties(n)
size()리스트 크기size(collect(n))
coalesce()NULL 대체값coalesce(n.name, "Unknown")

결과 뷰 모드

그래프 뷰

  • 노드와 관계를 시각적으로 표시합니다.
  • 노드 색상은 라벨별로 자동 지정됩니다.
  • 노드 크기를 속성 값에 따라 조정할 수 있습니다.

테이블 뷰

  • 쿼리 결과를 표 형태로 표시합니다.
  • 컬럼 정렬 및 필터링이 가능합니다.

텍스트 뷰

  • 원시 JSON 형태의 결과를 확인합니다.
  • 디버깅이나 상세 데이터 확인에 유용합니다.

데이터 탐색 팁

  • 특정 라벨의 노드만 보려면 메타데이터 패널에서 해당 라벨을 클릭합니다.
  • 복잡한 패턴을 찾으려면 쿼리 에디터에서 직접 MATCH 문을 작성합니다.
  • 노드가 너무 많아 복잡하다면 LIMIT 절을 사용하여 조회 개수를 제한하는 것이 좋습니다.
  • 성능을 위해 가능하면 인덱스가 설정된 속성으로 필터링합니다.