1부 이해 · 트랙 3 좋은 온톨로지의 기준

제 4 차 시

OntoClean — 메타속성을 이용한 계층 오류 진단

포함 판별 질문을 통과하고도 틀린 is_a가 있다. 경직성이라는 더 깊은 잣대로 그것을 잡는다.
읽기 약 12분 · 연습 1회

그것이기를 그만둘 수 있는가

경직성 판별 질문

그만둘 수 없으면 본질(경직적), 그만둘 수 있으면 역할이나 단계(반경직적).

사람은 사람이기를 그만둘 수 없지만, 학생은 졸업한다.
이 차이를 무시한 계층은 조용히 썩는다.

학 습 목 표

  1. 경직성 메타속성으로 클래스를 본질과 역할로 가른다.
  2. "경직적 클래스는 반경직적 클래스의 하위가 될 수 없다"는 제약으로 계층을 진단한다.
  3. 역할 분리 기법으로 위반을 수정한다.

포함 판별 질문이 놓치는 것

2-2의 포함 판별 질문 — "모든 X는 Y인가" — 은 강력하지만 전부는 아니다. "모든 사람은 학생인가"는 당연히 거짓이므로 '사람 is_a 학생'은 걸러진다. 그런데 거꾸로 세운 "모든 학생은 사람인가"는 참이다. 그래서 '학생 is_a 사람'은 포함 판별을 통과한다. 이것은 과연 좋은 설계인가.

과리노와 웰티(Guarino & Welty)의 답은 "쓰기 나름이지만, 위험을 아는 채로 써야 한다"이다. 둘의 OntoClean은 1-4에서 예고한 도구 — 철학의 범주 분석을 공학의 진단 절차로 바꾼 방법 — 이며, 핵심 잣대가 메타속성(metaproperty)이다. 클래스의 내용이 아니라 클래스가 클래스인 방식을 묻는 속성이라서 '메타'다.

경직성 — 본질과 역할을 가르는 잣대

가장 많이 쓰는 메타속성이 경직성(rigidity)이다. 판별 질문은 모토의 한 문장이다. 그 클래스의 사례가, 자신의 존재를 유지한 채, 그 클래스이기를 그만둘 수 있는가. 사람은 그만둘 수 없다 — 사람이기를 그만두는 순간 그 개체는 더 이상 없다. 이런 클래스가 경직적(rigid, +R)이다. 학생은 그만둘 수 있다 — 졸업해도 그 사람은 남는다. 이런 클래스가 반경직적(anti-rigid, ~R)이며, 전형이 역할(role)과 단계(phase — 유생과 성체 같은)다.

진단 규칙은 하나면 충분하다. 경직적 클래스는 반경직적 클래스의 하위(subClassOf)가 될 수 없다. '사람 is_a 학생'이 왜 틀렸는지를 이 규칙이 설명한다 — 사람(+R)을 학생(~R) 아래에 두면, 모든 사람이 학생이기를 그만두는 순간 존재를 잃는다는 뜻이 되기 때문이다. 반대 방향인 '학생 is_a 사람'(~R이 +R 아래)은 규칙 위반이 아니다. 다만 더 깨끗한 설계는 역할을 계층에서 분리하는 것이다. 학생을 사람의 하위 클래스가 아니라, 사람이 맡는 역할 클래스로 두고 사람과는 '역할을 맡는다(has_role)' 관계로 잇는다. 그러면 입학과 졸업이 클래스 이동이 아니라 관계의 생성·소멸이 되어, 변화가 자연스럽게 표현된다.

위반 — 본질을 역할 아래에 연구 참가자 (~R) 그만둘 수 있다 — 역할 사람 (+R) 그만둘 수 없다 — 본질 is_a ✕ 규칙 위반 "참가이기를 그만두면 사람도 사라지는가?" 수정 — 역할의 분리 사람 (+R) 연구 참가자 역할 클래스 (~R) has_role 참가의 시작과 끝 = 관계의 생성과 소멸. 사람의 존재는 흔들리지 않는다. 규칙: +R 클래스를 ~R 클래스의 하위에 두지 않는다. 의심되면 역할을 계층 밖으로 꺼낸다.
그림 1경직성 위반과 역할 분리. BFO(2-7)의 '역할'이 의존 지속체의 한 갈래였던 것과 같은 그림이다 — 상위 온톨로지와 OntoClean은 같은 철학적 분석의 두 출구다.

