G·Graph Daily Lab
DAY 54 / 100
내 학습 기록
DAY 54개념·실험온톨로지의 뿌리

클래스 계층과 is-a의 함정

‘~이다’라는 말 하나에 세 가지 다른 관계가 숨어 있습니다. 하위 클래스, 부분, 인스턴스를 섞으면 추론이 그 실수를 그대로 퍼뜨립니다.

약 20분조작형 실험 확인 퀴즈
A SMALL DETOUR

이번 회차, 내 속도로.

기초를 더 짚거나 궁금한 주제로 잠깐 넓혀 보세요. 최대 3단계를 거쳐 DAY 54로 돌아옵니다.

난이도·관심 주제 고르기
이번 회차는 어느 속도로 볼까요?
더 살펴볼 주제 1~2개 선택

1/2개 선택 · 새 보충·심화 수업과 본과정 다시 읽기를 선택할 수 있어요.

이렇게 다녀와요 1단계 · 약 12분

  1. 출발 · DAY 54is-a·part-of·instance-of
  2. 1. 관심 주제ConceptScheme·레이블 규칙·broader 방향추가 21 · 새 추가 수업
  3. 복귀 · DAY 54원래 회차 이어가기
  • ConceptScheme·레이블 규칙·broader 방향 · DAY 52에서 시소러스 단계를 개념으로 봤다면, 여기서는 실제 SKOS 트리플을 써 보며 어떤 레이블이 허용되고 어떤 계층이 추론되는지 확인합니다.

선택과 경로 기록은 이 브라우저에 저장됩니다. 본과정의 회차 완료와는 별도입니다.

복귀: DAY 54 → 본과정 다음 회차: DAY 55

핵심 개념

클래스 계층은 is-a 관계입니다. Noy와 McGuinness의 기준으로 A가 B의 하위 클래스라면 A의 모든 인스턴스는 B의 인스턴스여야 합니다. 그래서 ‘모든 A는 B의 한 종류인가?’를 문장으로 읽어 보는 것이 가장 간단한 시험입니다. 모든 자동차는 탈것이므로 :자동차 rdfs:subClassOf :탈것은 맞습니다. 하위 클래스 관계는 이행적이라 이 시험을 통과한 단계들은 위로 이어집니다.

부분 관계(part-of)는 다릅니다. 바퀴는 자동차의 일부이지 자동차의 한 종류가 아닙니다. :바퀴 rdfs:subClassOf :자동차라고 쓰면 모든 바퀴가 자동차로 분류되어 ‘자동차는 몇 대인가?’에 바퀴가 섞이고, 자동차에 붙인 번호판·좌석 수 같은 속성 기대가 바퀴에도 적용됩니다. 부분은 :partOf 같은 객체 속성으로 개체 사이에 표현합니다.

인스턴스 관계(instance-of)도 하위 클래스와 다릅니다. 바둑이는 개의 한 종류가 아니라 개 한 마리이므로 :바둑이 a :개입니다. 수준을 섞는 실수도 흔합니다. ‘개는 종(Species)이다’를 :개 rdfs:subClassOf :종으로 쓰면 :바둑이 a :개와 합쳐져 바둑이가 하나의 종으로 추론됩니다. ‘개’라는 분류가 종의 한 사례라는 뜻이면 개를 종의 인스턴스로 다루는 별도 수준으로 표현해야 합니다.

점검 질문 세 가지를 기억하면 대부분의 함정을 피합니다. ‘모든 X는 Y인가?’(is-a), ‘X는 Y의 일부인가?’(part-of), ‘X는 특정한 하나인가?’(instance-of). Noy와 McGuinness는 이 밖에도 단수와 복수를 섞는 실수(Wine을 Wines의 하위 클래스로), 동의어를 다른 클래스로 만드는 실수, 계층의 순환(두 클래스를 사실상 동치로 만듦)을 경계하라고 합니다.

‘모든 X는 Y인가’를 통과할 때만 subClassOf를 쓰고, 부분은 partOf, 개별 개체는 rdf:type으로 구분해야 오추론을 막습니다.

작은 예제로 따라가기

01

