이번에 더 배울 것
모듈화는 큰 온톨로지를 핵심 개념, 물류, 재무처럼 주제별 모듈로 나누고 owl:imports로 조합하는 방식입니다. OWL 2 Primer는 정보를 복사하는 대신 다른 온톨로지 전체를 가져오는 import를 설명합니다. 필요한 모듈만 불러오고 팀별로 소유권을 나눌 수 있다는 장점이 있습니다. 다만 import는 그 온톨로지의 공리를 모두 가져오므로 원하지 않는 추론까지 따라옵니다. 공통 모듈일수록 작고 보수적으로 유지해야 합니다.
OWL 2 구조 명세에 따르면 온톨로지는 온톨로지 IRI로 식별되고, 추가로 특정 버전을 식별하는 버전 IRI(owl:versionIRI)를 가질 수 있습니다. 같은 온톨로지 IRI를 공유하는 버전들의 집합이 온톨로지 시리즈이고, 그중 하나가 현재 버전입니다. owl:priorVersion, owl:backwardCompatibleWith, owl:incompatibleWith 같은 주석 속성으로 버전 사이 관계를 밝힐 수 있고, 사용자는 버전 IRI를 import해 특정 버전에 고정할 수 있습니다.
바뀐 개념의 IRI는 지우거나 의미를 슬쩍 바꾸지 말고 owl:deprecated true로 표시한 뒤 dct:isReplacedBy 같은 속성으로 대체 개념을 안내합니다. 클래스를 쪼개거나 단위를 바꾸는 변경은 기존 질의의 결과를 바꾸므로 새 버전으로 공지하고 incompatibleWith로 표시합니다. 팔란티어 설계 지침의 ‘확장에는 열고 수정에는 닫으라’는 원칙과 같은 생각입니다. 안정된 핵심 타입은 그대로 두고 새 요구는 확장으로 받습니다.
작은 예제로 따라가기
<https://ex.org/logi> a owl:Ontology ; owl:versionIRI <https://ex.org/logi/2.0> ; owl:priorVersion <https://ex.org/logi/1.0> ; owl:imports <https://ex.org/core> .
1.0의 :Delivery를 2.0에서 :Shipment로 바꿀 때 :Delivery를 지우지 않고 :Delivery owl:deprecated true ; dct:isReplacedBy :Shipment .를 붙입니다.
3.0에서 :Shipment를 :Consignment와 :Leg로 쪼개 기존 질의의 결과가 달라진다면 owl:incompatibleWith <https://ex.org/logi/2.0>를 적고 변경 내역을 공지합니다.
이 변경은 기존 질의를 깨뜨릴까
각 변경 뒤에도 1.0 기준으로 작성된 질의가 같은 결과를 낼지 먼저 예상하세요.
기존 클래스와 속성은 그대로라 예전 질의의 결과가 바뀌지 않습니다.
학습을 시작하면 새 문제를 직접 풀고 확인 퀴즈를 마친 뒤 선택한 본과정 회차로 돌아갑니다.