본문으로 건너뛰기

TBox와 ABox: 스키마 대 데이터

📍 현재 위치: 1부 · 지식 표현 — 3장. RDF와 OWL은 학계 세계에 전역적으로 이름 붙은 트리플과 논리적 구성자로 이루어진 웹 표준의 외피를 입혔습니다; 이 장은 그 어휘를 서술 논리 지식 베이스로 끌어올리고, 그것이 두 개의 상자 — 한쪽에는 일반 규칙, 다른 쪽에는 특정 사실 — 로 나뉜다는 것을 발견합니다.

이 권의 모든 지식 베이스는 정말로 서로 다른 일을 하는 두 개의 절반으로 이루어져 있습니다. 한쪽 절반은 영역의 법칙을 진술합니다 — 교수는 연구자다; 교수와 학생은 결코 겹치지 않는다 — 이름이 붙었든 아니든 모든 대상을 구속하는 법칙입니다. 다른 절반은 현장의 사실을 진술합니다 — alice는 교수다; alice는 bob을 지도한다 — 특정한, 이름 붙은 사물에 관한 주장입니다. 서술 논리(description logic)는 이 두 절반에 서로 다른 이름, 서로 다른 표기법, 그리고 이 장이 보여 주듯 서로 다른 추론 질문을 부여합니다. 이 둘을 갈라 두는 법을 배우는 것이 지식 표현의 첫 번째 진짜 기술입니다.

쉽게 말하면

도감(field guide) 한 권이 그날의 관찰 기록부(logbook) 옆에 놓여 있다고 상상해 보십시오. 도감은 "모든 참새는 새다"라거나 "그 어떤 생물도 새이면서 동시에 물고기일 수는 없다" 같은 것들을 말합니다 — 어떤 동물이 지나가든 참인, 종류에 관한 법칙이며, 특정 개체를 이름으로 언급하는 일은 결코 없습니다. 기록부는 "3번 모이통에 있는 새는 참새이고, 그 새가 5번 모이통에 있던 새를 쫓아냈다"라고 말합니다 — 구체적이고, 이름 붙고, 날짜가 적힌 관찰입니다. 도감은 10년에 한 번 다시 쓰이고, 기록부는 시시각각 채워집니다. 여러분은 결코 도감에 한 번의 관찰을 휘갈겨 적지도, 기록부에 일반 법칙을 적지도 않을 것입니다. 서술 논리 지식 베이스는 이 구분을 공식화합니다: 도감이 TBox이고, 기록부가 ABox입니다.

이 장에서 다루는 내용

  • 한 줄로 요약한 분할TBox(용어 상자, terminological box)는 스키마로서 어떤 종류의 사물이 존재하고 그것들이 어떻게 관계 맺는지를 말하며, ABox(단언 상자, assertional box)는 데이터로서 어떤 이름 붙은 개체가 무엇인지를 말합니다.
  • TBox를 소리 내어 읽기 — 동반 코드에서 인용한 학계 세계의 14개 일반 공리를 평이한 한국어로 읽어 봅니다: 개념 위계, 역할 사슬, 분리성, 그리고 의도적으로 충족 불가능하게 만든 두 개의 개념.
  • ABox를 소리 내어 읽기 — 개념 단언 C(a)C(a)와 역할 단언 r(a,b)r(a,b), 그리고 동반 코드가 이 31개 전부를 손으로 다시 타이핑하지 않고 어떻게 기계적으로 만들어 내는지.
  • 증명 가능하게 같은 세계 — ABox는 1권의 kb.FACTS의 순수 함수이므로, professor(alice)는 정확히 Professor(alice)가 되며, 그 개수는 주장되는 것이 아니라 계산되는 것입니다.
  • 의미론 — 해석, 모델, 함의 KBα\text{KB} \models \alpha, 그리고 이것이 사 주는 두 가지 질문 — 포섭(subsumption)(TBox 질의)과 인스턴스 검사(instance checking)(ABox 질의) — 을 표로 정리합니다.
  • 개방 세계적 독해 — ABox는 불완전합니다: 누락된 역할 단언은 "거짓"이 아니라 "알 수 없음"을 뜻하며, 이 주제는 이후 개방 세계를 다루는 장에서 본격적으로 되짚어집니다.

