2부 구축 · 트랙 5 직접 만들기: 인지심리 온톨로지

제 7 차 시

검증 — 추론기 일관성 검사와 역량 질문 테스트

psymap.owl을 HermiT와 SPARQL 앞에 세운다. 완료 판정 기준의 두 관문을 실제로 통과시킨다.
읽기 약 12분 · 코드 실행 2회

통과하기 전까지는 완성이 아니다

두 개의 관문

충족 불가능 0(논리)과 CQ 전원 응답(목적) — 둘 다 넘어야 한다.

추론기는 모순을 재판하고
역량 질문은 쓸모를 재판한다.

학 습 목 표

  1. HermiT로 일관성 검사와 자동 분류를 실행하고 결과를 읽는다.
  2. CQ 10문을 SPARQL로 실행하여 전원 응답을 확인한다.
  3. 검증 스크립트를 회귀 테스트로 보존하는 체계를 갖춘다.

관문 1 — 추론기: 모순과 분류

5-1의 완료 판정 기준이 요구하는 첫 관문은 충족 불가능 클래스 0이다. 2-6에서 배운 대로, 추론기는 공리들의 논리적 귀결을 끝까지 밀어붙여 어떤 클래스도 모순에 빠지지 않는지(일관성), 그리고 명시하지 않은 포섭 관계가 도출되는지(분류)를 검사한다. 실행과 출력은 다음과 같다.

from owlready2 import *
onto = get_ontology("file://psymap.owl").load()
with onto:
    sync_reasoner()                          # HermiT 호출
print(list(default_world.inconsistent_classes()))

충족 불가능 클래스: 0개 — 통과
작업기억 과제(정의된 클래스)로 분류된 클래스:
  ['N백 과제', '숫자폭 과제']

실제 실행 출력. 아래 두 줄이 이 파일의 첫 지적 수익이다 — 누구도 "숫자폭 과제는 작업기억 과제다"라고 쓰지 않았지만, 추론기가 정의된 클래스(5-5)의 필요충분조건으로부터 두 과제를 스스로 찾아 분류했다. 2-6의 실험이 실전에서 재현된 것이다.

충족 불가능 0은 "참"의 증명이 아님을 기억해야 한다(2-6). 추론기는 공리들이 서로 모순되지 않음만 보증한다. 내용이 심리학적으로 틀렸어도, 모순 없이 틀렸다면 통과한다. 그래서 두 번째 관문이 필요하다.

관문 2 — 역량 질문: 명세 대비 검증

5-1에서 적어 둔 CQ 10문은 이 온톨로지의 요구 명세였다(3-2). 이제 각 질문을 SPARQL로 번역해 실행한다. 전부를 하나의 스크립트(verify_psymap.py)로 묶어 두면, 앞으로 파일을 고칠 때마다 다시 실행하는 회귀 테스트가 된다. 열 질문의 실제 실행 결과가 다음 표다.

CQ질문(요지)실제 출력판정
1작업기억의 상위 경로작업기억 → 기억 능력 → 심리적 성향 → Thing통과
2기억 능력의 하위 전체10개 클래스(단기·장기·서술·일화·의미·비서술·절차·작업·음운 작업·언어)통과
3작업기억을 측정하는 과제['N백 과제', '숫자폭 과제']골드스탠더드 일치 — PASS
4숫자폭 과제가 측정하는 것['언어 기억', '음운 작업기억', '작업기억']통과 — CA 기재와 일치
5일화·의미기억의 정의와 공통 상위정의 2건 + 공통 상위 '서술기억'통과
6일화기억 정의의 근거 문헌Tulving (1972)통과
7작업기억의 구성 요소['시공간 잡기장', '음운 루프', '중앙 집행기']통과
8해마가 관여하는 기억 과정['부호화', '응고화']통과
9'작동기억' 검색이 닿는가['작업기억'] (altLabel 경유)통과
10CA 대응물과 ID매핑 9건(개념 7, 과제 2)통과 — 5-8에서 상술

표 1CQ 10문 테스트의 실제 결과. 판정: 전원 통과. CQ3은 5-2에서 미리 적어 둔 골드스탠더드 {숫자폭, N백}과 출력이 정확히 일치했다 — 답을 미리 적어 두었기에 '통과'라는 말에 의미가 있다(3-2).

