이 글은 온톨로지라는 말이 가리키는 것들을 구분한다. 어떻게 만드는지는 다루지 않는다. 만드는 순서는 온톨로지는 세 번 만들어봐야 안다에 로드맵으로 적어 두었다. 이 글에서 쓰는 명단과 학습 기록은 국제표준은 시스템 사이의 계약이다가 정한 층위 위에 놓인다.
예시는 두 문장으로 끝까지 간다. 다른 예시는 쓰지 않는다.
김민준은 수학 3반을 듣는다. 이선생은 수학 3반을 가르친다.
트리플
사실 하나를 주어, 술어, 목적어 세 칸으로 적은 것이다. 세 칸이 전부이므로 표처럼 컬럼을 미리 맞출 필요가 없다.
아래를 스크롤하면 장면이 하나씩 바뀐다. 두 문장을 세 칸에 적는 데서 시작해서, 규칙 하나가 분류 네 건을 만드는 데까지 간다.
두 문장을 기계가 계산할 수 있게 만든다
두 문장을 기계가 계산할 수 있게 만든다
표는 컬럼 이름이 그 표 안에서만 통한다. 트리플은 세 칸이 전부여서, 다른 곳에서 온 사실이라도 주어가 같으면 이어 붙는다.
역할과 상태와 기간을 넣을 자리가 없다. 그래서 관계를 독립된 대상으로 올리고 거기에 다시 세 칸을 붙인다. 이 대상이 OneRoster의 Enrollment다.
같은 재료를 어디까지 담느냐가 이름을 가른다. 시맨틱 레이어와 온톨로지가 갈라지는 지점은 규칙 칸 하나다.
데이터에 없는 사실을 한쪽은 아니라고 읽고 다른 쪽은 모른다고 읽는다. 그래서 명단과 학습 기록을 다르게 다룬다.
분류를 하나도 붙이지 않고 규칙만 주었는데 분류 네 건이 나왔다. 다만 이 수준이면 관계형 데이터베이스의 뷰로 충분하고 추론기는 과하다.
네 용어를 한 표로
| 용어 | 담는 것 | 규칙 계산 | 우리 도메인의 대응물 |
|---|---|---|---|
| 택소노미 | 분류 계층 | 없음 | CASE 역량 트리 |
| 시맨틱 레이어 | 분류 + 명사와 지표의 뜻 | 없음 | 학습 기록 저장소의 지표 정의 |
| 온톨로지 | 시맨틱 레이어 + 규칙 | 있음 | 앞으로 만들 Learning Ontology v0.1 |
| 지식그래프 | 온톨로지 + 실제 사실 | 선택 | 규칙과 실제 명단을 합친 전체 |
넷은 경쟁 관계가 아니다. 택소노미대상을 상위와 하위 관계로 묶은 분류 체계. 무엇이 무엇에 속하는지는 말하지만, 개체 사이의 관계나 추론 규칙은 담지 않는다.Knowledge Graphs (kgbook)는 온톨로지의 뼈대이고, 온톨로지는 지식그래프개체와 개체 사이의 관계를 그래프 구조로 쌓아 둔 실제 사실의 모음. 무엇이 어떤 종류인지 정의하는 스키마와 달리, 지식그래프는 그 정의를 따르는 사실 자체를 담는다.Knowledge Graphs (kgbook)의 사전이고, 시맨틱 레이어는 온톨로지에서 규칙을 뺀 절단면이다.
아닌 것: 온톨로지는 데이터베이스가 아니다
네 번째 장면이 보여 준 열린 세계 가정에는 대가가 따른다. “수학 3반을 듣지 않는 학생 목록”을 뽑을 수 없다. 미이수자 독촉이나 미참여자 발송처럼 부정 집합을 쓰는 업무는 닫힌 세계 없이 성립하지 않는다.
그런데도 열린 세계를 기본으로 두는 이유는, 어떤 기관도 자기 데이터가 세상을 완전히 담고 있다고 말하기 어렵기 때문이다. 다른 학교나 다른 시스템에서 온 사실이 언제든 더 붙을 수 있는 상황에서는 모른다고 답하는 편이 정직하다.
한 가지가 더 반대로 작동한다. 관계형 데이터베이스의 외래키와 검사 제약은 어기는 입력을 거부한다. OWL의 정의역과 치역은 거부하지 않고 새 사실을 도출한다. Enrollment의 학생 자리에 엉뚱한 값이 들어오면 오류가 나는 것이 아니라, 그 값이 학생이라는 사실이 추가된다. 데이터 오류를 잡으려는 기대와 반대다.
명단을 닫힌 세계로 다루기로 한 근거는 학적 원장이 완결을 선언하고 넘긴다는 점이고, 학습 기록의 단위는 학습 기록은 한 줄이 한 건이다에 적어 두었다. 명단에서 Enrollment가 왜 독립된 엔티티인지는 OneRoster는 누가 그 반인지를 넘긴다에 있다.
추론기가 우리에게 필요한가
다섯 번째 장면의 규모라면 추론기온톨로지에 적힌 정의와 규칙으로부터 명시되지 않은 사실을 자동으로 도출하는 프로그램. 예를 들어 어떤 관계의 정의만 주어져도 개체마다 분류를 새로 붙일 수 있다.W3C OWL 2 Primer는 필요하지 않다. 역할 하나로 갈리는 분류는 관계형 데이터베이스의 뷰로 충분하고, 추론기는 과하다.
추론기가 값을 하는 자리는 규칙이 여러 단계로 얽힐 때다. 역량 트리를 따라 내려가는 상속이나, 여러 조건이 조합된 수료 판정이 그런 경우다. 뷰를 손으로 쌓기 시작하면 금방 감당하기 어려워진다.
다음 글에서 다룰 것
- 수강기록을 노드로 둘 것인가 엣지로 둘 것인가. 같은 질문을 SQL과 Cypher로 풀어 보고 답한다.
- 읽기만 하는 온톨로지에 동사를 붙이는 방법. Object, Link, Action 패턴이다.