한 줄로 요약한 분할

서술 논리 지식 베이스는 하나의 쌍 KB=(T,A)\text{KB} = (\mathcal{T}, \mathcal{A})입니다 [1]. 첫 번째 성분인 TBox T\mathcal{T}(용어 상자(terminological box)의 줄임말)는 개념과 역할에 관한 일반 공리들의 집합입니다 — 그 안에 어떤 개체의 이름도 없이, 그 패턴에 들어맞는 모든 대상에 대해 참인 진술입니다. 두 번째인 ABox A\mathcal{A}(단언 상자(assertional box)의 줄임말)는 특정한 이름 붙은 개체에 관한 단언들의 집합입니다. 이름을 문자 그대로 읽어 보십시오: 용어적(terminological) 지식은 용어(term)에 관한 지식 — 즉 종류와 관계의 어휘에 관한 지식이고, 단언적(assertional) 지식은 특정한 사물에 관한 특정한 사실을 단언합니다 [2].

세 가지 어휘가 나머지를 떠받칩니다. 개념(concept)은 개체들의 한 부류입니다 — Professor, Student, Person처럼 대문자로 쓰며, OWL 클래스에 대응하는 서술 논리 쪽 대상입니다. 역할(role)은 개체 사이의 이항 관계입니다 — advises, authored, cites처럼, OWL 속성에 대응합니다. 개체(individual)는 이름 붙은 하나의 사물입니다 — alice, p1, mit. TBox는 오직 개념과 역할에 관해서만 말하고, ABox는 그 개념과 역할을 통해 개체에 관해 말합니다. 이 한 문장이 전체 구조이며, 이 장의 나머지는 이를 하나의 구체적인 세계 위에서 채워 나갈 뿐입니다.

수평 구분선으로 두 개의 상자가 위아래로 쌓인, 하나의 공유된 세계 위에 놓인 키가 큰 다이어그램입니다. 위쪽 상자에는 TBox, 스키마, 일반 공리라는 레이블이 붙어 있고, 개념 위계가 중첩된 타원으로 그려져 있는데, Professor와 Student가 둘 다 Researcher 안에, Researcher가 다시 Person 안에 들어 있으며, Professor is subsumed by Person이라고 적힌 포섭 화살표 하나, advises 다음에 advises가 오면 grandAdvisor에 포섭된다고 적힌 작은 사슬 기호 하나, 그리고 Professor와 Student 사이에 disjoint라는 레이블이 붙은 빨간색으로 X 표시된 중첩 부분이 그려져 있고, 바닥 개념 위로 무너져 내리는 흐릿한 색의 충족 불가능한 개념 TenuredStudent도 있습니다. 아래쪽 상자에는 ABox, 데이터, 단언이라는 레이블이 붙어 있고, Professor로 태그된 이름 붙은 점 alice와 bob, Student로 태그된 carol과 dave와 erin, Paper로 태그된 논문 점 p1 p2 p3, 그리고 기관 점 mit와 cmu가 그려져 있으며, alice에서 bob으로, bob에서 carol으로 이어지는 advises라는 레이블이 붙은 화살표와 alice에서 p1으로 이어지는 authored라는 레이블이 붙은 화살표가 있습니다. 두 상자 아래에는 모든 이름을 정의역의 한 원소로 사상한다는 뜻의 interpretation이라는 레이블이 붙은 얇은 띠가 있고, 하단의 도장에는 위쪽에 14개의 공리, 아래쪽에 13개의 개념 단언과 18개의 역할 단언(13개의 개체에 걸쳐)이라고 적혀 있습니다. 지식 베이스의 두 상자: 일반 스키마 공리로 이루어진 TBox가 특정 데이터 단언으로 이루어진 ABox 위에 놓여 있으며, 둘 다 개체들의 하나의 공유된 정의역 위에서 해석됩니다. 저자가 AI의 도움을 받아 직접 제작한 원본 도해.

TBox 읽기: 개념과 역할에 관한 공리

