본문으로 건너뛰기

트리플과 그래프: 네트워크로서의 사실

📍 현재 위치: 1부 · 지식 표현 — 1장. 1권은 정직한 평결로 마무리되었는데, 이는 하나의 공유된 학계 세계 위에서 정확하지만 부서지기 쉬운 기호적 절반과 견고하지만 불투명한 신경망적 절반을 저울질한 것이었습니다. 이제 2권은 그 세계를 확대해 들여다보며 가장 기본적인 질문을 던집니다 — 기계가 붙잡을 수 있는 형태로 사실을 적으려면 어떻게 해야 하는가?

기계가 무언가를 증명하거나 학습하거나 답하기 전에, 먼저 사실을 순회할 수 있는 형태로 붙잡고 있어야 합니다. 이 장은 바로 그 형태에 관한 것이며, 놀랍도록 단순합니다. 모든 사실은 트리플(triple)이고, 트리플 더미는 그래프(graph)입니다. 기호적 지식 표현 전체가 이 하나의 발상 위에 세워져 있으므로, 냅킨에 그려도 될 만큼 작은 세계에서 이것이 천천히 일어나는 과정을 지켜볼 가치가 있습니다.

쉽게 말하면

색인 카드로 뒤덮인 코르크보드를 상상해 보십시오. 각 카드에는 작은 문장 하나가 적혀 있습니다 — "alice는 bob을 지도한다," "bob은 p1을 저술했다," "p2는 p1을 인용한다." 이제 각 카드의 왼쪽 이름에서 오른쪽 이름으로 실을 핀으로 연결하고, 그 실 위에 동사를 적어 보십시오. 뒤로 물러서 보면, 의도하지 않았음에도 어느새 네트워크를 그려낸 것입니다. 사람과 논문을 나타내는 점들, 그리고 그 사이를 잇는 레이블이 붙은 실들. 이 네트워크를 설계한 것이 아니라, 한 문장짜리 사실 더미의 이름들을 서로 연결하면 원래 이런 모습이 되는 것뿐입니다. 그 네트워크가 바로 지식 그래프(knowledge graph)이며, 이 권 전체는 사실이 이런 식으로 핀으로 고정되고 나면 기계가 무엇을 할 수 있는지에 관한 이야기입니다.

이 장에서 다루는 내용

  • 트리플, 사실의 원자 — 모든 사실은 순서가 있는 (주어, 술어, 목적어)이며, 이항 관계(binary relation) 인스턴스 advises(alice, bob)는 곧 트리플 (alice, advises, bob)이지 그 이상도 이하도 아닙니다.
  • 트리플은 레이블이 붙은 방향 그래프다 — 개체(individual)는 노드가 되고 술어는 엣지 레이블이 되어, 학계 세계는 그려낼 수 있고 엣지 개수를 셀 수 있는 그래프가 됩니다.
  • 동반 코드에 근거함 — 18개의 역할 엣지는 ontology._build_abox를 통해 1권의 사실로부터 직접 만들어지며, 모듈 스스로가 그 크기를 보고합니다: 13개의 개체, 18개의 역할 단언.
  • 두 종류의 엣지 — 역할 단언(role assertion)은 한 개체를 다른 개체에 연결하고(데이터 엣지), 개념 단언(concept assertion)은 개체를 그 유형에 연결합니다(유형 엣지) — 이것이 ABox를 처음 엿보는 순간입니다.
  • 그래프가 테이블보다 나은 이유 — 경로, 도달 가능성(reachability), 다중 홉(multi-hop) 질문은 단지 엣지를 따라가는 것만으로 자연스럽게 얻어지며, 두 개의 엣지로 이루어진 경로를 따라 도달하는 grandAdvisor를 처음 맛보게 됩니다.
  • 한눈에 보는 역할 스키마 — 여섯 개 역할의 항수(arity)와 각각을 읽는 방법을 표로 정리합니다.
  • 아직 풀리지 않은 부분 — 벌거벗은 그래프는 구조는 고정하지만 의미는 전혀 고정하지 못합니다. 두 그래프가 "advises"가 무엇을 뜻하는지에 대해 서로 다르게 합의할 수 있는데, 바로 이 틈을 RDF와 OWL이 메우기 위해 만들어졌습니다.

