온톨로지 모델링 기초
온톨로지 모델링이란 무엇입니까
온톨로지 모델링은 특정 도메인의 개념, 관계, 속성, 제약을 명시적으로 정리하는 작업입니다. 도메인은 병원, 쇼핑몰, 학교, 제조 공정처럼 지식을 표현하려는 대상 영역입니다.
좋은 온톨로지는 단순한 용어 목록이 아닙니다. 어떤 개체가 어떤 종류에 속하는지, 개체들이 어떤 관계를 맺는지, 어떤 값이 허용되는지까지 설명하는 의미 구조입니다.
핵심 구성 요소
온톨로지는 보통 다음 요소로 구성됩니다.
- 클래스(class)는 개체의 종류입니다. 예를 들어 사람, 상품, 회사가 클래스입니다.
- 인스턴스(instance)는 실제 개체입니다. 예를 들어 홍길동, 상품001, 회사A가 인스턴스입니다.
- 속성(property)은 개체의 값 또는 개체 사이의 관계입니다. 예를 들어 이름, 가격, 소속, 구매가 속성입니다.
- 계층(hierarchy)은 상위 개념과 하위 개념의 관계입니다. 예를 들어 고객은 사람의 하위 개념입니다.
- 제약(constraint)은 데이터가 지켜야 할 조건입니다. 예를 들어 가격은 0보다 커야 한다는 규칙입니다.
이 요소들은 따로 존재하기보다 역량 질문을 기준으로 함께 정리됩니다.
flowchart TB
cq["역량 질문<br/>무엇에 답할 것인가"]
classes["클래스<br/>Customer, Product"]
properties["속성/관계<br/>bought, price"]
instances["인스턴스<br/>Alice, Book001"]
facts["그래프 사실<br/>Alice bought Book001"]
constraints["제약과 추론<br/>필수값, 타입 추론"]
cq --> classes
cq --> properties
classes --> instances
properties --> facts
instances --> facts
facts --> constraints
역량 질문으로 시작하기
온톨로지는 먼저 역량 질문(competency question)을 정하고 설계하는 것이 좋습니다. 역량 질문은 이 지식 그래프가 답해야 하는 대표 질문입니다.
예를 들어 쇼핑몰 도메인에서는 다음 질문이 중요할 수 있습니다.
- 어떤 고객이 어떤 상품을 구입했습니까?
- 특정 상품은 어떤 카테고리에 속합니까?
- 같은 브랜드의 상품을 산 고객은 누구입니까?
- 최근 30일 동안 특정 카테고리를 구매한 고객은 누구입니까?
이 질문을 기준으로 필요한 클래스와 속성을 정하면 과도하게 복잡한 모델을 피할 수 있습니다.
클래스와 인스턴스 구분
온톨로지 모델링에서 자주 생기는 실수는 클래스와 인스턴스를 혼동하는 것입니다. "고객"은 많은 개체가 속할 수 있는 종류이므로 클래스입니다. "홍길동"은 실제 한 명의 고객이므로 인스턴스입니다.
ex:Customer a rdfs:Class .
ex:Alice a ex:Customer .
위 예시에서 ex:Customer는 클래스이고 ex:Alice는 그 클래스에 속한 인스턴스입니다.
관계를 개체로 만들 때
두 개체 사이의 관계에 추가 정보가 필요하면 관계를 별도의 개체로 만드는 것이 좋습니다. 이를 재구체화(reification)라고 부릅니다. 예를 들어 구매 관계에 날짜와 수량을 표현해야 할 때는 구매를 하나의 사건으로 모델링할 수 있습니다.
ex:Purchase001 a ex:Purchase ;
ex:buyer ex:Alice ;
ex:item ex:Book001 ;
ex:quantity 2 ;
ex:purchasedAt "2026-06-05" .
이 방식은 단순한 간선보다 길지만, 구매 사건 자체를 분석할 수 있다는 장점이 있습니다.
명명 규칙과 식별자
온톨로지에서는 식별자가 일관되어야 합니다. 국제화 자원 식별자(IRI)는 개체와 개념을 전역적으로 구분하기 위한 주소입니다. 사람이 읽기 쉬운 이름은 라벨로 분리하는 것이 좋습니다.
ex:Product001 rdfs:label "노트북"@ko .
ex:Product001 ex:price 1200000 .
ex:Product001은 시스템이 사용하는 식별자입니다. "노트북"은 사람이 읽기 위한 라벨입니다. 이렇게 분리하면 이름이 바뀌어도 식별자는 안정적으로 유지됩니다.
모델링 절차
온톨로지 모델링은 다음 순서로 진행하는 것이 실용적입니다.
- 도메인과 사용 목적을 정합니다.
- 역량 질문을 작성합니다.
- 핵심 클래스와 인스턴스를 구분합니다.
- 클래스 사이의 관계와 속성을 정의합니다.
- 계층 구조를 정리합니다.
- 필요한 제약과 추론 규칙을 추가합니다.
- 실제 데이터로 질의를 실행하며 모델을 수정합니다.
좋은 모델의 기준
좋은 온톨로지는 단순하고 일관적이며 확장 가능합니다. 모든 것을 처음부터 완벽하게 표현하려고 하면 오히려 사용하기 어려운 모델이 됩니다. 먼저 중요한 질문에 답할 수 있는 최소 구조를 만들고, 실제 데이터와 질의를 통해 점진적으로 개선하는 방식이 적합합니다.
정리
온톨로지 모델링은 지식 그래프의 의미 구조를 설계하는 작업입니다. 핵심은 개념을 많이 만드는 것이 아니라, 답해야 할 질문에 맞게 개념과 관계를 명확하게 정의하는 것입니다.