학계 세계의 TBox는 ontology.py(125–174번째 줄)에 TBOX라는 이름의 파이썬 리스트로 살고 있으며, 공리 하나당 항목 하나씩입니다. 대부분의 항목은 일반 개념 포함(general concept inclusions, GCI)으로, LRL \sqsubseteq R이라고 쓰고 "LLRR에 포섭된다"라고 읽습니다 — 왼쪽 개념에 속하는 모든 개체는 반드시 오른쪽 개념에도 속합니다. 몇몇은 역할 공리(role axioms)입니다: 역할 포함(role inclusion) rsr \sqsubseteq s이거나 역할 사슬(role chain) r1r2sr_1 \circ r_2 \sqsubseteq s입니다(∘는 "~와 합성된"으로 읽습니다 — 먼저 r1r_1을 따라간 다음 r2r_2를 따라가면 ss에 이릅니다). 각 개념 표현을 만들어 내는 표층 구문을 볼 수 있도록, 파일이 적어 놓은 그대로의 처음 네 공리는 다음과 같습니다(128–133번째 줄):

Sub("Professor", "Researcher"),
Sub("Student", "Researcher"),
Sub("Researcher", "Person"),

# (4) Every professor advises some student. Normal form A ⊑ ∃r.B.
Sub("Professor", Some("advises", "Student")),

Sub(L, R)는 GCI LRL \sqsubseteq R를 위한 생성자이고, Some(r, C)존재 제한(existential restriction) r.C\exists r.C를 만들며, 이는 "역할 rr을 통해 CC의 어떤 구성원과 관계 맺는다"로 읽습니다. 따라서 공리 (4)는 Professoradvises.Student\text{Professor} \sqsubseteq \exists\,\text{advises}.\text{Student}로 읽힙니다: 모든 교수는 적어도 한 명의 학생을 지도한다. 이 장의 무게 상당 부분을 짊어지는 공리가 두 개 더 있습니다 — 분리성과 역할 사슬입니다(143번째 줄과 147번째 줄):

Sub(And("Professor", "Student"), BOT),
...
Chain("advises", "advises", "grandAdvisor"),

And(...)논리곱(conjunction) \sqcap("그리고"로 읽습니다)을 만들고, BOT바닥 개념(bottom concept) ⊥(비어 있는, 불가능한 클래스)이며, Chain(r1, r2, s)는 역할 사슬을 만듭니다. 따라서 공리 (6)은 ProfessorStudent\text{Professor} \sqcap \text{Student} \sqsubseteq \bot입니다: 교수이면서 동시에 학생인 것은 무엇이든 불가능한 클래스에 속한다 — 이는 두 개념이 분리(disjoint)되어 있음을, 즉 아무도 둘 다일 수 없음을 선언하는 서술 논리의 방식입니다. 공리 (7)은 advisesadvisesgrandAdvisor\text{advises} \circ \text{advises} \sqsubseteq \text{grandAdvisor}로, 1권이 혼 규칙(Horn rule)으로 적었던 바로 그 역할 사슬입니다.

python3 ontology.py를 실행하면 14개의 공리 전부가 교과서적 표기법으로 렌더링됩니다. 다음은 실제로 커밋된 출력입니다:

10 named concepts, 6 roles, 14 TBox axioms; ABox: 13 concept assertions, 18 role assertions over 13 individuals.

TBox:
Professor ⊑ Researcher
Student ⊑ Researcher
Researcher ⊑ Person
Professor ⊑ ∃advises.Student
∃advises.⊤ ⊑ Researcher
Professor ⊓ Student ⊑ ⊥
advises ∘ advises ⊑ grandAdvisor
Dean ⊑ Professor
Dean ⊑ ∃advises.Professor
TenuredStudent ⊑ Professor
TenuredStudent ⊑ Student
TenuredStudentAdvisor ⊑ ∃advises.TenuredStudent
∃advises.∃authored.Paper ⊑ Person
Person ⊓ ∃authored.Paper ⊑ Researcher

