| name | ontology-curriculum-design |
| description | 온톨로지를 전혀 모르는 초보자를 위한 12~15개 챕터 커리큘럼 설계 가이드. 클래스·인스턴스·트리플·계층·SPARQL·OWL·추론·상위 온톨로지를 점진적 학습 흐름으로 구성, 챕터별 인지 부하 관리, 선행 의존성 정의, 학습 목표 작성에 사용. |
온톨로지 커리큘럼 설계
온톨로지 비전공자가 기초부터 고급까지 자연스럽게 도달하는 학습 흐름을 설계한다.
핵심 설계 원칙
1. 인지 부하 관리
한 챕터에 새 개념은 최대 2~3개. 새 개념을 도입할 때 기존 개념을 반복 활용하여 정착시킨다.
| 챕터 위치 | 새 개념 도입 페이스 |
|---|
| 1~4 (기초) | 챕터당 1~2개, 매우 천천히 |
| 5~9 (중급) | 챕터당 2~3개, 정상 페이스 |
| 10~13 (고급) | 챕터당 1개 큰 도구 + 보조 개념 |
| 14~15 (응용) | 새 개념 없음, 종합 활용 |
2. 동기 부여 우선
각 챕터의 첫 1~2 단락은 반드시 "왜 이 개념이 필요한가?"를 포켓몬 시나리오로 보여준다.
나쁜 예: "클래스(Class)는 객체들의 집합을 정의하는 개념입니다."
좋은 예: "여러분이 포켓몬 도감을 만든다고 해봅시다. 피카츄, 라이츄, 피츄를 따로 적었더니, '얘네 다 비슷한데?'라는 생각이 들었어요. 이 '비슷한 것들을 묶는 사고'가 바로 '클래스'예요."
3. 포켓몬 → 추상화 → 다른 예시 → 포켓몬
각 핵심 개념은 4단계로 도입:
- 포켓몬 구체 예시
- 추상화(정의)
- 다른 도메인 한 줄 예시 (책의 장르, 음식의 종류 등)
- 포켓몬으로 다시 실습
4. 실습 비중 70%
각 챕터를 (설명 30%) + (실습 70%)로 계획한다. 단순 객관식 X, 손으로 그려보고 만져보는 실습 O.
권장 챕터 구조 (12~15개)
각 챕터에는 다음 정보가 명시되어야 한다:
- 학습 목표 (3~5개)
- 새 개념 (1~3개)
- 선행 챕터 (이전 챕터 의존성)
- 추정 시간 (10~25분)
- 실습 유형 2~3개
- 사용할 포켓몬 예시
기초 영역 (챕터 1~4)
Ch01. 온톨로지란 무엇인가?
- 새 개념: 온톨로지의 일상적 정의, "정리하는 방식"으로서의 온톨로지
- 실습: 5종 포켓몬을 자유롭게 묶어보기 (직관 활성화)
Ch02. 클래스와 인스턴스
- 새 개념: 클래스(종류), 인스턴스(개체),
is-a 관계
- 실습: 주어진 포켓몬 카드를 올바른 클래스 박스에 드롭
Ch03. 속성(Property)
- 새 개념: 데이터 속성(키, 몸무게), 객체 속성(진화 관계, 타입)
- 실습: 피카츄의 속성을 분류 (데이터 vs 객체)
Ch04. 관계와 트리플
- 새 개념: subject-predicate-object 트리플, 방향성
- 실습: 트리플 빌더로 진화 관계 표현
중급 영역 (챕터 5~9)
Ch05. 계층과 상속 (is-a)
- 새 개념: 서브클래스, 상위 클래스, 다중 상속의 가능성
- 실습: 타입 계층 (전기 타입 ⊂ 포켓몬, 듀얼타입은?)
Ch06. 분류와 다중 상속
- 새 개념: 두 개 이상의 부모 클래스, 교집합
- 실습: 듀얼타입 포켓몬을 두 타입 클래스에 동시 분류
Ch07. 도메인과 레인지
- 새 개념: 속성의 정의역(domain), 치역(range)
- 실습: "진화함" 속성의 도메인/레인지 추측 후 검증
Ch08. 역관계와 대칭성
- 새 개념: 역관계(inverse), 대칭(symmetric), 전이(transitive)
- 실습: "진화함" ↔ "진화전" 자동 도출
Ch09. RDF와 트리플 저장소
- 새 개념: RDF, Turtle 표기법, IRI/네임스페이스
- 실습: 본문에서 본 트리플을 Turtle로 작성
고급 영역 (챕터 10~13)
Ch10. SPARQL 입문
- 새 개념: SELECT, WHERE, 변수, 패턴 매칭
- 실습: 자연어 질문을 SPARQL 비주얼 빌더로 작성
Ch11. SPARQL 심화
- 새 개념: FILTER, OPTIONAL, 집계(COUNT, AVG)
- 실습: "각 세대별 평균 종족값" 같은 분석 쿼리
Ch12. OWL과 표현력
- 새 개념: OWL 클래스 표현, 제약, 동등성
- 실습: "전설의 포켓몬"의 OWL 정의를 보고 어떤 인스턴스가 해당하는지 추측
Ch13. 추론(Reasoning)
- 새 개념: 명시 사실 vs 도출 사실, 추론 엔진의 역할
- 실습: 추론 규칙 주어졌을 때 결과 예측, 추론 애니메이션 관찰
응용 영역 (챕터 14~15)
Ch14. 상위 온톨로지와 재사용
- 새 개념: 상위 온톨로지(BFO, DOLCE 개념 소개 수준), 온톨로지 재사용
- 실습: 포켓몬 온톨로지를 "게임 캐릭터 일반"으로 확장하기
Ch15. 종합 프로젝트: 나만의 온톨로지
- 새 개념 없음
- 실습: 자유 주제(예: 영화, 음식, 음악)로 미니 온톨로지를 처음부터 끝까지 만들기
학습 목표 작성법
각 챕터의 learningGoals는 관찰 가능한 동작으로 작성. "이해한다" X, "할 수 있다" O.
나쁜 예: "트리플을 이해한다."
좋은 예: "주어, 술어, 목적어로 구성된 트리플 3개를 만들 수 있다.", "두 포켓몬 사이의 관계를 트리플로 표현할 수 있다."
챕터 의존성 검증
커리큘럼 작성 후 다음을 확인:
- 모든 챕터의
prerequisiteChapters가 자신보다 앞 챕터만 참조 (순환 의존 X)
- 챕터에서 사용하는 개념이 모두 직전 챕터 또는 자신 챕터의
newConcepts에 있음
pokemonExamples가 실제 데이터(pokemon.json)에 존재
출력 검증
curriculum.json 생성 후 다음 스크립트로 자체 검증:
const c = JSON.parse(fs.readFileSync('_workspace/curriculum/curriculum.json'));
const ids = new Set(c.chapters.map(ch => ch.id));
for (const ch of c.chapters) {
for (const pre of ch.prerequisiteChapters) {
if (!ids.has(pre)) throw new Error(`${ch.id}: 존재하지 않는 선행 ${pre}`);
}
}