트리플: 사실의 원자

지식 베이스가 말할 수 있는 가장 작은 것부터 시작합시다. 트리플(triple)은 순서가 있는 세 항 (s,p,o)(s, p, o)입니다: 주어(subject) ss, 술어(predicate) pp, 목적어(object) oo [1]. 기호로 옮기기 전에는 그저 평범한 영어 문장이라고 생각하십시오 — 술어를 동사로, 트리플을 "주어 술어 목적어"로 읽으면 됩니다. 트리플 (alice, advises, bob)은 "alice가 bob을 지도한다"로 읽힙니다. 이것이 전부입니다: 사실이란 주어와 관계, 그리고 그 관계가 무엇에 관한 것인지입니다.

이는 1권에서 이항 관계(binary relation) 인스턴스로 썼던 것과 같은 것입니다 — 정확히 두 대상 사이에 성립하는 관계입니다. 논리에서 advises(alice, bob)이라고 쓸 때, 술어 advises를 앞에 두고 두 인자를 괄호 안에 넣는 것은 트리플이 말하는 것과 정확히 같은 것을 말하는 것입니다. 두 표기법은 같은 사실이 다른 옷을 입은 것뿐입니다.

advises(alice, bob)(alicesubject, advisespredicate, bobobject).\texttt{advises(alice, bob)} \quad\equiv\quad (\underbrace{\texttt{alice}}_{\text{subject}},\ \underbrace{\texttt{advises}}_{\text{predicate}},\ \underbrace{\texttt{bob}}_{\text{object}}).

동반 지식 베이스에서는 이러한 사실이 말 그대로 튜플(tuple)로 저장됩니다 — 술어 이름 뒤에 그 인자들이 따라오는 형태입니다 — 그래서 kb.py (47–50번째 줄)는 이미 트리플의 목록 그 자체입니다.

("advises", "alice", "bob"),
("advises", "bob", "carol"),
("advises", "bob", "dave"),
("advises", "carol", "erin"),

각 행은 하나의 트리플이며, 누가 누구를 지도하는지를 나타내는 하나의 분해 불가능한 진술입니다. 트리플을 더 작은 조각으로 쪼개면서 여전히 사실로 남길 수는 없습니다: 목적어를 빼면 "alice가 지도한다"는 관계를 지칭하지 못하고, 술어를 빼면 "alice … bob"은 아무것도 말하지 않습니다. 트리플은 기호적 지식의 원자(atom)이며, 그보다 더 큰 모든 것이 이로부터 조립되는 단위입니다.

트리플 더미는 레이블이 붙은 방향 그래프다

이제 트리플을 많이 모으면 저절로 어떤 것이 나타납니다. I\mathcal{I}개체(individual)의 집합(우리가 이야기하는 대상들)이라 하고, P\mathcal{P}술어(predicate)의 집합(관계들)이라 합시다. 그러면 사실의 집합은 가능한 모든 트리플의 부분집합입니다.

G    I×P×I,G \;\subseteq\; \mathcal{I} \times \mathcal{P} \times \mathcal{I},

여기서 ×\times는 데카르트 곱(Cartesian product, "가능한 모든 조합")을 뜻하므로, GG의 원소는 정확히 개체인 s,os, o와 술어인 pp로 이루어진 트리플 (s,p,o)(s, p, o)입니다. 그런데 이 집합에는 두 번째, 시각적인 읽기 방식도 있습니다. 각 개체를 노드(node)로, 그리고 각 트리플 (s,p,o)(s, p, o)를 노드 ss에서 노드 oo로 그어진 방향이 있는 엣지(edge)로, 술어 pp레이블이 붙은 것으로 취급하는 것입니다. 그러면 GG레이블이 붙은 방향 그래프(labelled directed graph)입니다 — 화살표가 주어에서 목적어로 향하기 때문에(alice가 bob을 지도하는 것이지 그 반대가 아니므로) "방향(directed)"이며, 각 엣지가 자신의 술어를 태그로 지니기 때문에 "레이블이 붙은(labelled)" 것입니다 [2]:

G=(V,E),V=I,E={spo  :  (s,p,o)G}.G = (V, E), \qquad V = \mathcal{I}, \qquad E = \{\, s \xrightarrow{\,p\,} o \;:\; (s, p, o) \in G \,\}.

아무것도 더해지지 않았고 아무것도 사라지지 않았습니다: 트리플 집합과 그래프는 같은 대상이며, 하나는 행으로, 다른 하나는 점과 화살표로 쓰였을 뿐입니다. 이것이 이 분야 전체를 조용히 움직이는 엔진입니다 — 지식 베이스는 그래프이고, 그래프는 지식 베이스입니다 [2].

학계 세계를 그려서 세어 봅시다. 다섯 명의 사람(alice, bob, carol, dave, erin), 세 편의 논문(p1, p2, p3), 두 개의 기관(mit, cmu), 세 개의 주제(logic, ml, nesy)가 13개의 노드입니다. 역할에 관한 사실들은 그 사이를 잇는 화살표입니다: 지도 관계의 사슬 alice → bob → carol → erin과 그 갈래인 bob → dave를 그리는 네 개의 advises 화살표, 사람에서 논문으로 향하는 네 개의 authored 화살표, 인용 사슬 p3 → p2 → p1을 이루는 두 개의 cites 화살표, 사람을 기관에 묶는 다섯 개의 affiliated 화살표, 각 논문에 주제를 태그하는 세 개의 about 화살표입니다. 모두 더하면 — 4+4+2+5+3=184 + 4 + 2 + 5 + 3 = 18 — 학계 세계는 18개의 역할 엣지로 연결된 13개의 개체로 이루어진 그래프입니다.

네트워크로 그려진 학계 세계의 레이블이 붙은 방향 그래프. alice, bob, carol, dave, erin이라는 이름의 다섯 개 사람 노드가 중앙에 있습니다. 파란색 advises 화살표가 alice에서 bob으로, bob에서 carol로, bob에서 dave로, carol에서 erin으로 이어지며 지도 사슬을 그립니다. 초록색 authored 화살표는 alice와 bob에서 논문 노드 p1로, carol에서 p2로, dave에서 p3로 향합니다. 주황색 cites 화살표는 p3에서 p2, p2에서 p1으로 인용 사슬을 이룹니다. 회색 affiliated 화살표는 alice와 bob을 기관 노드 mit에, carol, dave, erin을 기관 노드 cmu에 연결합니다. 보라색 about 화살표는 p1에 주제 logic을, p2에 주제 nesy를, p3에 주제 ml을 태그합니다. grandAdvisor라는 레이블이 붙은 하나의 점선 빨간 화살표가 alice에서 carol로 곡선을 그리는데, 이는 alice에서 bob을 거쳐 carol에 이르는 두 개의 advises 홉을 가로지르는 지름길로 그려져 파생된 두-홉 엣지를 보여줍니다. 각 개체로부터 Professor, Student, Paper, Institution, Topic이라는 이름의 둥근 클래스 상자로 향하는 희미한 점선 유형 엣지가 올라와, 개체 사이의 데이터 엣지와 클래스로 향하는 유형 엣지를 구분합니다. 모서리의 작은 카운터에는 13개의 개체와 18개의 역할 엣지라고 적혀 있습니다. 레이블이 붙은 방향 그래프로 나타낸 학계 세계: 18개의 역할 엣지로 연결된 13개의 개체, 각 클래스로 향하는 희미한 유형 엣지, 그리고 두 개의 advises 홉을 타고 가는 하나의 점선 파생 grandAdvisor 엣지. 저자가 AI의 도움을 받아 직접 제작한 원본 도해.

동반 코드에 근거함: 18개의 엣지, 만들어진 것이지 타이핑된 것이 아니다

이 엣지 중 어느 것도 손으로 그려진 것이 아닙니다. 동반 온톨로지는 자신의 엣지를 kb.FACTS로부터 직접 만들어냄으로써 자신이 1권과 같은 세계임을 보증하며, 소문자로 된 각 술어를 2권의 이름으로 매핑합니다. 매핑 테이블(ontology.py, 179–180번째 줄)은 어떤 술어가 개념(concept)(유형) 사실이 되고 어떤 술어가 역할(role)(데이터) 사실이 되는지를 나열합니다.

