An open, structured taxonomy of what children learn across the primary/elementary years — decomposed into fine-grained "micro-topics", wired into a prerequisite graph, and aligned to national curriculum standards. Produced by Marble.
Version:
v1· Topics: 1,590 · Prerequisite edges: 3,221 · Subjects: 8
Every dot is a micro-topic, colored by subject; height is age; each thread is a prerequisite (full-quality video). Explore it interactively at withmarble.com/curriculum — tap any concept to trace everything a learner must master before it.
Most curriculum data is either a flat list of standards or locked inside a product. This dataset is a connected graph of learning:
- 1,590 micro-topics — a single, teachable idea (e.g. "Building sentences", "Apparent brightness of stars"), each with a plain-language description, mastery evidence criteria, a type (conceptual / procedural / representational / language / meta), a subject + domain, and an approximate age range.
- 3,221 prerequisite dependencies — a directed acyclic graph: "topic X depends on prerequisite Y", each edge tagged
hard/softand carrying a one-line reason. - Curriculum alignment — each micro-topic links to the standards it was distilled from (NGSS, Common Core, the UK National Curriculum, and more).
- Domain clusters — 183 parent-friendly one-paragraph summaries per (subject, domain, age band).
| Subject | Topics |
|---|---|
| Science | 547 |
| Mathematics | 503 |
| English | 286 |
| History | 90 |
| Personal & Social Development | 88 |
| Life Skills | 37 |
| Computing | 21 |
| Learning to Learn | 18 |
All data lives in data/ as UTF-8 JSON. See schema/ for JSON Schemas and manifest.json for counts + SHA-256 checksums.
| File | What it holds |
|---|---|
data/topics.json |
The micro-topics (graph nodes). |
data/dependencies.json |
Prerequisite edges (topicId depends on prerequisiteId). |
data/curriculum-standards.json |
The source curriculum standards, grouped by curriculum. |
data/clusters.json |
Parent-friendly domain summaries. |
data/manifest.json |
Counts, per-subject breakdown, per-file checksums. |
{
"id": "mt_N8CpN1EJrP",
"type": "CONCEPTUAL",
"subject": "English",
"domain": "Grammar & Punctuation",
"name": "Building sentences",
"description": "Understand that words combine to make sentences — a sentence expresses a complete thought…",
"ageRangeStart": 4,
"ageRangeEnd": 6,
"centrality": 0.257,
"evidence": [
"Distinguish between complete sentences and fragments",
"Compose a complete sentence with a subject and verb"
],
"assessmentPrompt": "If {{name}} says something like \"The dog\", can they tell you that's not a complete sentence…?",
"standards": ["ccss-ela:L.K.1f", "uk-nc-2013:Eng.App2.Y1.Sent.1"]
}id— stable identifier (mt_…), referenced by dependencies and by neighbours.standards— keys intocurriculum-standards.json("<curriculum-slug>:<code>").assessmentPrompt— a natural-language check for the idea. Contains a{{name}}placeholder (the child's name); substitute or strip before display.
{ "topicId": "mt__00ZSLnB7p", "prerequisiteId": "mt_VBl1T1sFCM", "strength": "hard",
"reason": "Must understand vibrations make sound before finding volume patterns" }topicId depends on prerequisiteId. Reverse the edge to get "unlocks".
Pure data — no runtime, no dependencies. Load the JSON and go.
import topics from './data/topics.json' with { type: 'json' };
import deps from './data/dependencies.json' with { type: 'json' };
const byId = new Map(topics.topics.map(t => [t.id, t]));
const prereqs = deps.dependencies
.filter(d => d.topicId === 'mt_N8CpN1EJrP')
.map(d => byId.get(d.prerequisiteId).name);Validate structure + referential integrity:
node scripts/validate.mjsThis dataset is multi-licensed — read this before you use or redistribute it.
| Layer | License |
|---|---|
| The database — the collection, structure, IDs, topic↔topic and topic↔standard relationships | ODbL 1.0 — free for research and commercial use, attribution required, share-alike (derivative databases must stay open under ODbL). |
The textual content Marble authored — topic description/name/evidence/assessmentPrompt, dependency reasons, cluster summarys |
CC BY-SA 4.0 — same spirit: attribution + share-alike. |
curriculum-standards.json — extracted from third-party frameworks |
Not Marble's to relicense. Each source is under its own upstream license — see PROVENANCE.md. |
Why share-alike + still commercial-friendly: ODbL distinguishes a derivative database (extend/modify the taxonomy → must stay open) from a produced work (use it inside a product, model, or app → stays yours). So you can build a commercial product on this without open-sourcing your product; you only owe back improvements to the taxonomy itself.
Any use must credit:
Marble Skill Taxonomy (v1) · © Generative Spark, Inc. (Marble) · https://withmarble.com · licensed under ODbL 1.0 (database) and CC BY-SA 4.0 (content).
Plus the upstream notices in PROVENANCE.md for any curriculum standards you use. See CITATION.cff for a formal citation.
Deliberately excluded from this release: semantic embeddings (derived, recomputable) and any per-child / user data (never published). See CHANGELOG.md.
