50

Pizza Ontology Tutorial (Part 1)

OWL 온톨로지 언어

학습 목표

Pizza Ontology의 핵심 구조를 Protege에서 구현할 수 있다 some/only 제약의 조합 의미를 이해하고 적용할 수 있다

세계에서 가장 유명한 온톨로지 튜토리얼

학습 목표

  • Pizza Ontology의 구조를 이해하고 Protege에서 구축할 수 있다
  • 클래스 계층, 속성, 제약조건을 실전 적용할 수 있다
  • 추론기를 사용하여 자동 분류를 확인할 수 있다

Pizza Ontology란?

Manchester University에서 OWL 교육용으로 만든 온톨로지입니다. 전 세계 대학에서 OWL을 가르칠 때 사용하는 표준 예제입니다.

에디터 로딩 중...

Step 1: 기본 클래스 생성 (Protege)

  1. 새 온톨로지: http://example.org/pizza-ontology

  2. 최상위 클래스 3개:

에디터 로딩 중...
  1. 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: 추론기 실행 및 확인

  1. Reasoner → HermiT → Start Reasoner
  2. Classes 탭에서 VegetarianPizza 아래 확인
  3. MargheritaPizza가 노란색으로 표시되면 성공!
에디터 로딩 중...

Turtle로 확인

에디터 로딩 중...

실습 과제

  1. Protege에서 위 Step 1~7까지 순서대로 구현하세요
  2. 추론기를 실행하여 MargheritaPizza가 VegetarianPizza로 분류되는지 확인하세요
  3. SohoMeatloverPizza (고기 토핑 3가지)를 만들어 VegetarianPizza에 포함 안 되는지 확인하세요
  4. SpicyPizza를 정의해보세요 (JalapnoPepper 등 매운 토핑이 있는 피자)
에디터 로딩 중...
힌트 보기
  • Disjoint 빠뜨리면 추론이 제대로 안 됨 — 반드시 설정!
  • some과 only를 동시에 써야 Closed Description (닫힌 정의)
  • only만 쓰면 '토핑이 없어도 됨' → some도 반드시 추가
  • 추론기 실행 후 노란색 = 추론된 결과, 빨간색 = 모순
  • Turtle로 저장하면 코드로도 확인 가능