_CONCEPT_OF = {"professor": "Professor", "student": "Student"}
_ROLE_OF = {"advises", "authored", "cites", "affiliated", "about"}

그런 다음 _build_abox (ontology.py, 194–198번째 줄)는 모든 사실을 순회하며 그 모양에 따라 분류합니다 — 길이가 2인 사실은 유형 단언이고, 길이가 3인 사실은 역할 단언입니다.

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]))

이렇게 만들어지는 ROLE_ASSERTIONS 목록이 곧 그래프의 엣지 집합 EE입니다 — 각 항목 (predicate, subject, object)가 하나의 레이블이 붙은 화살표입니다. 노드 역시 별도로 선언되지 않습니다. 노드는 단언들 어딘가에 주어나 목적어로 등장하는 개체들 정확히 그 집합으로 계산됩니다 (ontology.py, 211–213번째 줄).

INDIVIDUALS = sorted({a for _, a in CONCEPT_ASSERTIONS}
| {a for _, a, _ in ROLE_ASSERTIONS}
| {b for _, _, b in ROLE_ASSERTIONS})

이를 "어떤 엣지가 건드릴 때에야 정확히 노드가 존재한다"로 읽으십시오. 이것이 노드 집합에 대한 그래프 이론적 정의입니다. 이 모듈을 실행하면(python3 ontology.py) summary(ontology.py, 216–220번째 줄)에서 스스로의 규모를 출력합니다.

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

그리고 엣지 목록 자체를 미리 보여줍니다. 저장된 그대로의 처음 다섯 개 화살표입니다.

ABox role assertions: [('advises', 'alice', 'bob'), ('advises', 'bob', 'carol'), ('advises', 'bob', 'dave'), ('advises', 'carol', 'erin'), ('authored', 'alice', 'p1')] ...

이 숫자들이 바로 지면 위의 그래프입니다: 13개의 개체 위에 18개의 역할 단언, 모든 화살표가 1권의 사실로부터 파생되었기에 두 권이 서로 어긋날 수 없습니다.

두 종류의 엣지: 데이터와 유형

_build_abox의 분기를 다시 살펴봅시다. advises(alice, bob) 같은 이항 사실은 역할 단언(role assertion)이 되어, 한 개체에서 다른 개체로 향하는 엣지가 됩니다. 그러나 professor(alice)처럼 하나의 대상에 관한 단항(unary) 사실은 대신 개념 단언(concept assertion) Professor(alice)가 됩니다. 평범한 관계형 세계에서는 이 둘이 전혀 닮아 보이지 않지만, 그래프에서는 둘 다 그저 엣지일 뿐이며, 차이는 오직 화살표가 어디에 도착하는가입니다.

역할 단언데이터 엣지(data edge)입니다: 개체에서 개체로 향합니다, alice → bob. 개념 단언유형 엣지(type edge)입니다: 개체에서 위로 클래스로 향하며, alice → Professor, 그 노드가 어떤 종류의 것인지를 기록합니다. 1권은 ("professor", "alice")를 길이-2 사실로 저장했는데, 여기서는 노드 alice가 클래스 Professor에 속한다고 말하는 유형 엣지가 됩니다. 이러한 유형 엣지는 13개 있습니다 — Professor 또는 Student로 유형이 매겨진 다섯 명의 사람, Paper로 유형이 매겨진 세 편의 논문, Institution으로 매겨진 두 개의 기관, Topic으로 매겨진 세 개의 주제 — 이들이 18개의 데이터 엣지 위에 마치 두 번째, 더 얇은 배선 층처럼 얹혀 있습니다.

이 두 층으로 이루어진 그림은 ABox를 처음 목격하는 순간입니다 — 단언 상자(assertional box), 즉 이름 붙은 개체들에 관한 근거 사실(ground fact)들의 모음이며, 다음 장들에서 이를 정밀하게 다룰 것입니다. ABox의 두 절반은 정확히 두 종류의 엣지에 대응합니다: 개념 단언(각 노드가 무엇인지)과 역할 단언(노드들이 서로 어떻게 관계 맺는지)입니다. 이 둘을 구분해 두는 것이 중요한 이유는 추론이 이 둘을 다르게 다루기 때문입니다: 유형 엣지는 클래스 계층을 타고 올라갈 수 있고(스키마는 나중에 Professor ⊑ Researcher ⊑ Person이라고 말할 것인데, 여기서 ⊑는 "~의 하위 클래스이다"로 읽으므로, 교수는 연구자로 간주되고 연구자는 사람으로 간주되며, alice의 Professor 엣지는 Person 유형도 함의합니다), 반면 데이터 엣지는 연쇄(chain)될 수 있습니다 — 이것이야말로 애초에 그래프를 원했던 이유 전부입니다.

