SPARQL의 SQL 유사성이 주는 함정, 그리고 Datalog

요즘 온톨로지와 시맨틱 웹 관련 세미나나 강연을 진행하면서 자주 느끼는 점이 하나 있습니다. 바로 SPARQL을 소개할 때 청중들의 반응입니다.

SQL과 닮은 친구, SPARQL

SPARQL은 문법적으로 SQL과 매우 유사합니다. SELECT, WHERE, ORDER BY 같은 키워드를 사용하기 때문에, 개발 경험이 있는 분들은 처음에 굉장히 반가워하십니다. “아, 그냥 조인(Join) 많은 SQL이구나!”라고 받아들이는 경우가 많기 때문입니다.

하지만 강연을 계속 진행하다 보면, 바로 그 ‘익숙함’이 오히려 독이 되는 순간이 찾아옵니다.

유사함이 주는 오해

SQL은 닫힌 세계 가설(Closed World Assumption, CWA)을 전제로 합니다. 데이터베이스에 명시되지 않은 정보는 ‘거짓’이라고 간주하는 방식입니다. 예를 들어 수강생 목록에 ‘홍길동’이 없다면, 시스템은 “홍길동은 수강생이 아니다”라고 확신합니다.

반면, SPARQL과 온톨로지 세계관은 열린 세계 가설(Open World Assumption, OWA)을 따릅니다. 데이터에 정보가 없다고 해서 그것이 틀린 것이 아니라, 단지 ‘아직 모르는 상태’라고 판단합니다. “홍길동이 수강생이라는 데이터가 없다”는 사실이 “홍길동은 수강생이 아니다”라는 결론을 보장하지 않습니다. 어딘가 다른 데이터셋에 그 정보가 있을 수도 있고, 단지 아직 기록되지 않았을 뿐이라고 가정하기 때문입니다.

사실 테이블이냐 그래프냐 하는 구조적 차이보다, 이러한 철학적 전제의 차이가 쿼리 결과와 추론의 방향을 결정짓는 훨씬 더 본질적인 지점입니다.

SQL과 유사한 구문은 사용자로 하여금 관계형 데이터베이스(RDB)의 멘탈 모델을 온톨로지에 투영하게 만듭니다. 그러나 RDF 그래프 패턴 매칭은 관계 대수(Relational Algebra)를 기반으로 하는 SQL의 조인 연산과는 그 수학적 토대와 의미론적 해석이 근본적으로 다릅니다. 특히 OPTIONAL 연산의 비단조성(Non-monotonicity)이나 추론 규칙(Entailment Regimes)이 개입되는 지점에서 이러한 간극은 극대화됩니다. “왜 SQL과 동일하게 결과가 나오지 않는가?”라는 의문이 드는 순간, 역설적으로 그 익숙한 문법은 학습자가 시맨틱 웹의 고유한 논리 구조를 이해하는 데 방해가 되는 인지적 장벽으로 작용합니다.

차라리 완전히 다른 문법이라면?

그래서 최근에는 이런 고민을 하게 되었습니다. “차라리 온톨로지를 다루는 언어는 SQL과 완전히 다르게 생겼다고 처음부터 못 박는 게 낫지 않을까?”

RDB와는 아예 다른 사고방식이 필요하다는 것을 강조하기 위해, 문법적 유사성이 없는 언어로 접근하는 것이 ‘사고의 전환’을 유도하는 데 더 유리할 수 있다는 생각입니다.

여기서 소개하고 싶은 것이 바로 Datalog입니다.

Datalog: 논리 기반의 질의 언어

Datalog는 Prolog의 부분집합으로 시작된 선언형 논리 프로그래밍 언어입니다. 이름에서 알 수 있듯이 데이터(Data)와 논리(Logic)를 다루는 데 특화되어 있습니다.

SPARQL이 데이터베이스로부터 명시적인 데이터를 조회(Querying)하는 데 중점을 둔다면, Datalog는 주어진 사실(Facts)과 규칙(Rules)으로부터 새로운 지식을 도출(Inference)하는 패러다임을 따릅니다. 이는 온톨로지의 핵심인 추론(Reasoning) 메커니즘과 논리적으로 일관된 구조를 가집니다.

Datalog의 맛보기

예를 들어, “조상의 조상은 조상이다”라는 재귀적인 관계를 SPARQL로 표현하려면 (SPARQL 1.1의 Property Path가 있긴 하지만) 꽤나 설명이 길어질 수 있습니다. 하지만 Datalog에서는 매우 직관적인 논리 규칙으로 표현됩니다.

ancestor(X, Y) :- parent(X, Y).
ancestor(X, Y) :- parent(X, Z), ancestor(Z, Y).
  • XY의 부모라면, XY의 조상입니다.
  • XZ의 부모이고, ZY의 조상이라면, XY의 조상입니다.

이 문법은 SQL과는 전혀 다릅니다. 그렇기 때문에 학습자는 RDB의 사고방식을 내려놓고, 논리적 관계사실의 도출이라는 새로운 관점에서 데이터를 바라보게 됩니다.

결론

물론 현실의 시맨틱 웹 생태계 표준은 SPARQL입니다. 하지만 온톨로지의 본질인 ‘지식의 표현과 추론’을 이해하기 위한 입문 도구로서, 혹은 SPARQL이 주는 RDB의 환상을 깨기 위한 충격 요법으로서 Datalog를 먼저 접해보는 것은 꽤나 매력적인 시도가 될 것 같습니다.

마지막으로, 앞서 이야기한 세 가지 언어의 기술적 특성을 간단히 비교해보면 다음과 같습니다.

특성 SQL SPARQL Datalog
데이터 모델 테이블 (Relational Table) 그래프 (RDF Graph) 사실(Facts) 및 규칙(Rules)
기본 전제 닫힌 세계 가설 (CWA) 열린 세계 가설 (OWA) 논리적 귀결 (Logical Consequence)
핵심 연산 관계 대수 (Relational Algebra) 그래프 패턴 매칭 (Pattern Matching) 재귀적 추론 (Recursive Inference)
주요 목적 데이터의 관리 및 조회 웹 데이터의 연결 및 탐색 지식의 표현 및 새로운 사실 도출

SQL의 그늘에서 벗어나, 데이터 그 자체의 논리적 연결에 집중하게 해주는 Datalog. 온톨로지를 공부하다가 SPARQL의 문법적 함정에 빠져 허우적거린 경험이 있으시다면, 한 번쯤 눈길을 돌려볼 만한 가치가 있습니다.

Comments