나머지 메타속성 — 간단히

OntoClean에는 경직성 외에 두 잣대가 더 있다. 정체성(identity)은 "사례를 같은 것으로 추적하는 기준이 있는가"를 묻는다 — 정체성 기준이 다른 클래스를 한 계층에 섞으면 안 된다. 통일성(unity)은 "사례가 하나의 전체인가"를 묻는다. 학습 단계에서는 경직성 하나만 익혀도 계층 오류의 큰 부분을 잡는다. 정체성·통일성은 깊은 분석이 필요할 때 원전으로 들어가는 길을 용어 정리에 남긴다.

클래스경직성 판정근거
사람경직적 (+R)사람이기를 그만두면 개체 자체가 없다
연구 참가자반경직적 (~R) — 역할실험이 끝나면 참가자가 아니지만 사람은 남는다
환자반경직적 (~R) — 역할회복하면 환자가 아니다
기억 과정(부호화 등)경직적 (+R)부호화이기를 그만둔 부호화는 없다
손상된 기억 능력반경직적 (~R) — 단계회복될 수 있다. 능력의 한 상태다
숫자폭 과제경직적 (+R)과제 유형이기를 그만둘 수 없다

표 1심리학 개념의 경직성 태깅 연습. 마지막 두 행이 실습과 직결된다 — '손상된 X'류 개념은 하위 클래스가 아니라 상태로 모형화할 후보다.

— — —

판별 연습

문 1"기억 전문가(memory expert) is_a 사람"을 OntoClean으로 평가하고, 더 깨끗한 설계를 제안하라.

답 확인

기억 전문가는 ~R(그만둘 수 있다), 사람은 +R이므로 규칙 위반은 아니다(~R이 +R 아래). 그러나 전문성의 획득·상실이 클래스 이동이 되는 부담이 남는다. 더 깨끗한 설계는 역할 분리 — '전문가'를 역할로 두고 has_role로 잇는다.

문 2"치매 환자의 기억 is_a 기억 능력"처럼 '손상된 기억'을 하위 클래스로 두는 설계의 문제를 경직성으로 설명하라.

답 확인

'손상된 기억 능력'은 단계(~R)다 — 회복되면 그 클래스를 떠난다. 이것을 +R 계층에 섞으면 회복이 클래스 이동이 된다. 능력(+R)과 그 상태(손상됨/정상 — 질 또는 단계)를 분리하는 편이 깨끗하다. 실습의 기억 모듈이 임상 확장을 받을 때 바로 부딪힐 결정이다.

— — —

적용: 실습 계층의 메타속성 점검 규칙

실습 온톨로지에 규칙 하나를 추가한다. 클래스 계층 설계(5-3)에서 각 클래스에 경직성 판정을 비고로 적고, ~R 판정이 나온 클래스는 is_a 계층에 넣기 전에 역할·단계 분리를 검토한다. 현재 용어 대장(5-2)에는 역할 성격의 용어가 거의 없지만 — 개념 지도라는 목적 덕이다 — '손상된 기억'류가 들어오는 순간 이 규칙이 일한다. 점검표에는 OOPS! 항목(3-3)과 함께 경직성 규칙 위반 0건이 추가된다.

용어 정리

용어원어뜻
메타속성metaproperty클래스의 내용이 아니라 클래스가 클래스인 방식을 묻는 속성
경직성rigidity사례가 그 클래스이기를 그만둘 수 없는 성질(+R / ~R)
역할role맡았다 그만둘 수 있는 반경직적 클래스. 예: 학생, 참가자, 환자
단계phase개체가 거쳐 가는 반경직적 상태. 예: 손상된 능력
정체성 / 통일성identity / unityOntoClean의 나머지 메타속성. 심화 분석용
이 차시가 기대고 있는 자료
Guarino, N., & Welty, C. (2002). Evaluating Ontological Decisions with OntoClean. Communications of the ACM, 45(2), 61–65. · Guarino, N., & Welty, C. (2009). An Overview of OntoClean. In Handbook on Ontologies. · Arp, Smith & Spear (2015). Building Ontologies with BFO(역할·단계의 상위 온톨로지 처리).
트랙 3 · 차시 4OntoClean