몇 줄을 소리 내어 읽어 봅시다. 1–3번째 줄은 개념 위계(concept hierarchy) ProfessorResearcherPerson\text{Professor} \sqsubseteq \text{Researcher} \sqsubseteq \text{Person}입니다: 교수와 학생은 연구자이고, 연구자는 사람입니다. 5번째 줄인 advises.Researcher\exists\,\text{advises}.\top \sqsubseteq \text{Researcher}(⊤는 최상위 개념(top concept), 즉 모든 것을 담는 클래스입니다)는 무엇이든 지도하는 사람은 누구나 연구자다라고 말합니다. 10–12번째 줄은 의도적인 함정입니다: TenuredStudent는 교수이면서 동시에 학생이라고 선언되는데, 공리 (6)에 따르면 그 중첩은 불가능하므로, 올바른 추론기라면 반드시 TenuredStudent충족 불가능(unsatisfiable)하다는 것 — 즉 결코 구성원을 가질 수 없는 개념이라는 것 — 을 찾아내야 합니다. 그러면 공리 (12)는 차례로 TenuredStudentAdvisor도 오염시키는데, 이는 그것이 반드시 불가능한 것을 지도해야 하기 때문입니다. 이 두 개념은 정확히 ⊥ 장치가 제 몫을 하도록 만들기 위해 존재합니다; 이들을 표시하지 못하는 추론기는 고장 난 것입니다. 모든 줄에서 빠져 있는 것을 눈여겨보십시오: 어떤 개체의 이름도 없습니다. 그 부재야말로 TBox 공리의 특징입니다.

ABox 읽기: 이름 붙은 개체에 관한 단언

TBox가 개체에 관해 침묵하는 곳에서, ABox는 오직 개체들로만 이루어져 있습니다. ABox에는 정확히 두 종류의 단언만 있습니다. 개념 단언(concept assertion) C(a)C(a)는 개체 aa가 개념 CC의 구성원임을 말합니다 — Professor(alice), Paper(p1). 역할 단언(role assertion) r(a,b)r(a,b)는 개체 aabb가 역할 rr 관계에 있음을 말합니다 — advises(alice, bob), authored(alice, p1). 이것이 단언 언어의 전부입니다: 개체 하나에 유형을 매기거나, 개체 두 개를 잇는 것입니다.

가장 중요한 설계 결정은, 이 단언들 중 단 하나도 손으로 타이핑되지 않는다는 것입니다. 동반 코드는 술어 이름을 사상함으로써 1권의 사실 목록으로부터 ABox 전체를 만들어 내며, 이는 _build_abox(ontology.py, 183–205번째 줄)에서 이루어집니다. 사상 테이블은 그 바로 위 두 줄에 놓여 있습니다(179–180번째 줄): _CONCEPT_OF = {"professor": "Professor", "student": "Student"}_ROLE_OF = {"advises", "authored", "cites", "affiliated", "about"}입니다. 그런 다음 루프가 모든 사실을 훑으며 이를 분류해 나갑니다(194–205번째 줄):

for fact in FACTS:
if len(fact) == 2 and fact[0] in _CONCEPT_OF:
concept_assertions.append((_CONCEPT_OF[fact[0]], fact[1]))
elif len(fact) == 3 and fact[0] in _ROLE_OF:
role_assertions.append((fact[0], fact[1], fact[2]))
for p in PAPERS:
concept_assertions.append(("Paper", p))
for i in INSTITUTIONS:
concept_assertions.append(("Institution", i))
for t in TOPICS:
concept_assertions.append(("Topic", t))
return concept_assertions, role_assertions

술어가 _CONCEPT_OF에 있는 길이-2 사실은 개념 단언이 되고, 술어가 역할인 길이-3 사실은 역할 단언이 되며, 1권이 유형이 매겨진 사실이 아니라 평범한 개체 목록으로 보관해 두었던 논문, 기관, 주제 어휘는 여기서 비로소 유형이 매겨집니다. 그 결과가 13개의 개체 — alice, bob, carol, dave, erin, 세 편의 논문, 두 개의 기관, 세 개의 주제 — 에 걸친 13개의 개념 단언과 18개의 역할 단언입니다. 두 총계 모두 나머지 없이 분해되는데, 이것이 바로 옮기는 과정에서 아무것도 잃어버리지 않았음을 확인하는 가장 빠른 방법입니다:

ABox 구성 요소개수분해
개념 단언 C(a)C(a)13Professor 2개 + Student 3개 + Paper 3개 + Institution 2개 + Topic 3개
역할 단언 r(a,b)r(a,b)18advises 4개 + authored 4개 + cites 2개 + affiliated 5개 + about 3개
개체13사람 5명 + 논문 3편 + 기관 2개 + 주제 3개

그 18개의 역할 엣지 하나하나는 모두 1권의 이항 사실이고, 5개의 사람-유형 단언 하나하나는 모두 1권의 단항 사실입니다 — 나머지 8개의 개념 단언은 1권이 맨 어휘로만 추적해 두었던 개체들에 유형을 매긴 것입니다.

1권과 증명 가능하게 같은 세계

이것은 1권 세계의 다시 말하기가 아닙니다; 이것은 다시 바라본 바로 그 세계입니다. 그 증거는 ABox가 1권의 데이터 — kb.FACTS와 그 PAPERS, INSTITUTIONS, TOPICS 개체 목록 — 의 순수 함수라는 점입니다. 그래서 1권의 혼 사실(Horn fact)인 professor(alice)는 기계적으로 개념 단언 Professor(alice)로 변환되고, advises(alice, bob)은 역할 단언 advises(alice, bob)이 됩니다. 사상 테이블이 지정한 대소문자 표기를 빼면 아무것도 발명되거나, 버려지거나, 이름이 바뀌지 않습니다. summary 함수(216–220번째 줄)는 그렇게 나온 것들을 셉니다:

def summary() -> str:
return (f"{len(CONCEPTS)} named concepts, {len(ROLES)} roles, "
f"{len(TBOX)} TBox axioms; ABox: {len(CONCEPT_ASSERTIONS)} concept "
f"assertions, {len(ROLE_ASSERTIONS)} role assertions over "
f"{len(INDIVIDUALS)} individuals.")

이 개수들 — 10개의 이름 붙은 개념, 6개의 역할, 14개의 TBox 공리; 13개의 개념 단언, 18개의 역할 단언, 13개의 개체 — 은 산문에 타이핑되어 들어간 것이 아니라 데이터 구조로부터 계산된 것이므로, 이들이 요약하는 사실로부터 소리 없이 어긋날 수 없습니다. 진정으로 새로운 내용이 사는 곳은 바로 TBox입니다: 1권의 규칙들이 스키마 공리가 되었고, 여기에 분리성과 두 개의 충족 불가능한 개념 같은 새로운 것들이 더해졌습니다. ABox는 변경되지 않은 1권의 사실 그 자체입니다. 그것이 바로 "온톨로지로 다시 읽은 실행 예제(running example)"가 뜻하는 정확한 의미입니다 — 같은 개체, 같은 엣지, 더 풍부한 스키마.

의미론: 해석, 모델, 함의

우리는 지금까지 ⊑, ⊓, ∃, ⊥를 마치 그 의미가 자명한 것처럼 읽어 왔습니다. 그 의미를 엄밀하게 만들어 주는 것이 해석(interpretation)입니다 [3]. 해석은 하나의 쌍 I=(ΔI,I)\mathcal{I} = (\Delta^{\mathcal{I}}, \cdot^{\mathcal{I}})입니다: 공허하지 않은 집합 ΔI\Delta^{\mathcal{I}}정의역(domain)이라 불리며 — 이 가능 세계에 존재하는 모든 사물의 우주입니다 — 그리고 해석 함수(interpretation function) I\cdot^{\mathcal{I}}는 모든 이름에 그 정의역 안에서의 의미를 부여합니다. 개념 이름 AA는 정의역 원소들의 집합 AIΔIA^{\mathcal{I}} \subseteq \Delta^{\mathcal{I}}이 되고, 역할 이름 rr이항 관계 rIΔI×ΔIr^{\mathcal{I}} \subseteq \Delta^{\mathcal{I}} \times \Delta^{\mathcal{I}}가 되며, 개체 이름 aa단일 원소 aIΔIa^{\mathcal{I}} \in \Delta^{\mathcal{I}}가 됩니다. 복합 개념은 그 의미를 조합적으로 물려받습니다:

I=ΔI,I=,(CD)I=CIDI,(r.C)I={xΔI:y.(x,y)rIyCI}.\top^{\mathcal{I}} = \Delta^{\mathcal{I}}, \quad \bot^{\mathcal{I}} = \varnothing, \quad (C \sqcap D)^{\mathcal{I}} = C^{\mathcal{I}} \cap D^{\mathcal{I}}, \quad (\exists r.C)^{\mathcal{I}} = \{\, x \in \Delta^{\mathcal{I}} : \exists y.\, (x,y) \in r^{\mathcal{I}} \wedge y \in C^{\mathcal{I}} \,\}.

어떤 해석이 그 집합들을 자기 방식대로 맞춰 놓았을 때, 그 해석은 그 공리를 충족(satisfy)합니다. GCI CDC \sqsubseteq D는 정확히 CIDIC^{\mathcal{I}} \subseteq D^{\mathcal{I}}일 때 충족되고, 개념 단언 C(a)C(a)aICIa^{\mathcal{I}} \in C^{\mathcal{I}}일 때, 역할 단언 r(a,b)r(a,b)(aI,bI)rI(a^{\mathcal{I}}, b^{\mathcal{I}}) \in r^{\mathcal{I}}일 때 충족됩니다. T\mathcal{T}모든 공리와 A\mathcal{A}모든 단언을 충족하는 해석은 그 지식 베이스의 모델(model)입니다. 지식 베이스는 보통 무한히 많은 모델을 갖습니다 — 세계가 취할 수 있는 모든 일관된 방식이며, 열어 둔 모든 사실에서 서로 다릅니다.

추론이란 이 모든 모델에서 무엇이 성립하는지 묻는 것입니다. 우리는 지식 베이스의 모든 모델이 α\alpha도 충족한다는 것을 뜻하기 위해 KBα\text{KB} \models \alpha라고 쓰고 "KB가 α\alpha함의(entail)한다"라고 읽습니다. 핵심은 조회가 아니라 함의입니다. Person(alice)가 ABox 어디에도 나타나지 않는데도 KBPerson(alice)\text{KB} \models \text{Person}(\text{alice})가 성립하는 이유는, Professor(alice)가 단언되어 있고 TBox가 ProfessorResearcherPerson\text{Professor} \sqsubseteq \text{Researcher} \sqsubseteq \text{Person}을 강제하기 때문입니다 — 그래서 모든 모델에서 alice의 원소는 Person 안에 놓이게 됩니다. 그 함의야말로 이후의 장들이 자동화하는 바로 그 추론입니다.

이 단 하나의 관계 \models가 겉보기에 서로 다른 두 질문에 답하며, 그 분할은 두 상자를 그대로 비춥니다:

차원TBox 질의 — 포섭(subsumption)ABox 질의 — 인스턴스 검사(instance checking)
묻는 것개념 CC언제나 DD의 한 종류인가?개체 aa는 개념 CC의 인스턴스인가?
표기KBCD\text{KB} \models C \sqsubseteq DKBC(a)\text{KB} \models C(a)
참조하는 것주로 TBox(스키마)TBox ABox(스키마 + 데이터)
여기서의 "예"ProfessorPerson\text{Professor} \sqsubseteq \text{Person}Person(alice)\text{Person}(\text{alice})
여기서의 "아니오"StudentProfessor\text{Student} \sqsubseteq \text{Professor}Professor(carol)\text{Professor}(\text{carol})
극단적인 경우TenuredStudent\text{TenuredStudent} \sqsubseteq \bot(충족 불가능)일관성: A\mathcal{A}T\mathcal{T}와 충돌하면 모델이 하나도 없음

포섭은 두 개념을 비교하며 스키마에 관한 진술이고, 인스턴스 검사는 개체 하나를 검사하므로 데이터도 함께 필요로 합니다. 충족 불가능성 검사 CC \sqsubseteq \bot는 그저 오른쪽에 ⊥가 있는 포섭일 뿐입니다 — 그래서 의도적으로 망가뜨려 둔 TenuredStudentTBox 문제이며, 단 한 개의 개체도 단언되기 전에 이미 붙잡을 수 있습니다.