왜 테이블이 아니라 그래프인가

이 모든 것을 스프레드시트에 저장할 수도 있습니다: 술어마다 테이블 하나, 주어와 목적어를 위한 두 개의 열. 그렇다면 왜 굳이 그래프를 고집하는가? 우리가 관심을 두는 질문들이 경로(path)에 관한 질문들이기 때문이며, 경로란 그래프에서는 값싸게 얻어지지만 테이블에서는 고통스럽게 얻어지는 것이기 때문입니다.

각 술어에 그것이 연결하는 주어–목적어 쌍의 집합인 엣지 관계를 부여합시다.

Rp  =  {(s,o)  :  (s,p,o)G}.R_p \;=\; \{\, (s, o) \;:\; (s, p, o) \in G \,\}.

하나의 엣지를 따라간 다음 또 다른 엣지를 따라가는 것이 관계 합성(relational composition)이며, 고리 기호 ∘ ("~와 합성된")로 씁니다. 우리는 ∘를 왼쪽에서 오른쪽으로 읽습니다 — 먼저 RpR_p를 따라간 다음 RqR_q를 따라갑니다 — 이는 OWL이 역할 사슬(role chain)을 쓰는 방식과 일치하지만(일부 문헌은 이를 ;로 씁니다), 고전적인 함수 합성 순서와는 반대입니다. 그 순서에서는 RpRqR_p \circ R_q가 먼저 RqR_q를 적용할 것입니다.

RpRq  =  {(a,c)  :  b, (a,b)Rp  (b,c)Rq},R_p \circ R_q \;=\; \{\, (a, c) \;:\; \exists\, b,\ (a, b) \in R_p \ \wedge\ (b, c) \in R_q \,\},

여기서 b\exists b는 "어떤 중간 노드 bb가 존재한다"로 읽고, ∧는 "그리고"로 읽습니다. 말로 풀면: aa에서 어떤 공유된 중간 노드 bb를 거쳐 cc에 도달할 수 있을 때 (a,c)(a, c)가 이 합성에 속합니다. 이것이 두-홉 경로(two-hop path)이며, 그래프에서는 문자 그대로 두 개의 엣지를 걸어서 찾아내지만, 테이블에서는 자기 자신과의 조인(self-join)에 대가를 치르고 조인 열에 이름까지 지어 주어야 합니다.

학계 세계의 대표적인 예는 grandAdvisor입니다. advises 엣지 두 개를 연달아 걸으면 조부모격 지도 관계(grand-advising relation)를 얻습니다.

RadvisesRadvises  =  {(alice,carol), (alice,dave), (bob,erin)}.R_{\texttt{advises}} \circ R_{\texttt{advises}} \;=\; \{(\texttt{alice}, \texttt{carol}),\ (\texttt{alice}, \texttt{dave}),\ (\texttt{bob}, \texttt{erin})\}.

세 개의 두-엣지 경로, 세 쌍의 grand-advisor, 그림에서 바로 읽어낼 수 있습니다: alice → bob → carol은 alice를 carol의 grand-advisor로 만들고, alice → bob → dave와 bob → carol → erin이 나머지 두 쌍입니다. 스키마는 나중에 이 패턴을 역할 사슬(role chain) advises ∘ advises ⊑ grandAdvisor로 이름 붙일 것입니다 — 위 클래스 계층에서 쓰인 것과 같은 포함 기호 ⊑이지만, 여기서는 "~의 하위 클래스이다"가 아니라 "~의 하위 관계(sub-relation)이다"로 읽습니다(grand-advising은 두-홉 관계의 특수한 경우입니다). 그래서 하나의 포함 기호가 개념과 역할 둘 다에 쓰입니다 — 이는 추적할 수 있었던 경로를 추론기가 유도할 수 있는 엣지로 바꾸어 주며, 그림의 점선 지름길이 바로 이것입니다. 지금은 도달 가능성, 다중-홉 질문, "누가 누구와 얼마나 멀리 연결되어 있는가"가 그래프의 고유한 연산이라는 점만 짚고 넘어갑니다. 사실을 그래프로 저장하면 순회는 공짜이지만, 테이블로 저장하면 매 홉마다 조인이 필요합니다.

