Kanonak Protocol
An open protocol for defining, versioning, and sharing semantic ontologies across distributed publishers.
Why Kanonak Protocol?
Knowledge lives in the heads of domain experts, but there is no standard way to turn that knowledge into durable, machine-readable definitions that others can build on. Kanonak Protocol changes that. The normative rules every document obeys are written down in the protocol specification.
Stable resource identifiers
Every class, property, and instance gets a persistent, globally unique identifier tied to a publisher domain. These identifiers don't break when systems change — they give people and machines a consistent way to refer to the same concepts.
Distributed publishing
Anyone with a domain can publish ontologies. There is no central authority deciding what types are valid. Domain experts — biologists, engineers, legal scholars — can develop their knowledge into formal schemas and share them directly from their own infrastructure.
Versioned ontologies
Ontologies evolve. Kanonak Protocol uses semantic versioning so publishers can improve their schemas without breaking consumers on earlier versions. Import what you need, pin to a version range, and upgrade on your own schedule.
Built for AI agents
When AI agents work with Kanonak ontologies, they are grounded in a shared vocabulary with formally defined types and relationships. The Kanonak CLI validates that data conforms to its schema — giving you guarantees about the shape of information rather than hoping the model got it right. Structured, validated data reduces ambiguity and gives agents less room to hallucinate.
Example
A Kanonak package defines classes and properties. This one describes people with addresses:
contacts:
type: Package
publisher: mycompany.com
version: 1.0.0
imports:
- publisher: kanonak.org
packages:
- package: core-rdf
match: ^
version: 1.0.0
alias: rdfs
- package: core-owl
match: ^
version: 2.0.0
alias: owl
- package: core-xsd
match: ^
version: 1.0.0
alias: xsd
Person:
type: rdfs.Class
label: Person
comment: A person in the contacts directory
fullName:
type: owl.DatatypeProperty
domain: Person
range: xsd.string
hasAddress:
type: owl.ObjectProperty
domain: Person
range: Address
A separate package imports the ontology and creates typed instances with embedded resources:
company-directory:
type: Package
publisher: mycompany.com
version: 1.0.0
imports:
- publisher: mycompany.com
packages:
- package: contacts
match: ^
version: 1.0.0
alice-smith:
type: Person
fullName: Alice Smith
email: alice@mycompany.com
hasAddress:
street: 742 Evergreen Terrace
city: Springfield
Tooling
Install the CLI to validate, install packages, and inspect dependencies:
npm install -g @kanonak-protocol/cli
kanonak install kanonak.org/core-rdf
kanonak validate contacts.kan.yml
The Kanonak Protocol VS Code extension adds real-time validation, an ontology browser, and language features (go-to-definition, hover, document outline) for .kan.yml files. The source lives on GitHub.
See it in action
Worldview uses Kanonak Protocol to publish a daily macro-market worldview as versioned snapshots. Each snapshot is a typed ontology of theses (with confidence levels), machine-evaluable invalidation conditions, and citation-backed evidence — well beyond the synthetic Person example above. It's a working illustration of how versioned ontology snapshots compose into a longitudinal record humans and AI agents can both reason over.
About
The protocol was originally called "Canon", short for canonical — the idea that something only needs to be defined once to become the globally referenceable, authoritative form of the thing it describes. The name was changed to Kanonak to avoid overlap with existing brand names. Kanonak Protocol was created by Paul Fryer in 2024, built from scratch when existing schema formats like JSON Schema and RDF fell short on distributed publishing, versioning, and readability.
Explore the packages
The headline packages of the protocol — start here.