개방 세계적 독해

여기서는 데이터베이스로부터 온 한 가지 습관을 버려야 합니다. ABox는 개방 세계 가정(open-world assumption, OWA) 아래에서 읽힙니다: 단언되지 않은 것은 거짓이 아니라 알 수 없는 것입니다 [2]. ABox는 advises(alice, bob)을 기록하지만 advises(alice, carol)에 관해서는 아무 말도 하지 않습니다. 데이터베이스라면 그 누락된 행을 닫힌 "아니오"로 취급하겠지만, 서술 논리 추론기는 그렇게 하기를 거부합니다. alice가 carol을 지도하는 모델도 있고 그렇지 않은 모델도 있으므로, 지식 베이스는 그 사실도 그 부정도 함의하지 않습니다 — 정직한 답은 알 수 없음입니다:

KB⊭advises(alice,carol)andKB⊭¬advises(alice,carol).\text{KB} \not\models \text{advises}(\text{alice}, \text{carol}) \quad\text{and}\quad \text{KB} \not\models \neg\,\text{advises}(\text{alice}, \text{carol}).

그렇다면 진짜 "아니오" 답은 어디서 나올까요? 오직 TBox가 충돌(clash)을 강제할 때뿐입니다. 추론기가 KB¬Student(alice)\text{KB} \models \neg\,\text{Student}(\text{alice})라고 결론짓는 것은 alice의 기록에 "학생"이 없기 때문이 아니라, Professor(alice)가 단언되어 있고 공리 (6) ProfessorStudent\text{Professor} \sqcap \text{Student} \sqsubseteq \bot이 모든 모델에서 교수-이면서-학생을 불가능하게 만들기 때문입니다. 부정적 지식은 분리성 공리로부터 얻어지는 것이지, 결코 침묵으로부터 가정되지 않습니다. 이것이 바로 그 하나의 공리가 장식이 아닌 이유입니다: 개방 세계 가정 아래에서, 그것은 학계 세계가 애초에 "아니오"라고 말할 수 있게 해 주는 유일한 것입니다.

아직 풀리지 않은 부분

우리는 마치 개념이 확정된 대상인 것처럼 ⊑, ⊓, ∃, ⊥와 "모든 모델에서"라는 어구에 기대어 왔습니다 — 그러나 이 장은 개념과 역할이 무엇인지를 정의한 적이 없으며, 다만 그중 몇 개가 어떻게 행동하는지만을 정의했을 뿐입니다. ⊑의 양쪽에는 어떤 구성자가 허용될까요? \exists만으로 충분할까요, 아니면 \forall(전칭 제한, universal restriction), 완전한 부정, 개수 제한(number restriction)도 얻어야 할까요? 각 선택은 서로 다른 대가를 치르는 서로 다른 서술 논리를 낳습니다: EL\mathcal{EL}이라 불리는 계열은 본질적으로 ⊓와 ∃(그리고 최상위 개념 ⊤)만을 유지하여 포섭을 다항 시간에 결정하는 반면, 논리합과 완전한 부정을 더하면 비용이 지수적으로 치솟습니다. 그 문법이 확정되기 전까지는, "같은 세계"라는 말과 "KBα\text{KB} \models \alpha"라는 말도 여전히 우리가 겨우 표본으로만 접해 본 언어에 대한 직관에 기대어 있는 셈입니다. 그리고 이 두-상자 그림은 열려 있는 선택을 하나 더 감추고 있습니다: 스키마와 데이터의 경계는 법칙이 아니라 결정입니다. "alice는 종신 재직권을 가졌다"는 어떤 종류의 사람에 관한 TBox 공리일까요, 아니면 alice에 관한 ABox 사실일까요? 온톨로지마다 답이 다르며, 그 답은 추론기가 증명할 수 있는 것을 바꿔 놓습니다.

왜 중요한가