여기 한눈에 보는 그래프의 스키마가 있습니다 — 여섯 개 역할 전부가 이항 관계(항수 2, 즉 정확히 두 노드를 연결한다는 뜻)이며, 각각이 18개 중 몇 개의 엣지를 기여하는지와 그것을 어떻게 읽는지를 함께 정리했습니다.

역할항수단언된 엣지(주어, 목적어)의 읽기
advises24주어가 목적어를 지도한다 — 교수가 학생을 지도한다
authored24주어가 목적어 논문을 저술했다
cites22주어 논문이 목적어 논문을 인용한다
affiliated25주어가 목적어 기관에 소속되어 있다
about23주어 논문이 목적어 주제에 관한 것이다
grandAdvisor20주어가 목적어의 grand-advisor이다 — 단언되지 않음, advises ∘ advises로부터 파생됨

처음 다섯 행을 합하면 18개의 단언된 엣지가 됩니다. grandAdvisor는 자신의 것을 하나도 갖지 않는데, 이는 그것이 진술되는 것이 아니라 두-홉 advises 경로로부터 계산되도록 의도되었기 때문입니다. 그 빈 개수는 이 학문 분야 전체를 미리 보여줍니다: 단언된 그래프는 참인 그래프보다 작으며, 그 틈을 메우는 것이 바로 추론이 하는 일입니다.

아직 풀리지 않은 부분

그래프는 지식의 형태(shape)는 완벽하게 고정하지만 의미(meaning)는 전혀 고정하지 못합니다. 그림 속 어디에도 문자열 "advises"가 무엇을 나타내는지는 적혀 있지 않습니다. 우리의 학계 세계는 이를 "박사 지도"로 뜻하지만, 다른 연구실이 동일한 모양의 그래프를 발표하면서 advises를 "학위논문 심사위원회에 소속됨"으로 뜻하거나, 방향을 반대로(학생 → 교수) 쓰거나, 노드 이름 mit를 다른 기관을 가리키는 데 조용히 재사용할 수도 있습니다. 두 그래프를 합치면 화살표는 나무랄 데 없이 정렬되지만 사실은 소리 없이 서로 모순됩니다 — 엣지를 따라가는 기계는 이를 구별할 수 없는데, 벌거벗은 레이블은 합의된 정의도, 방향에 대한 관례도, 두 그래프가 같은 단어로 같은 것을 뜻한다는 보장도 지니고 있지 않기 때문입니다 [3].

더 나쁜 것은, 그래프 혼자서는 우리가 그동안 의지해 왔던 규칙조차 진술할 수 없다는 점입니다. "모든 advises 엣지는 교수에서 학생으로 향한다," "grandAdvisoradvises 두 홉이다," "누구도 교수이면서 동시에 학생일 수 없다" — 이 중 어느 것도 그래프 안에 살고 있지 않습니다. 이들은 여백에 적힌 산문이었을 뿐입니다. 트리플 더미는 사실을 저장하고 순회하는 데는 훌륭하지만, 그려진 사실들로부터 반드시 따라 나와야 하는 것이 무엇이고 어떤 조합이 금지되어야 하는지에 대해서는 말이 없습니다. 그 빠져 있는 층 — 합의된 의미를 지닌, 기계가 읽을 수 있는 공유 어휘 — 은 나중에 덧붙이는 것이 아니라 다음에 지어야 할 것입니다.

왜 중요한가

