Ch6 시맨틕 웹 질의하기 : SPARQL 요약 정리

2026. 4. 26. 11:13정리/책 정리

728x90
반응형

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, AVGGROUP BY와 함께 쓰면 매출 집계, 영화 수 계산 등 통계 질의가 가능합니다.

하위 질의는 집계 결과를 다른 질의의 입력으로 활용할 때 사용하며, SERVICE 키워드로 DBpedia 같은 외부 엔드포인트와 연합 질의도 가능합니다.


핵심 원칙 한 줄 요약

SPARQL은 데이터를 가져오는 것(SELECT)변환하는 것(CONSTRUCT) 을 동일한 그래프 패턴 개념으로 처리하며, CONSTRUCT를 반복 적용하면 추론 규칙 체계를 구성할 수 있습니다.

728x90
반응형