# cn-math-taxonomy: a knowledge graph of Chinese school mathematics

> cn-math-taxonomy maps 531 mathematics knowledge points and 2271 questions for grades one through nine, and its diagnostic walks a wrong answer back along prerequisite edges until it reaches the primary school concept that caused it. The project states plainly that it is an AI generated draft no teacher has reviewed.

**xiaoyang111222/cn-math-taxonomy** — 中小学数学知识图谱 + 前置诊断：课标对齐、人教版一–九年级、531 知识点、2271 题、自适应诊断

- Repository: https://github.com/xiaoyang111222/cn-math-taxonomy
- Website: https://math.pansgo.com/
- Stars: 2,770 · Forks: 631
- Language: Python
- License: NOASSERTION
- Published: 2026-10-20 · Updated: 2026-10-20 · Language: en
- Canonical page: https://hysenlabs.com/projects/xiaoyang111222-cn-math-taxonomy

## 531 knowledge points and 909 prerequisite edges across nine grades

The corpus is the project. cn-math-taxonomy is a directed acyclic graph of mathematics knowledge points for Chinese primary and junior high school, aligned to the 2022 edition of the compulsory education mathematics curriculum standard and to the ordering of the People Education Press textbooks for grades one through nine.

The counts are broken down by stage in the project documentation. Primary school, grades one to six, accounts for 216 knowledge points, 311 internal prerequisite edges, 73 curriculum standard entries covering the first three stages, and 864 questions. Junior high, grades seven to nine, accounts for 315 knowledge points, 563 internal edges, 157 curriculum standard entries for the fourth stage, and 1407 questions. The totals are 531 points, 909 edges, 230 standard entries and 2271 questions, with 35 further edges running from junior high back to primary school.

That last number is the one that matters most for the diagnostic, because a graph that only ran forward would stop at the grade boundary. These 35 crossing edges are what let a failure in grade nine point at a grade three concept.

The data format follows the topics plus dependencies structure of the Marble os-taxonomy project, and the repository itself is a static site with a data directory, a diagnose directory, an explore directory, scripts and tests.

## A wrong answer walks back down the prerequisite chain

The diagnostic works by following edges in reverse. When a learner gets a question wrong, the tool uses the prerequisite edges to trace backward from the current concept, and the project describes this as reaching from junior high all the way back to a specific primary school knowledge point. It then presents a learning path ordered by grade from low to high.

The design decision is that the diagnosis is a graph traversal, not a score. A percentage tells a learner how much they got right. A path tells them which specific concept to relearn, and in what order, which is a different kind of answer with a different kind of cost to produce. It also means the output depends entirely on the quality of the edges, because a wrong edge produces a confidently wrong path.

The graph view makes the same structure visible. The project ships a knowledge graph page that lets you explore the neighbourhood of a given point, showing prerequisites two levels up and dependencies one level down, and the example screenshot is centred on completing the square, with a diagnostic result that traces back to the perfect square formula.

Two implementation details are worth noting for anyone building on the data. The graph is acyclic by construction, so a traversal cannot loop, and the edges are typed. The documentation repeatedly refers to hard and soft prerequisite relations and to the question of whether a given edge should exist at all, which means edge strength is part of the model rather than an afterthought.

## 230 curriculum entries, with the first three stages unverified against the PDF

The curriculum side lives in data/cn-curriculum-standards.json, and it contains 230 entries drawn from the content requirements of the 2022 curriculum standard across the four stages, covering number and algebra, shape and geometry, statistics and probability, and comprehensive practice.

The verification status differs by stage, and the project is explicit about it. The fourth stage entries are the original text recognised from the education ministry PDF. The first three stages were organised from public transcriptions and were not checked page by page against the ministry PDF, so their page_or_ref field is marked as pending. The sources, rules, coverage and limitations are written up in docs/standards-mapping.md.

For an engineering team this split tells you how to treat the field. Stage four entries have a defensible provenance, which matters if you cite them. The first three stages are a good-faith transcription that you should verify yourself before relying on a specific clause.

The alignment target is the content requirements only, not the full text of the standard, and the textbook ordering is a separate axis. Keeping those two apart is the reason the project ships two data sets rather than one, and it is the reason a knowledge point can have a standard reference and a chapter reference that do not agree.

## Textbook order comes from third-party catalogs, and the gaps are labelled

The second axis is the People Education Press textbook sequence. For junior high the project uses the 2024 approved edition, and the chapter lists were taken from a third-party electronic textbook catalogue site rather than from the publisher, which the documentation states plainly.

The table of what was actually checked is unusual for a public dataset. Table of contents pages were verified for grade seven first volume, seven second, eight first, eight second and nine first, where the last three volumes use the 2024 approved edition. The grade nine second volume is marked as unofficial and pending, with a check date of 2026-10-17, and the reasoning is spelled out: no official 2024 grade nine second volume contents page was found on the publisher site, the official new textbook page only describes the writing approach without listing chapters, and the 2024 edition of that volume is expected to start being used in the spring 2027 term.

For that volume the project assembles a best estimate from several third-party sources and lists them, including a Zhihu column whose body requires a login and was visible only as a search snippet, two third-party teaching aid pages, and the catalogue site itself. It also documents a source it rejected, and the reason: that page contradicts its own grade nine first volume listing, so it was judged a mislabelled old catalogue.

The elementary side, checked on 2026-10-19, is similar. No official page listing all grade one to six volumes was found, so grades three to six follow the current edition unit names, and units that could not be confirmed are flagged. Where the adopted list differs from a common third-party listing, for example in grade two second volume, the difference is recorded instead of hidden.

## An AI generated draft, and the project says teachers must review it