‘자동차 is-a 탈것’을 ‘모든 자동차는 탈것인가?’로 읽으면 참이므로 :자동차 rdfs:subClassOf :탈것으로 적습니다.

02

‘바퀴 is-a 자동차’는 ‘모든 바퀴는 자동차인가?’가 거짓이므로 :바퀴1 :partOf :자동차1처럼 부분 관계로 고칩니다. 그대로 두면 자동차 한 대와 바퀴 네 개가 ‘자동차 5대’로 집계됩니다.

03

‘바둑이 is-a 개’는 바둑이가 특정한 한 마리이므로 :바둑이 a :개로 적고, 하위 클래스로 만들지 않습니다.

직접 실험해 보기

관계 진술을 하나씩 골라 subClassOf·partOf·instanceOf 중 무엇이 맞는지 먼저 예측한 뒤, 결과와 잘못 썼을 때 생기는 오추론 설명을 확인하세요.

LIVE EXPERIMENT · IS-A TRAPS

is-a를 종류·부분·개체로 갈라 오추론 막기

처음에는 모든 “is-a”를 subClassOf로 적어 두었습니다. 진술을 골라 올바른 관계로 고치고, 점선 추론이 어떻게 바뀌는지 보세요.
aa⊑⊑⊑⊑⊑동물개바둑이탈것자동차내차바퀴엔진앞바퀴

실선 = 명시 · 점선 = 추론 · ⊑ = rdfs:subClassOf · a = rdf:type · 사각형 = 클래스 · 원 = 개체 · 주황 = 틀림

정답은 partOf(부분)바퀴는 자동차의 부분이지 자동차의 한 종류가 아닙니다.
잘못된 추론 5개
  1. :앞바퀴 a :자동차 .rdfs9
  2. :바퀴 rdfs:subClassOf :탈것 .rdfs11
  3. :바둑이 rdfs:subClassOf :동물 .rdfs11
  4. :엔진 rdfs:subClassOf :탈것 .rdfs11
  5. :앞바퀴 a :탈것 .rdfs9

빠진 추론: :바둑이 a :동물 . (바둑이를 클래스로 적으면 개체가 사라져 동물로 셀 수 없습니다)

?x a :자동차 → 내차, 앞바퀴 · ?x a :동물 → 없음

이번에는 직접 풀어 보세요

정답을 보기 전에 계산과 이유를 적어 보세요. 해설과 비교하고 확인 표시를 남기면 완료할 수 있습니다.

문제 1
힌트 보기

‘모든 부서는 회사인가?’, ‘김대리는 특정한 한 사람인가?’처럼 문장으로 읽어 보세요.

풀이와 비교하기

부서는 회사의 일부이므로 :영업부 :partOf :한빛상사처럼 부분 관계로, 직원은 부서에 소속되므로 :김대리 :memberOf :영업부 같은 관계로 바꿉니다. 김대리는 특정한 한 사람이므로 :김대리 a :직원입니다. 그대로 두면 모든 직원이 부서와 회사로 분류되어 ‘회사는 몇 곳인가?’ 집계에 직원과 부서가 섞입니다.

풀이와 확인 표시는 이 브라우저에 저장됩니다.

YOUR NOTES

오늘 이해한 것과 다시 볼 것

계산이 달라진 이유, 헷갈린 개념, 다음에 확인할 질문을 남겨 보세요.

메모는 이 브라우저에 저장됩니다. 홈에서 전체 기록을 내려받을 수 있습니다.

오늘의 이해 확인

:개 rdfs:subClassOf :종과 :바둑이 a :개를 함께 두면 생기는 문제는?

완료 조건: 확인 퀴즈 정답 · / 직접 풀기 0/1

FURTHER READING

더 깊이 읽기

예제와 실험 데이터는 이 과정을 위해 만든 것입니다. 원문은 선택 자료이며, 강의와 직접 풀기만으로도 다음 회차를 이어갈 수 있습니다.

Ontology Development 101: A Guide to Creating Your First OntologyNoy & McGuinness (2001)OWL 2 Web Ontology Language PrimerW3C

이 자료는 개념 학습용입니다. 실제 데이터베이스·라이브러리·플랫폼의 동작과 설정은 제품과 버전마다 다를 수 있습니다.