이번에 더 배울 것
기술 논리(description logic)는 개념(OWL의 클래스), 역할(속성), 개체 이름으로 공리를 쓰는 논리 계열이며 OWL 2 DL의 형식 기반입니다. 기호로 ⊑는 포함(하위 클래스), ≡는 동치, ⊓는 교집합입니다. 존재 제한 ∃r.C는 r 관계로 C의 인스턴스와 적어도 하나 연결된 개체들의 집합입니다. Parent ≡ ∃parentOf.⊤는 ‘누군가의 부모인 개체’를 정의하며, OWL에서는 owl:someValuesFrom, Manchester 문법에서는 ‘hasChild some Person’으로 씁니다.
전칭 제한 ∀r.C는 r로 연결된 모든 대상이 C인 개체들의 집합입니다. 여기에는 연결이 하나도 없는 개체도 포함됩니다. Krötzsch 등의 입문서는 ∀parentOf.Female에 자녀가 없는 사람도 속한다는 사실을 잊는 것이 흔한 오류라고 지적하고, OWL 2 Primer도 ‘자녀가 모두 행복한 사람’을 이렇게 정의하면 자녀가 없는 사람이 모두 행복한 사람으로 분류된다고 설명합니다. 의도가 ‘자녀가 있고 모두 여성’이라면 (∃parentOf.⊤) ⊓ (∀parentOf.Female)로 씁니다.
정의역과 치역도 이 표현으로 쓸 수 있습니다. ∃sonOf.⊤ ⊑ Male은 sonOf의 주어가 남성이라는 정의역, ⊤ ⊑ ∀sonOf.Parent는 목적어가 부모라는 치역입니다. sonOf(john, julia)가 있으면 존은 남성, 줄리아는 부모로 추론됩니다. 같은 문장을 데이터베이스 제약으로 쓰면 위반 오류가 나지만 기술 논리에서는 결론이 나옵니다. 열린 세계이므로 ∃ 공리가 있어도 ‘연결이 기록되지 않았다’는 사실이 위반으로 보고되지 않는다는 점도 기억해야 합니다.
작은 예제로 따라가기
DelayedShipment ≡ Shipment ⊓ ∃hasDelayEvent.⊤: 지연 이벤트가 하나라도 연결된 배송은 지연 배송으로 분류됩니다.
ColdChainShipment ⊑ ∀carriedBy.RefrigeratedTruck: 냉장 배송을 나르는 트럭은 모두 냉장 트럭이며, 타입을 모르는 트럭 T-1이 냉장 배송을 나르면 T-1이 냉장 트럭으로 추론됩니다.
트럭 배정이 없는 냉장 배송 S-9도 ∀ 조건과 충돌하지 않습니다. ‘트럭이 반드시 있어야 한다’는 ∃carriedBy.⊤를 더해야 하고, 그래도 배정 기록이 없다는 사실은 열린 세계에서 위반이 아니므로 SHACL로 검사합니다.
∀ 공리는 무엇을 만들까
S가 ColdChainShipment로 선언돼 있고 ColdChainShipment ⊑ ∀carriedBy.RefrigeratedTruck일 때, 각 상황에서 추론기가 무엇을 내놓을지 먼저 예상하세요.
S의 carriedBy 대상은 모두 냉장 트럭이어야 하므로, 오류 대신 T-1의 타입이 추가됩니다.
학습을 시작하면 새 문제를 직접 풀고 확인 퀴즈를 마친 뒤 선택한 본과정 회차로 돌아갑니다.