The status declaration is the most important sentence in the documentation, and it should be the first thing an adopter reads. The graph and the question bank are an AI generated first draft that has not been reviewed by any teacher, for both primary and junior high.

The listed items needing frontline teacher review are specific: the granularity at which knowledge points are split, the mastery criteria, the diagnostic question answers, and above all the prerequisite relations, including which edges should be hard, which should be soft, and whether a given edge should exist at all. The diagnostic answers have automatic verification and an independent review pass, but they have not been checked item by item by a teacher.

The project also warns that many of the elementary volume catalogues are not from the publisher's official site, and that entries marked as unofficial and pending should not be treated as official chapter names.

This is a limitation, but it is an honest and well-documented one, which is more than most generated datasets offer. The practical consequence is that the graph is usable as engineering input, for building a diagnostic product, a practice tool or a research dataset, and it is not usable as a curriculum authority until the review it asks for has happened.

## Eighteen retired external nodes, kept alive by an alias map

The repository shows evidence of a design being revised rather than started, and the details are instructive for anyone planning their own data migration.

An earlier version of the taxonomy used 18 external summary nodes with identifiers of the form cnm_ext. Those have been deleted from topics.json and are not kept as aggregate nodes. Instead, data/id-aliases.json maps each old identifier to one or more formal primary school knowledge points, which use the cnm_p prefix.

The behaviour differs by page, and the difference is the point. When the knowledge graph page or the root path receives a fragment such as cnm_ext_002, it opens the first mapped primary knowledge point while leaving the old identifier in the address bar. The diagnostic page given the same identifier as a target expands it into all the mapped primary knowledge points before starting the diagnostic.

So old links keep working, and the diagnostic gets a broader, more accurate starting point than a single node would give. Keeping the old identifier visible in the URL also means a link that was shared before the migration still resolves to the same place, which is the behaviour you want when a public URL is in someone's notes.

The lesson for adopters is that the removal of a node type did not mean the loss of its URLs, and the alias file is where that decision lives.

## A static site with a Pages backup, and a licence that needs reading twice

The project is deployed as a static site, with the repository containing index.html, an assets directory, a diagnose directory, an explore directory, a scripts directory, a tests directory and a docs directory, plus a .nojekyll file for GitHub Pages. The live site is at math.pansgo.com, with the online demo of a diagnostic on completing the square, a home page, the knowledge graph explorer, the diagnostic tool, and a GitHub Pages copy of the whole site as a backup.

The scripts and tests directories are the part worth a second look. A dataset that ships a diagnostics service and a site usually needs the numbers in the data files and the numbers shown on the page to agree, and tests are how that stays true. The README does not describe what the tests cover, so the coverage has to be read from the repository.

On licensing, there are two statements and they do not match in form. The README carries a Creative Commons Attribution-NonCommercial 4.0 badge, which permits reuse with attribution for non-commercial purposes and prohibits commercial use. The LICENSE file in the repository root is a custom text that GitHub could not classify. If you are building something commercial, the non-commercial restriction in the badge is the thing to resolve, and the LICENSE file is the place to resolve it.

On maintenance, the repository is not archived, the last push was on 2026-10-20, and there are no GitHub releases, so there is no tagged version to pin and the CHANGELOG.md is the only version history available.

## Conclusion

Adopt cn-math-taxonomy if you are building a Chinese school mathematics product and need a structured prerequisite graph to reason over, and treat the numbers as a data engineering starting point rather than a curriculum authority. Do not use it to drive teaching, diagnosis or learning path recommendations for students yet, because the project itself says teacher review of the knowledge point split, the mastery criteria and the prerequisite edges is still outstanding. Verify three things first: the unofficial and pending items in the grade nine second volume and the elementary catalogs, whether the diagnostic answers hold up for the topics you intend to ship, and the licence terms, since the README badge names CC BY-NC 4.0 while the LICENSE file is a custom text, with the last push on 2026-10-20 and no tagged release.

## FAQ

### How many knowledge points and questions does cn-math-taxonomy contain?

It contains 531 knowledge points, 909 prerequisite edges, 230 curriculum standard entries and 2271 questions. Primary school accounts for 216 points and 864 questions, and junior high for 315 points and 1407 questions.

### How does the cn-math-taxonomy diagnostic work?

When an answer is wrong, the diagnostic follows the prerequisite edges backward from the concept in question, tracing from junior high down to the specific primary school knowledge point, and then presents a learning path ordered by grade from low to high.

### Is the cn-math-taxonomy data reviewed by teachers?

No. The project states it is an AI generated first draft that has not been reviewed by any teacher, and that the knowledge point granularity, mastery criteria, diagnostic answers and prerequisite relations all need frontline teacher review before it is used for teaching, diagnosis or path recommendation.

### Where did cn-math-taxonomy get its textbook chapter order?

The junior high chapter lists come from a third-party electronic textbook catalogue site rather than the publisher, with contents pages verified for grade seven first volume through grade nine first volume. The grade nine second volume list is marked as unofficial and pending verification, with a check date of 2026-10-17.

### What data format does cn-math-taxonomy use?

It follows the topics plus dependencies structure used by the Marble os-taxonomy project, with curriculum standard entries in data/cn-curriculum-standards.json and an alias map in data/id-aliases.json that maps retired cnm_ext identifiers to primary school knowledge points.

## Sources

- [Issues](https://github.com/xiaoyang111222/cn-math-taxonomy/issues)
- [Project website](https://math.pansgo.com/)
- [README](https://github.com/xiaoyang111222/cn-math-taxonomy/blob/main/README.md)
- [xiaoyang111222/cn-math-taxonomy on GitHub](https://github.com/xiaoyang111222/cn-math-taxonomy)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/xiaoyang111222-cn-math-taxonomy
