SPARQL & 온톨로지¶
ThinkERD는 ERD 구조를 온톨로지(RDFS/OWL)**로 실시간 변환하여 **SPARQL 쿼리로 의미적 분석을 수행할 수 있습니다.
개요¶
일반 SQL이 "데이터를 어떻게 저장할 것인가"에 집중한다면, SPARQL은 "데이터 간의 **관계와 의미**를 어떻게 탐색할 것인가"에 집중합니다.
graph LR
ERD["📊 ERD 모델"] -->|"R2RML 변환"| OWL["🌐 RDFS/OWL"]
OWL -->|"로드"| OX["🔍 Oxigraph Wasm"]
OX -->|"SPARQL 질의"| R["📋 결과"]
style ERD fill:#e0f2fe,stroke:#0284c7
style OWL fill:#f3e8ff,stroke:#9333ea
style OX fill:#fef3c7,stroke:#d97706 ERD → 온톨로지 매핑¶
ERD의 구조 요소가 자동으로 온톨로지 개념으로 변환됩니다:
| ERD | 온톨로지 | 설명 |
|---|---|---|
| 엔터티 | owl:Class | 클래스 정의 |
| 컬럼 | owl:DatatypeProperty | 데이터 속성 |
| PK | owl:FunctionalProperty | 함수적 속성 |
| 관계 (FK) | owl:ObjectProperty | 객체 속성 |
| 서브타입 | rdfs:subClassOf | 클래스 상속 |
SPARQL Scratchpad 사용¶
Data Lab에서 SPARQL 탭을 선택하면 SPARQL 에디터가 열립니다.
예시 쿼리¶
# 모든 클래스(엔터티) 조회
SELECT ?class ?label WHERE {
?class a owl:Class .
?class rdfs:label ?label .
}
# 특정 엔터티의 속성 조회
SELECT ?prop ?label ?type WHERE {
?prop rdfs:domain <#고객> .
?prop rdfs:label ?label .
?prop rdfs:range ?type .
}
# 관계(FK)로 연결된 엔터티 쌍
SELECT ?source ?target WHERE {
?rel a owl:ObjectProperty .
?rel rdfs:domain ?source .
?rel rdfs:range ?target .
}
Model Explorer¶
글로벌 우측 인스펙터 패널의 **Model Explorer**에서 현재 다이어그램의 온톨로지 구조를 **트리 형태**로 탐색할 수 있습니다.
- 클래스(엔터티) 계층 구조 확인
- 속성(컬럼) 목록 확인
- 관계(FK) 구조 확인
- SPARQL 쿼리 작성 시 **어휘 참조**로 활용
기술 스택¶
| 구성 요소 | 설명 |
|---|---|
| Oxigraph Wasm | 브라우저 내 RDF 트리플 스토어 |
| R2RML | ERD → RDF 실시간 변환 엔진 |
| SPARQL 1.1 | W3C 표준 쿼리 언어 지원 |