신경-기호(neuro-symbolic) AI에서 이후에 나오는 모든 것은 이 그래프를 소비합니다. 이 권의 서술 논리(description-logic) 추론기들은 이 그래프를 완결합니다 — 어떤 규칙도 더 이상 새로운 것을 발동시키지 않을 때까지 파생된 grandAdvisor 엣지와 함의된 Person 유형을 더해 나가면서 말입니다. 3권의 지식 그래프 임베딩(embedding)은 참인 엣지가 거짓인 엣지보다 더 높은 점수를 받도록 바로 이 노드들에 대한 좌표를 학습합니다. 이후 권들의 미분 가능한 질의 계층(differentiable query layer)은 정확히 이 경로들의 소프트한(soft) 버전을 순회합니다. 이 모든 것이 같은 기반에서 출발합니다: 노드로서의 개체, 레이블이 붙은 방향 엣지로서의 관계, 트리플로서의 사실. 표현을 올바르게 얻으면 — 사실이 트리플이고 지식 베이스가 그래프임을 알면 — 그 뒤를 잇는 모든 방법이 딛고 설 공통의 대상을 갖게 됩니다. 이것이 바로 이 분야의 정확한 절반과 견고한 절반이 마침내 만나는 형식입니다.

핵심 용어

  • 트리플(Triple) — 순서가 있는 (주어, 술어, 목적어); 기호적 지식의 원자 단위. 예: (alice, advises, bob).
  • 술어 / 이항 관계(Predicate / binary relation) — 트리플 안의 관계. 이항 관계 advises(alice, bob)과 트리플 (alice, advises, bob)은 같은 사실입니다.
  • 레이블이 붙은 방향 그래프(Labelled directed graph) — 각각이 레이블을 지니는 방향 엣지로 연결된 노드들. 트리플의 집합이 곧 이것이며, 개체가 노드가 되고 술어가 엣지 레이블이 됩니다.
  • 노드 / 개체(Node / individual) — 그래프가 이야기하는 대상. 여기서는 13명의 사람, 논문, 기관, 주제로, 어떤 단언에 등장하는 주어와 목적어 정확히 그 집합으로 계산됩니다.
  • 데이터 엣지 (역할 단언, Data edge / role assertion) — 두 개체 사이의 엣지. 예: advises 아래의 alice → bob; 학계 세계에는 18개가 있습니다.
  • 유형 엣지 (개념 단언, Type edge / concept assertion) — 개체에서 그 클래스로 향하는 엣지. 예: alice → Professor; 13개가 있으며, ABox를 미리 보여줍니다.
  • ABox (단언 상자, assertional box) — 이름 붙은 개체들에 관한 근거 사실로, 개념 단언과 역할 단언으로 나뉩니다.
  • 관계 합성 ∘ (Relational composition) — 하나의 엣지를 따라간 다음 또 다른 엣지를 따라가는 것으로, 왼쪽에서 오른쪽으로 읽습니다. RpRqR_p \circ R_q는 두-홉 쌍들을 모으며, grandAdvisor와 도달 가능성 뒤에 있는 연산입니다.
  • 역할 사슬(Role chain)advises ∘ advises ⊑ grandAdvisor와 같은 스키마 규칙으로, 두-홉 경로를 유도 가능한 엣지로 바꾸어 줍니다.

이 장이 이끄는 곳

그래프는 우리에게 의미 없는 구조를 줍니다: 기계가 순회할 수는 있지만 해석할 수는 없는 화살표들, 그리고 여백에 갇힌 채 남아 있는 규칙들. 다음 장인 RDF와 OWL은 이 둘 다를 바로잡습니다. RDF(자원 기술 프레임워크, Resource Description Framework)는 트리플 자체를 표준화합니다 — 모든 노드와 술어에 전역적으로 유일한 이름을 부여하여 두 그래프가 advises의 의미에 대해 안전하게 합의할 수 있게 합니다 — 그리고 OWL(웹 온톨로지 언어, Web Ontology Language)은 벌거벗은 그래프가 그저 암시만 할 수 있었던 규칙을 진술할 어휘를 더합니다: 지도 관계는 교수를 학생에게 연결한다는 것, grand-advising은 두 번의 지도 홉이라는 것, 어떤 개념들은 금지되어 있다는 것. 여전히 같은 13개의 개체와 18개의 엣지이지만, 마침내 그 의미를 위한 언어를 갖추게 됩니다.