Skip to content

About

Project Background

The Pokemon LinkML Model adapts the Pokemon Knowledge Graph ontology into a LinkML schema. The original ontology was created in 2019 by Kevin Haller to provide a structured, semantic representation of the Pokemon universe, with data sourced from community platforms including Bulbapedia, PokeWiki, PokeAPI, and PokemonDB.

This project serves three purposes: as an educational resource for learning LinkML and knowledge graph technologies, as a test bed for LinkML tooling development, and as a playground for AI agent development with rich ontology-backed data.

Knowledge Graph

The Pokemon Knowledge Graph (PokemonKG) by Kevin Haller provides a comprehensive RDF dataset covering the Pokemon universe. This project adapts the original OWL ontology into LinkML (Linked Data Modeling Language), a schema language that enables code generation, data validation, and multi-format serialization from a single YAML definition.

The knowledge graph contains data from multiple sources:

Dataset Source Content
Bulbapedia pokemonkg.org/dataset/bulbapedia Species, moves, abilities, types, evolution data
PokeAPI pokemon.outofbits.com/dataset/pokeapi-co Berries, items, game metadata

In total, the graph holds over 100,000 RDF triples covering approximately 900 species, 770+ moves, 18 types, and 300+ abilities, all queryable via SPARQL.

The LinkML adaptation preserves the original ontology's URI namespace (https://pokemonkg.org/ontology#) ensuring compatibility with the upstream knowledge graph while adding features like type-safe code generation, built-in validation, and multi-format artifact output.

Interoperability

The schema imports and builds on several established external ontologies and vocabularies:

Ontology Namespace Role in this Schema
FOAF (Friend of a Friend) http://xmlns.com/foaf/0.1/ Person modeling for Trainers and Gym Leaders. Provides the Person base class with properties like name and depiction.
DBpedia http://dbpedia.org/ontology/ Real-world concept references. Used for color definitions (e.g., dbpedia:Yellow) and connotations linking Pokemon concepts to encyclopedia entries.
OWL (Web Ontology Language) http://www.w3.org/2002/07/owl# Provides Thing as the root class and NamedIndividual for enumerated instances like Types, Habitats, and Egg Groups.
QUDT (Quantities, Units, Dimensions, Types) http://qudt.org/schema/qudt/ Units of measurement for physical attributes. Pokemon height uses meters, weight uses kilograms, and berry size uses diameter, all expressed as QUDT Quantity values with proper units and quantity kinds.
LinkML types https://w3id.org/linkml/ Built-in primitive type definitions (string, integer, boolean, uri, etc.) that form the base range types for slots.

Technology Stack

Component Technology
Schema language LinkML
Package management uv
Task runner just
Documentation MkDocs with Material theme
Diagrams Kroki (Mermaid rendering)
Code generation LinkML generators (gen-pydantic, gen-owl, gen-json-schema, etc.)
Data dictionary gen-markdown-datadict with SVG class/ERD diagrams

Disclaimer

This is an independent open source project and is not affiliated with, endorsed by, or connected to The Pokemon Company or Nintendo in any way. Pokemon and all related names, characters, and imagery are trademarks of The Pokemon Company and Nintendo, the original creators of the Pokemon world. This project is intended solely for educational and research purposes.

License

This project is licensed under the MIT License.