TBox/ABox 분할은 이 권에 나오는 모든 기호적 시스템의 하중을 떠받치는 벽이며, 정확히 신경-기호 시스템이 존중해야 하는 이음매이기도 합니다. 스키마 공리는 학습기가 마음대로 위반할 수 없는 보증입니다 — advises(alice, carol)을 예측하는 모델이 그로 인해 alice를 교수이면서 동시에 학생으로 만들어 버려서는 안 됩니다. 데이터 단언은 학습기가 소비하는 동시에 생산하는 증거입니다. 이후의 권들은 임베딩과 신경망 스코어러를 ABox — 잡음이 섞여 있고 불완전하며 끝없이 확장 가능한 사실들 — 위에 올려놓는 한편, TBox는 그 예측들이 반드시 따라야 할 강한 제약으로 다룹니다. 어떤 지식 조각이 어느 상자에 속하는지를 아는 것은 하이브리드 시스템의 어느 절반이 그것을 보유해야 하는지를 말해 주며, 개방 세계적 독해는 학습기가 결코 저질러서는 안 되는 단 하나의 실수 — 누락된 단언을 거짓인 것으로 읽는 것 — 을 짚어 줍니다.

핵심 용어

  • TBox(용어 상자, terminological box) — 스키마: 개념과 역할에 관한 일반 공리로, 어떤 개체의 이름도 없음; 학계 세계의 TBox는 14개입니다.
  • ABox(단언 상자, assertional box) — 데이터: 이름 붙은 개체에 관한 개념 단언 C(a)C(a)와 역할 단언 r(a,b)r(a,b); 여기서는 13개의 개체에 걸쳐 각각 13개와 18개이며, 1권의 사실로부터 기계적으로 만들어집니다.
  • 일반 개념 포함(General concept inclusion, GCI) — TBox 공리 LRL \sqsubseteq R, "LL에 속하는 모든 것은 RR에 속한다"; 위계 ProfessorResearcherPerson\text{Professor} \sqsubseteq \text{Researcher} \sqsubseteq \text{Person}은 이런 공리 세 개입니다.
  • 역할 공리(Role axiom) — 역할 포함 rsr \sqsubseteq s 또는 역할 사슬 r1r2sr_1 \circ r_2 \sqsubseteq s, 예: advisesadvisesgrandAdvisor\text{advises} \circ \text{advises} \sqsubseteq \text{grandAdvisor}.
  • 분리성 / 바닥 개념 ⊥ProfessorStudent\text{Professor} \sqcap \text{Student} \sqsubseteq \bot은 아무것도 둘 다일 수 없다고 말합니다; ⊥는 불가능한 클래스이며, CC \sqsubseteq \botCC가 충족 불가능함을 뜻합니다.
  • 해석 / 모델 — 해석은 이름을 정의역에 사상하며, 모델은 모든 공리와 단언을 충족하는 해석입니다.
  • 함의 KBα\text{KB} \models \alphaα\alpha가 지식 베이스의 모든 모델에서 성립함; 추론은 사실을 조회하는 것이 아니라 함의를 계산하는 것입니다.
  • 포섭 대 인스턴스 검사 — TBox 질의 KBCD\text{KB} \models C \sqsubseteq D 대 ABox 질의 KBC(a)\text{KB} \models C(a).
  • 개방 세계 가정(Open-world assumption, OWA) — 누락된 단언은 거짓이 아니라 알 수 없음; 부정은 오직 분리성 같은 TBox 충돌로부터만 나옵니다.

이 장이 이끄는 곳

이제 우리는 그 구조 — 두 개의 상자, 하나의 의미론, 그리고 두 가지 추론 질문 — 을 갖추었지만, 상자 의 언어에 대해서는 아직 비형식적인 감각만을 지니고 있습니다. 다음 장인 서술 논리는 그 언어를 정밀하게 정의합니다: 그 개념, 역할, 구성자, ⊑의 양쪽에 무엇이 나타날 수 있는지에 대한 정확한 문법, 그리고 지금까지 우리가 신뢰만으로 사용해 온 모든 기호의 모델 이론적 의미입니다. 문법이 고정되고 나면, TBox와 ABox는 더 이상 직관적인 그릇이 아니라 추론기가 결정할 수 있는 형식적 대상이 됩니다.