대표로 CQ7의 SPARQL을 본다. 5-4에서 설계한 관계가 질의의 어휘가 되는 것을 확인할 수 있다.

# CQ7: 작업기억의 구성 요소는? — 존재 제약을 더듬는 질의
SELECT ?c WHERE {
  ?c rdfs:subClassOf ?r .
  ?r owl:onProperty :component_of ;
     owl:someValuesFrom :PSY_0000018 .
}
['시공간 잡기장', '음운 루프', '중앙 집행기']

CQ7의 질의와 실제 출력. "음운 루프 ⊑ ∃component_of.작업기억"이라는 공리(5-5)의 구조를 그대로 더듬는다 — 설계·구현·검증이 같은 어휘로 이어진다.

테스트는 버리지 않는다

verify_psymap.py는 이 차시로 수명이 끝나지 않는다. 3-2에서 본 CQ 생애주기의 요점은 검증 스크립트가 회귀 테스트로 남는다는 것이다. 5-8에서 정렬 주석을 더할 때도, 다음 반복에서 감각기억을 추가할 때도, 트랙 6에서 에이전트가 이 파일을 쓸 때도 — 고치고 나서 이 스크립트를 다시 돌리면 "전원 통과"가 유지되는지 수 초 만에 안다. 소프트웨어 공학의 테스트 스위트가 온톨로지 공학에도 그대로 있는 셈이다.

— — —

판별 연습

문 1추론기 통과와 CQ 통과 중 하나만 통과하는 두 실패 상황을 각각 구성해 보라.

답 확인

추론기만 통과: 공리가 거의 없는 깡통 파일 — 모순이 없으니 일관적이지만 어떤 CQ에도 답하지 못한다(공리 예산을 0으로 잡은 극단). CQ만 통과: 분리 공리와 상충하는 다중 분류가 숨어 있는데 질의가 그 지점을 묻지 않는 경우 — 질의는 답하지만 추론기는 충족 불가능을 보고한다. 2-6의 실험에서 숫자폭 과제를 두 서로소 범주에 걸었을 때가 정확히 이 꼴이었다.

문 2CQ4의 출력에 '단기기억'이 없다. 숫자폭 과제(특히 순방향)가 단기 유지를 잰다는 견해를 아는 사용자가 이를 공백이라 지적한다면.

답 확인

정당한 지적이고, 5-3의 결정으로 소급되는 문제다 — 단기기억과 작업기억의 관계에 공리를 보류했으므로 측정 주장도 작업기억 쪽으로만 적었다. 대응은 둘: measures 공리를 하나 더 추가하거나(숫자폭 → 단기기억), 보류 결정과 함께 note에 쟁점을 기록하고 다음 반복의 의제로 올리거나. 어느 쪽이든 결정 로그에 남긴다 — 검증이 설계 결정을 다시 심문하는 것, 그것이 해석학적 순환(3-6)이다.

— — —

적용: 산출물과 내려받기

완료 판정 기준의 두 관문 — 충족 불가능 0, CQ 10문 전원 응답 — 을 통과했다. 검증 스크립트 전문은 verify_psymap.py에서, 검증된 파일은 psymap.owl에서 열어 볼 수 있다 — 복사해 각 이름으로 저장하면 그대로 쓰인다. 남은 것은 바깥 세계와의 연결(5-8 정렬)과 돌아보기(5-9 회고)다.

용어 정리

용어원어뜻
일관성 검사consistency check공리 집합에 모순이 없는지의 추론기 검사
자동 분류classification추론기가 명시되지 않은 포섭 관계를 도출하는 것
테스트 스위트test suite한 번에 실행되는 검사 묶음. CQ 10문이 그것이다
이 차시가 기대고 있는 자료
Glimm, B. et al. (2014). HermiT: An OWL 2 Reasoner. Journal of Automated Reasoning, 53(3). · Grüninger, M. & Fox, M. S. (1995). Methodology for the Design and Evaluation of Ontologies. IJCAI Workshop. · 실습 파일: verify_psymap.py, psymap.owl(본 사이트 수록 — 출력은 모두 실제 실행 결과).
트랙 5 · 차시 7검증