2026. 4. 26. 11:13ㆍ정리/책 정리
SPARQL이란?
SPARQL은 RDF 데이터에 접근하는 표준 질의 언어로, 기본 아이디어는 간단합니다. 트리플의 일부를 ?변수로 대체하여 모르는 부분을 묻는 방식입니다. 트리플의 순서는 결과에 영향을 주지 않습니다.
4가지 질의 유형
SELECT — 변수에 바인딩된 값을 테이블로 반환합니다.
SELECT ?movie WHERE { :JamesDean :playedIn ?movie }
ASK — 패턴이 존재하는지 예/아니오로 반환합니다.
ASK WHERE { :ElizabethTaylor :diedOn ?any }
CONSTRUCT — 기존 데이터를 기반으로 새로운 RDF 트리플을 생성합니다. 규칙 엔진처럼 활용할 수 있습니다.
CONSTRUCT { ?d rdf:type :Director } WHERE { ?any :directedBy ?d }
DESCRIBE — 특정 자원에 대한 모든 관련 트리플을 반환합니다 (구현체에 따라 다름).
주요 키워드 정리
| 키워드 | 역할 |
|---|---|
FILTER |
조건을 만족하는 결과만 포함 |
OPTIONAL |
일치하지 않아도 전체 질의를 무효화하지 않음 |
FILTER NOT EXISTS |
패턴이 없는 경우만 선택 |
UNION |
두 패턴 중 하나라도 일치하면 포함 |
ORDER BY / LIMIT |
정렬 및 결과 수 제한 |
DISTINCT |
중복 결과 제거 |
GROUP BY / HAVING |
집계 후 그룹화 및 필터링 |
BIND |
계산 결과를 변수에 할당 |
SERVICE |
외부 SPARQL 엔드포인트에 연합 질의 |
CONSTRUCT를 규칙 엔진으로 활용
"이 패턴이 보이면 이런 결론을 내린다"는 규칙을 표현할 수 있습니다.
-- 남성의 아버지 → 아들 관계 도출
CONSTRUCT { ?q1 :hasSon ?q2 }
WHERE { ?q2 a :Man . ?q2 :hasFather ?q1 }
-- 선호 고객 분류 (5000달러 이상)
CONSTRUCT { ?c a :PreferredCustomer }
WHERE { ?c :totalBusiness ?tb . FILTER(?tb > 5000) }
규칙을 여러 단계로 쌓아 복잡한 관계(예: 삼촌)도 단계적으로 도출할 수 있습니다.
고급 기능 (SPARQL 1.1)
추이성 연산자(*, +)로 계층 구조를 한 번에 탐색할 수 있습니다. hasParent*는 자기 자신 포함 모든 조상, hasParent+는 자기 자신 제외 조상을 반환합니다.
집계 함수 COUNT, SUM, MIN, MAX, AVG를 GROUP BY와 함께 쓰면 매출 집계, 영화 수 계산 등 통계 질의가 가능합니다.
하위 질의는 집계 결과를 다른 질의의 입력으로 활용할 때 사용하며, SERVICE 키워드로 DBpedia 같은 외부 엔드포인트와 연합 질의도 가능합니다.
핵심 원칙 한 줄 요약
SPARQL은 데이터를 가져오는 것(SELECT) 과 변환하는 것(CONSTRUCT) 을 동일한 그래프 패턴 개념으로 처리하며, CONSTRUCT를 반복 적용하면 추론 규칙 체계를 구성할 수 있습니다.
'정리 > 책 정리' 카테고리의 다른 글
| AI 엔지니어링 [칩 후옌] 요약 정리 (0) | 2026.04.29 |
|---|---|
| Ch7 RDF 확장: RDFS와 SCHACL (1) | 2026.04.26 |
| Ch15 좋은 모델링과 나쁜 모델링 사례 요약 정리 (1) | 2026.04.25 |
| Ch14 웹에 있는 온톨로지 요약 정리 (0) | 2026.04.22 |
| Ch13 OWL에서의 계산과 집합 정리 (0) | 2026.04.19 |