TrendShift 딥다이브 · 2026-07-11 · Daily #17

os-taxonomy 딥다이브
— "아이가 무엇을 배우는가"를 통째로 그래프로 만든 1,590개 미시-주제 데이터셋

os-taxonomy(정식명 Marble Skill Taxonomy)는 초등·유아 단계에서 아이가 배우는 모든 것을 1,590개의 잘게 쪼갠 "미시-주제(micro-topic)"로 분해하고, 그 사이의 "무엇을 먼저 알아야 하는가"를 3,221개의 선수학습 화살표로 이은 오픈 데이터셋이다. 코드가 실행되는 소프트웨어가 아니라 순수 JSON 데이터 4개 파일 + JSON 스키마 + 무의존 검증기가 전부다. 각 주제는 쉬운 설명·성취 증거·나이대·유형을 갖고, 미국 Common Core·영국 국가교육과정·NGSS 같은 실제 교육 표준(standard)에 연결돼 있다. 즉 "학습을 하나의 연결된 지식 그래프(DAG)로 공개한다"는 발상이 핵심이다. (저장소: withmarbleapp/os-taxonomy · 제작사 Marble(Generative Spark, Inc.) · 데이터 전용 · 다중 라이선스 ODbL 1.0 + CC BY-SA 4.0 · v1.0.0 · New 2026 · TrendShift 오늘 Daily #17)
목차
  1. 프로젝트 한줄 요약
  2. 왜 주목받는가
  3. 기술 스택 전체 지도
  4. 아키텍처 심화 분석
  5. 디렉토리 구조 해부
  6. 학습 포인트 (기술별)
  7. 시스템 요구사항 · 라이선스
  8. 직접 해볼 수 있는 실습 과제
  9. 관련 기술 심화 학습 로드맵
  10. 핵심 키워드 사전
  11. 참고 링크

1프로젝트 한줄 요약

이 저장소가 대체 무엇인가.

os-taxonomy는 "실행되는 프로그램"이 아니라 "잘 설계된 데이터"다. 교육회사 Marble이 유아~초등 시기 학습을 1,590개의 작은 개념 단위로 쪼개고, 그 개념들이 서로 어떤 순서로 배워야 하는지를 3,221개의 화살표(선수학습 관계)로 이어 하나의 그래프로 만든 뒤, 이걸 통째로 오픈소스로 공개한 것이다.

한 문장 비유

"교육과정을 지하철 노선도로 만든 것"이다.

보통 교육 데이터는 표준 문서를 그냥 쭉 나열한 목록(역 이름만 적힌 명단)이거나, 아니면 어떤 회사 제품 안에 꽁꽁 숨겨져 있다. os-taxonomy는 다르다. "덧셈 역에 가려면 먼저 '수 세기 역'과 '10 만들기 역'을 지나야 한다"처럼 모든 개념(역)을 선(화살표)으로 이어 노선도로 만들고, 그 노선도 전체를 누구나 내려받아 쓸 수 있게 공개했다.

그래서 어떤 아이가 "분수 나눗셈"을 못 풀 때, 노선도를 거꾸로 따라가면 "이 아이가 그 앞에 놓친 역이 어디인지"를 정확히 짚을 수 있다.

구성은 극도로 단순하다. data/ 폴더 안에 JSON 4개가 있고, 그 형식을 정의한 schema/와, 데이터가 깨지지 않았는지 확인하는 무의존 검증 스크립트 하나가 붙어 있다. 런타임도, 서버도, 설치할 라이브러리도 없다. "JSON을 불러와서 바로 쓴다"가 사용법의 전부다.

구성 요소수치정체
미시-주제(nodes)1,590개가르칠 수 있는 하나의 아이디어 단위
선수학습 관계(edges)3,221개"X는 Y를 먼저 알아야 한다"는 방향 화살표
과목(subjects)8개과학·수학·영어·역사·인성·생활·컴퓨팅·학습법
교육 표준(standards)3,261개 / 7개 교육과정Common Core, 영국 NC, NGSS 등에서 추출
주제↔표준 연결1,859개각 주제가 어느 공식 표준에서 나왔는지
도메인 요약(clusters)183개학부모용 한 문단 설명

2왜 주목받는가

데이터 파일 몇 개짜리 저장소가 어떻게 트렌딩에 올랐나.

① "AI가 교육을 개인화"하려면 딱 이런 그래프가 필요했다

요즘 LLM 기반 학습 앱이 쏟아지지만, 대부분 "다음에 뭘 가르쳐야 하나?"를 그때그때 지어낸다. os-taxonomy는 그 빈자리를 정확히 겨냥한다. 개념 사이의 선수학습 관계가 이미 사람 손으로 정리된 DAG로 존재하므로, AI 튜터는 "이 아이가 방금 틀린 문제의 뿌리 개념"을 그래프 탐색만으로 찾아낼 수 있다. 요즘 트렌드인 개인화 학습·적응형 커리큘럼의 빠진 퍼즐 조각을 오픈으로 던진 셈이다.

② "제품 안에 갇힌 데이터"를 밖으로 꺼냈다

교육 표준(Common Core 등)은 원래 공개돼 있지만, 그건 평평한 목록일 뿐 "무엇을 먼저 배워야 하는가"라는 연결 정보는 어디에도 없다. 그 연결을 만드는 건 교육 전문가의 값비싼 수작업이라 보통 회사 제품 안에 숨긴다. Marble은 그 비싼 연결 데이터를 자기 제품에서 떼어 통째로 공개했다. "데이터셋을 오픈소스처럼 릴리스한다"는 태도 자체가 화제가 됐다.

③ 라이선스를 진지하게 설계했다 (오픈 데이터의 모범 사례)

단순히 "MIT!" 던진 게 아니다. 데이터베이스 구조는 ODbL, Marble이 쓴 글은 CC BY-SA, 남의 교육 표준은 각자의 원 라이선스3층으로 분리했다. 심지어 저작권이 까다로운 NGSS·IB 같은 출처는 표준 코드만 넣고 원문 텍스트는 뺐다(codes-only). 오픈 데이터를 법적으로 어떻게 배포해야 하는지에 대한 교과서 같은 사례여서 개발자·연구자 사이에서 회자된다.

비유

레시피 북에 비유하면 — 요리 순서(내가 정리한 구조)는 자유롭게 쓰되 출처를 밝히라 하고(ODbL), 내가 쓴 요리 설명글도 같은 조건(CC BY-SA), 하지만 남의 저작권 있는 원문 레시피는 "제목만 인용하고 본문은 빼둔" 것이다. "내 것과 남의 것을 정확히 구분해서 배포"하는 성숙함이 돋보인다.

④ 진입장벽이 0이다

의존성도, 빌드도, API 키도 없다. git clone 후 JSON을 import하면 끝. 데이터 자체가 완결된 산출물이라, 누구나 5분 안에 자기 프로젝트에 붙일 수 있다는 점이 확산에 유리했다.

3기술 스택 전체 지도

코드가 거의 없는 저장소의 "기술"은 무엇인가 — 데이터 모델·포맷·검증이 곧 스택이다.

데이터 포맷 계층

항목선택
직렬화 포맷UTF-8 JSON어떤 언어·도구에서도 즉시 읽힘. 런타임 의존 0
스키마 정의JSON Schema (draft 2020-12)필드 타입·필수값·enum을 기계가 검증 가능하게 명세
무결성 검증Node.js 순수 스크립트node:crypto/fs/path만 사용, 외부 패키지 0
체크섬SHA-256파일 위변조·손상 감지 (manifest에 기록)
인용 메타CITATION.cff학술 인용 표준 포맷(Citation File Format)

패키지 구성 (package.json)

{
  "name": "marble-taxonomy",
  "version": "1.0.0",
  "type": "module",
  "license": "(ODbL-1.0 AND CC-BY-SA-4.0)",
  "scripts": { "validate": "node scripts/validate.mjs" }
}

dependencies 항목 자체가 없다. "의존성 없음"이 스펙이라는 것을 package.json이 그대로 증명한다. ESM("type":"module")로 작성돼 import ... with { type: 'json' } 최신 문법을 예시로 든다.

4개 데이터 파일의 역할

파일크기담는 것
topics.json~1.67MB미시-주제 = 그래프의 노드 1,590개
dependencies.json~697KB선수학습 = 그래프의 엣지 3,221개
curriculum-standards.json~1.62MB출처 교육 표준 3,261개 (교육과정별 그룹)
clusters.json~61KB학부모용 도메인 요약 183개
manifest.json작음개수 통계 + 파일별 SHA-256 체크섬
TERM
DAG (Directed Acyclic Graph, 유향 비순환 그래프)
화살표에 방향이 있고(A→B), 아무리 따라가도 원래 자리로 돌아오는 고리가 없는 그래프. 선수학습에 딱 맞다 — "A를 알아야 B를 안다"는 방향이 있고, "A가 B의 선수이면서 동시에 B가 A의 선수"인 모순(순환)은 있으면 안 되기 때문. os-taxonomy는 이 DAG 구조를 데이터로 못박았다.

4아키텍처 심화 분석

데이터가 어떻게 하나의 그래프로 맞물리는가 — 4개 파일의 참조 구조.

┌─────────────────────────────────────────────────────────────┐ │ Marble Skill Taxonomy (v1) │ └─────────────────────────────────────────────────────────────┘ topics.json curriculum-standards.json ┌──────────────────────┐ ┌──────────────────────────┐ │ id: "mt_N8CpN1EJrP" │ │ curricula[] │ │ type: CONCEPTUAL │ │ └ slug: "ccss-ela" │ │ subject: English │ standards│ topics[] │ │ name: 문장 만들기 │──────────▶│ key: "ccss-ela:..." │ │ ageRange: 4~6 │ (키 참조)│ code / data{...} │ │ evidence: [...] │ │ └ slug: "ngss-k5" │ │ standards: [키,키] │ │ (codes-only: 코드만) │ └──────────┬───────────┘ └──────────────────────────┘ │ id │ dependencies.json clusters.json ┌──────────────────────┐ ┌──────────────────────────┐ │ topicId ───────┐ │ │ subject + domain + age │ │ prerequisiteId │ ◀───┘ 두 끝 모두│ → summary(학부모용 문단)│ │ strength: hard/soft │ topics의 │ │ │ reason: "..." (이유) │ id를 가리킴│ (주제 그룹 설명 183개) │ └──────────────────────┘ └──────────────────────────┘ ▶ 핵심: 모든 연결은 문자열 "키(key)"로만 이뤄진다. 엣지의 양 끝 = topic의 id / 주제의 standards[] = 표준의 key → 검증기가 "모든 키가 실제로 존재하는지"를 전수 확인(referential integrity)

설계 패턴 ① — 관계는 전부 "키 참조"로만

객체를 다른 객체 안에 중첩(embed)하지 않는다. 주제는 자기 표준을 통째로 품지 않고 standards: ["ccss-ela:L.K.1f"]처럼 문자열 키만 가진다. 엣지도 마찬가지로 양 끝을 topicId·prerequisiteId라는 id 문자열로만 가리킨다. 이렇게 하면 같은 표준이 100개 주제에 연결돼도 원본은 한 곳에만 있어 중복·불일치가 원천 차단된다(정규화된 데이터베이스와 동일한 발상).

TERM
참조 무결성 (Referential Integrity)
"화살표가 가리키는 대상이 실제로 존재하는가"를 보장하는 성질. 엣지가 mt_XXXX를 가리키는데 그런 주제가 없으면 깨진 링크(dangling reference)다. os-taxonomy의 검증기는 3,221개 엣지의 양 끝과 1,859개 표준 링크를 전수 대조해 깨진 링크가 하나라도 있으면 실패시킨다.

설계 패턴 ② — 데이터가 스스로를 증명한다 (self-validating)

validate.mjs외부 라이브러리 없이 Node 표준 모듈만으로 6가지를 검사한다. 데이터셋에 검증기를 함께 넣는 것은 "이 데이터는 믿을 수 있다"를 코드로 보증하는 것이다.

검사내용
선언 개수 일치topicCount 값 == 실제 배열 길이인가
필드 유효성id가 mt_로 시작? type이 5종 enum 안? 설명 비어있지 않나?
id 중복같은 주제 id·표준 key가 두 번 나오지 않나
참조 무결성모든 엣지 끝·표준 링크가 실제로 존재하나 (self-dependency 금지)
codes-only 불변식텍스트 제외 출처가 실수로 원문을 흘리지 않았나
SHA-256 체크섬manifest에 적힌 해시 == 실제 파일 해시인가

설계 패턴 ③ — codes-only 불변식 (저작권을 데이터 구조로 강제)

가장 영리한 부분이다. NGSS·IB 같은 저작권 민감 출처는 textIncluded:false로 표시하고 표준 코드(예 1-ESS1-1)만 담는다 — 코드는 "짧은 사실적 식별자"라 저작권 위험이 낮기 때문. 그리고 검증기가 "codes-only 출처에 data(원문) 필드가 실수로 들어가면 빌드를 실패"시킨다. 즉 법적 규칙을 문서가 아니라 자동 검사로 못박아, 실수로 저작권 텍스트가 새어나가는 것을 막는다.

GOOD PATTERN
"주제↔표준 링크는 유지, 원문만 제거"

codes-only여도 "이 주제는 NGSS의 어느 표준에서 나왔다"는 연결 정보는 그대로 보존된다. 저작권 텍스트는 빼되 그래프의 뼈대는 온전히 남기는 절충 — 데이터 유용성과 법적 안전을 동시에 잡았다.

주제(topic) 한 개의 해부

{
  "id": "mt_N8CpN1EJrP",         // 안정적 식별자(엣지·이웃이 이걸 가리킴)
  "type": "CONCEPTUAL",          // 개념/절차/표현/언어/메타 5종 중 하나
  "subject": "English",
  "domain": "Grammar & Punctuation",
  "name": "Building sentences",
  "description": "단어가 모여 문장이 된다는 것을 이해…",
  "ageRangeStart": 4, "ageRangeEnd": 6,   // 대략의 나이대
  "centrality": 0.257,           // 그래프 중심성(얼마나 많은 것이 이걸 거치나)
  "evidence": [                  // "안다"를 어떻게 확인하나(성취 증거)
    "완전한 문장과 조각을 구분한다",
    "주어와 동사가 있는 완전한 문장을 만든다"
  ],
  "assessmentPrompt": "{{name}}에게 '그 개' 라고 말하면, 그게 완전한 문장이 아니라고…?",
  "standards": ["ccss-ela:L.K.1f", "uk-nc-2013:Eng.App2.Y1.Sent.1"]
}

assessmentPrompt에는 {{name}} 자리표시자가 들어있다 — 아이 이름을 끼워 넣어 개인화된 확인 질문을 만들 수 있게. 표시 전에 치환하거나 지우라고 문서가 명시한다.

엣지(dependency) 한 개의 해부

{ "topicId": "mt__00ZSLnB7p",          // 이 주제는
  "prerequisiteId": "mt_VBl1T1sFCM",   // 이 선수학습에 의존한다
  "strength": "hard",                  // hard(필수) / soft(있으면 좋음)
  "reason": "소리 크기 패턴을 찾기 전에 진동이 소리를 만든다는 걸 알아야" }

화살표를 거꾸로 뒤집으면 "이 개념을 익히면 무엇이 열리는가(unlocks)"가 된다. 같은 데이터로 "선행 지식 추적"과 "다음 학습 추천"을 모두 할 수 있다.

5디렉토리 구조 해부

파일 몇 개 안 된다 — 그래서 하나하나가 의도적이다.

os-taxonomy/ ├── data/ # 진짜 알맹이 — 순수 JSON │ ├── topics.json # 노드 1,590개 │ ├── dependencies.json # 엣지 3,221개 │ ├── curriculum-standards.json # 표준 3,261개 / 7개 교육과정 │ ├── clusters.json # 도메인 요약 183개 │ └── manifest.json # 개수 통계 + SHA-256 체크섬 ├── schema/ # 위 4개의 JSON Schema │ ├── topics.schema.json │ ├── dependencies.schema.json │ ├── curriculum-standards.schema.json │ └── clusters.schema.json ├── scripts/ │ └── validate.mjs # 무의존 무결성 검증기 ├── media/ │ ├── curriculum-viz.mp4 # 회전하는 3D 그래프 영상 │ └── curriculum-viz.gif ├── README.md # 스펙·사용법·라이선스 개요 ├── PROVENANCE.md # ★ 출처별 저작권/라이선스 상세 ├── CHANGELOG.md # 릴리스 이력(무엇을 넣고 뺐나) ├── CITATION.cff # 학술 인용 포맷 ├── LICENSE # ODbL 1.0 (데이터베이스) ├── LICENSE-CONTENT # CC BY-SA 4.0 (Marble이 쓴 글) └── package.json # validate 스크립트만, 의존성 0

주목할 점: 문서 파일이 데이터 파일만큼 진지하다. PROVENANCE.md는 7개 교육과정 출처마다 발행처·라이선스·필수 고지문구·"우리가 실제로 무엇을 실었는지"를 🟢🟡🔴 색으로 표기한다. CHANGELOG.md는 "무엇을 일부러 뺐는가"(임베딩·아동 개인정보)까지 밝힌다. 데이터셋을 하나의 출판물처럼 다룬다.

주의 · 함정
이 저장소로는 "실행"할 게 없다

npm start 같은 건 없다. 유일한 명령은 node scripts/validate.mjs(무결성 확인)뿐. 그래프 탐색·시각화·AI 연동은 당신이 직접 코드를 짜서 이 JSON을 소비해야 한다. "데이터를 준다, 활용은 네 몫"이라는 저장소다.

주의 · 범위
공개된 것 vs 빠진 것

일부러 제외한 것: 시맨틱 임베딩(파생물이라 재계산 가능), 아동별·사용자별 데이터(개인정보라 절대 미공개), 교육 연구 자료, 시각화 코드. 또 NGSS·IB·C3 표준은 코드만 있고 원문 텍스트는 없다(라이선스 미확보). 별점 수치는 이 문서에서 인용하지 않는다(시점마다 변함).

6학습 포인트 (기술별)

코드가 없어도 배울 게 많다 — 이 저장소는 "데이터 설계"의 살아있는 교재다.

① 그래프로 사고하기 (노드 + 엣지 모델링)

학습을 "목록"이 아니라 "그래프"로 본다는 발상이 핵심이다. 노드(topics)와 엣지(dependencies)를 별도 파일로 분리하고, 엣지는 노드를 id로만 참조한다. 이 구조를 이해하면 소셜 네트워크·추천 시스템·의존성 그래프 등 "연결이 데이터의 본질인" 모든 문제에 응용할 수 있다.

② 데이터 정규화와 참조 무결성

같은 정보를 두 곳에 두지 않는 것(정규화), 그리고 "가리키는 대상이 반드시 존재하도록" 검증하는 것(참조 무결성)은 관계형 데이터베이스의 핵심 원리다. os-taxonomy는 DB 없이 JSON만으로 이 원리를 구현해 보여준다 — SQL의 FOREIGN KEY가 하는 일을 validate.mjs가 손으로 한다.

③ 무의존 검증기 작성법

validate.mjs는 훌륭한 참고 코드다. Node 표준 모듈(node:crypto, node:fs)만으로 개수 대조 → 필드 검사 → 중복 탐지 → 참조 무결성 → 불변식 → 체크섬까지 6단계를 100줄 안에 짜냈다. "오류를 모아서 마지막에 한 번에 보고"하는 패턴(errors.push 후 exit code)도 배울 만하다.

④ 오픈 데이터 라이선싱 (법률 × 엔지니어링)

이 저장소의 진짜 걸작은 PROVENANCE.md다. 내가 만든 것(구조·글)과 남의 것(표준)을 구분하고, 각각 다른 라이선스를 붙이고, 저작권 위험이 큰 건 데이터 구조 자체로 배포를 제한(codes-only)한다. 데이터를 공개하려는 사람이라면 반드시 참고할 모범 사례다.

실습 아이디어

당신의 도메인을 그래프로 그려보라. 예: "요리 기술 트리"(계란 삶기 → 스크램블 → 오믈렛 → 수플레), "프로그래밍 학습 트리"(변수 → 조건문 → 함수 → 재귀). os-taxonomy의 topics/dependencies JSON 구조를 그대로 빌려 노드 20개 + 엣지 30개짜리 미니 그래프를 만들고, 검증기까지 붙여보면 이 저장소의 설계가 온몸으로 이해된다.

7시스템 요구사항 · 라이선스

쓰는 데 필요한 것은 사실상 없다. 대신 "지켜야 할 것"이 있다.

기술 요구사항

항목필요
런타임없음 — JSON을 읽을 수 있는 어떤 언어든 (Python/JS/Go/Rust…)
검증기 실행 시Node.js (표준 모듈만, 버전 무관하게 최신 ESM 지원)
의존성 설치불필요 (npm install 할 게 없음)
디스크전체 ~4MB 남짓 (미디어 제외)

라이선스 3층 구조 (사용 전 반드시 확인)

계층라이선스
데이터베이스(구조·id·관계)ODbL 1.0상업 이용 OK, 출처 표기 필수, 파생 DB는 개방 유지(share-alike)
Marble이 쓴 텍스트CC BY-SA 4.0설명·이유·요약글 — 출처 표기 + 동일조건 공유
curriculum-standards출처별 원 라이선스Marble 것이 아님 — PROVENANCE.md의 개별 조건 준수
중요 · 오해 방지
ODbL은 "상업적으로 못 쓴다"가 아니다

ODbL은 파생 데이터베이스(택소노미 자체를 확장·수정)와 산출물(이 데이터를 제품·모델·앱 안에서 사용)을 구분한다. 그래서 이 데이터로 상용 제품을 만들어도 제품을 오픈소스로 공개할 의무는 없다 — 다만 "택소노미 자체를 고쳤다면" 그 개선분만 ODbL로 돌려줘야 한다. 상업 친화적이면서도 개방을 지키는 절묘한 선택.

필수 고지
쓰면 이렇게 크레딧을 달아야 한다

"Marble Skill Taxonomy (v1) · © Generative Spark, Inc. (Marble) · https://withmarble.com · ODbL 1.0 + CC BY-SA 4.0" 를 표기하고, 사용한 교육 표준이 있으면 PROVENANCE.md의 해당 고지문구(예: NGSS 사용 시 WestEd 상표 고지)도 함께 붙여야 한다.

8직접 해볼 수 있는 실습 과제

JSON을 불러오는 순간부터 놀거리가 쏟아진다. 난이도별 5개.

과제 A — 선수학습 추적기 난이도 ★☆☆☆

임의의 주제 하나를 골라 "그것을 배우기 전에 알아야 할 모든 것"을 재귀적으로 나열하라. dependencies를 거꾸로 타고 올라가는 그래프 역방향 탐색(BFS/DFS) 연습이다.

const byId = new Map(topics.topics.map(t => [t.id, t]));
function prereqTree(id, seen = new Set()) {
  for (const d of deps.dependencies.filter(e => e.topicId === id)) {
    if (seen.has(d.prerequisiteId)) continue;
    seen.add(d.prerequisiteId);
    console.log(byId.get(d.prerequisiteId).name, `(${d.strength})`);
    prereqTree(d.prerequisiteId, seen);   // 한 단계 더 깊이
  }
  return seen;
}

과제 B — 학습 순서 자동 정렬 난이도 ★★☆☆

전체 그래프를 위상 정렬(topological sort)해 "이 순서대로 배우면 항상 선수학습이 먼저 나온다"는 커리큘럼 시퀀스를 만들어라. DAG의 대표 알고리즘을 실제 데이터로 연습한다. 덤: 정렬 중 사이클이 나오면 데이터 오류이니, 검증기가 놓친 순환이 없는지도 확인된다.

과제 C — 3D/2D 그래프 시각화 난이도 ★★★☆

README의 회전 3D 영상처럼, d3-forcethree.js로 1,590개 노드를 과목별 색, 나이별 높이로 배치하고 엣지로 잇는 인터랙티브 뷰를 만들어라. centrality 값으로 노드 크기를 주면 "중요한 개념"이 시각적으로 도드라진다.

과제 D — AI 튜터 프롬프트 파이프라인 난이도 ★★★★

"아이가 문제 X를 틀렸다" → 그 문제의 주제를 찾고 → 선수학습을 역추적해 → assessmentPrompt({{name}} 치환)로 진단 질문을 생성하는 LLM 파이프라인을 짜라. os-taxonomy가 겨냥한 바로 그 용도를 직접 구현해보는 과제.

과제 E — 표준 커버리지 대시보드 난이도 ★★★★

Common Core·영국 NC 각 표준이 몇 개 주제에 연결됐는지 집계하고, 연결이 0인 "고아 표준"이나 유난히 많은 "허브 표준"을 찾아 표로 만들어라. 교육과정 간 커버리지 격차를 데이터로 드러내는 분석 연습.

9관련 기술 심화 학습 로드맵

이 데이터셋을 제대로 활용하려면 익힐 것들 — 4주 코스.

주차주제핵심 개념
1주차그래프 이론 기초노드·엣지·방향·DAG, BFS/DFS, 인접 리스트 vs 행렬
2주차위상 정렬 · 사이클 탐지Kahn 알고리즘, DFS 기반 정렬, 선수학습 순서 계산
3주차데이터 모델링 · 정규화정규화, 외래키/참조 무결성, JSON Schema 검증
4주차지식 그래프 · 시각화d3-force·three.js 그래프 렌더링, 중심성(centrality) 지표

더 깊이 파고 싶다면

지식 그래프(Knowledge Graph)온톨로지(ontology) 개념 — os-taxonomy는 사실상 교육 도메인의 경량 지식 그래프다. RDF/그래프 DB(Neo4j)를 배우면 이 JSON을 진짜 그래프 DB에 올려 강력한 질의를 던질 수 있다. 또 적응형 학습(adaptive learning)·지식 추적(knowledge tracing) 이론을 함께 보면, 이 데이터가 왜 이렇게 설계됐는지가 선명해진다.

10핵심 키워드 사전

이 저장소를 이해하는 데 필요한 용어 총정리.

TERM
micro-topic (미시-주제)
더 이상 쪼개기 애매한 "하나의 가르칠 수 있는 아이디어" 단위. 예: "문장 만들기", "별의 겉보기 밝기". 이 데이터셋의 노드.
TERM
taxonomy (택소노미 · 분류 체계)
대상들을 체계적으로 나누고 관계 지어 정리한 분류 구조. 여기서는 "아이가 배우는 것들"의 분류 + 선후 관계 지도.
TERM
prerequisite (선수학습)
어떤 것을 배우기 전에 먼저 알아야 하는 것. 엣지의 prerequisiteId가 이걸 가리킨다. hard=필수, soft=있으면 유리.
TERM
DAG (유향 비순환 그래프)
방향 있는 화살표 + 순환(고리) 없음. 선수학습·작업 의존성·빌드 순서 등 "먼저-나중" 구조를 표현하는 표준 자료구조.
TERM
referential integrity (참조 무결성)
모든 참조(키·화살표)가 실제 존재하는 대상을 가리킨다는 보장. 깨지면 "dangling reference".
TERM
centrality (중심성)
그래프에서 한 노드가 얼마나 "중요/중심"인지의 척도. 여기선 값이 높을수록 많은 개념이 그 주제를 거쳐 간다는 뜻.
TERM
ODbL (Open Database License)
데이터베이스 전용 오픈 라이선스. 상업 이용 허용 + 출처 표기 + 파생 DB 개방(share-alike). 제품 안 사용은 자유롭되 택소노미 개선분은 개방해야.
TERM
codes-only (코드만 제공)
저작권이 까다로운 표준은 식별 코드만 넣고 원문 텍스트는 제외하는 방식. 연결 정보는 유지, 저작권 텍스트만 뺌. 검증기가 위반을 자동 차단.
TERM
provenance (출처 이력)
데이터가 어디서 왔고 누가 어떤 권리를 갖는지의 기록. PROVENANCE.md가 7개 출처의 라이선스·고지의무를 명시.
TERM
JSON Schema
JSON 데이터의 "형식 규칙"을 JSON으로 적은 명세. 필드 타입·필수값·enum을 기계가 검증하게 해준다.

11참고 링크

더 파고들 곳.