온톨로지 노드·엣지 설계를 실무 프로젝트에서 직접 정의한 경험 중심으로 푸는 결
대학원 연구실에서 생명과학 용어 온톨로지를 구축하는 소규모 프로젝트에 참여했습니다. 처음에는 개념들을 그냥 트리 구조로 나열하면 된다고 생각했는데, 실제로 해보니 상위 개념과 하위 개념 사이의 관계를 어떻게 정의할지가 훨씬 어려웠습니다. 예를 들어 '치료법'이라는 노드 아래에 '약물치료'와 '수술'을 두는 게 맞는지, 아니면 각각 독립 노드로 둬야 하는지를 놓고 교수님, 팀원 2명과 두 시간 넘게 논의했습니다. 저는 결국 관계 레이블을 먼저 목록화하는 방식을 제안했습니다.
is-a, part-of, causes 같은 관계 유형을 먼저 정해두고, 그 유형에 맞는 노드 쌍만 엣지로 연결하도록 규칙을 만들었습니다. 초반에 규칙 없이 연결하다가 순환 참조가 생겨 추론이 깨지는 오류를 경험한 적이 있어서였습니다. 완성 후엔 Protégé로 구조를 시각화해 논리 오류를 잡았고, 검증 쿼리로 고아 노드 12개를 찾아 수정했습니다. 지금도 개념 모델을 짤 때 관계 유형 목록을 먼저 쓰는 습관이 남아 있습니다.