50분
Pizza Ontology Tutorial (Part 1)
OWL 온톨로지 언어
Pizza Ontology Tutorial (Part 1)
온톨로지 & 시맨틱웹 > OWL 온톨로지 언어
학습 목표
Pizza Ontology의 핵심 구조를 Protege에서 구현할 수 있다 some/only 제약의 조합 의미를 이해하고 적용할 수 있다
세계에서 가장 유명한 온톨로지 튜토리얼
학습 목표
- Pizza Ontology의 구조를 이해하고 Protege에서 구축할 수 있다
- 클래스 계층, 속성, 제약조건을 실전 적용할 수 있다
- 추론기를 사용하여 자동 분류를 확인할 수 있다
Pizza Ontology란?
Manchester University에서 OWL 교육용으로 만든 온톨로지입니다. 전 세계 대학에서 OWL을 가르칠 때 사용하는 표준 예제입니다.
에디터 로딩 중...
Step 1: 기본 클래스 생성 (Protege)
-
새 온톨로지:
http://example.org/pizza-ontology -
최상위 클래스 3개:
에디터 로딩 중...
- 3개 클래스 Disjoint 설정! (매우 중요)
- Pizza, PizzaTopping, PizzaBase는 서로 겹칠 수 없음
Step 2: PizzaTopping 계층
에디터 로딩 중...
모든 형제 클래스(sibling)를 Disjoint로 설정!
- MeatTopping, VegetableTopping, CheeseTopping, SeafoodTopping → 상호 disjoint
- PepperoniTopping, HamTopping, SalamiTopping → 상호 disjoint
- 등등...
Step 3: PizzaBase 계층
에디터 로딩 중...
- ThinAndCrispyBase와 DeepPanBase는 disjoint
Step 4: Object Properties
에디터 로딩 중...
Step 5: Named Pizza 정의
에디터 로딩 중...
핵심: some(∃)과 only(∀)의 조합
에디터 로딩 중...
Step 6: VegetarianPizza 정의 (추론의 마법!)
에디터 로딩 중...
이제 추론기를 실행하면:
- MargheritaPizza → VegetarianPizza로 자동 분류! (MozzarellaTopping은 CheeseTopping, TomatoTopping은 VegetableTopping)
- AmericanaPizza → VegetarianPizza가 아님 (PepperoniTopping은 MeatTopping)
이것이 OWL 추론의 핵심입니다!
Step 7: 추론기 실행 및 확인
- Reasoner → HermiT → Start Reasoner
- Classes 탭에서 VegetarianPizza 아래 확인
- MargheritaPizza가 노란색으로 표시되면 성공!
에디터 로딩 중...
Turtle로 확인
에디터 로딩 중...
실습 과제
- Protege에서 위 Step 1~7까지 순서대로 구현하세요
- 추론기를 실행하여 MargheritaPizza가 VegetarianPizza로 분류되는지 확인하세요
- SohoMeatloverPizza (고기 토핑 3가지)를 만들어 VegetarianPizza에 포함 안 되는지 확인하세요
- SpicyPizza를 정의해보세요 (JalapnoPepper 등 매운 토핑이 있는 피자)
에디터 로딩 중...
힌트 보기
- • Disjoint 빠뜨리면 추론이 제대로 안 됨 — 반드시 설정!
- • some과 only를 동시에 써야 Closed Description (닫힌 정의)
- • only만 쓰면 '토핑이 없어도 됨' → some도 반드시 추가
- • 추론기 실행 후 노란색 = 추론된 결과, 빨간색 = 모순
- • Turtle로 저장하면 코드로도 확인 가능