Skip to content

Four-Layer Ontology Model

Import Chain

CKP adopts a four-layer ontology import chain grounded in established ontologies. Each layer imports the layers below it. Implementations MUST respect the import order and MUST NOT introduce circular imports.

Layer 0:   BFO 2020 (ISO 21838-2)           -- upper ontology (entity, continuant, occurrent)
Layer 0.5: IAO + CCO + PROV-O + ValueFlows  -- mid-level (information, agents, provenance, economics)
Layer 1:   CKP (conceptkernel.org/v3.6/)     -- protocol (kernel, edge, instance, action)
Layer 2:   Per-kernel (ontology.yaml)         -- domain-specific (custom classes per kernel)

The layering exists because ontological governance requires clear authority boundaries. Layer 0 is governed by ISO. Layer 0.5 is governed by established open communities (OBO Foundry, W3C, CCO consortium). Layer 1 is governed by the CKP specification editors. Layer 2 is governed by individual kernel developers. No lower layer may contradict a higher layer.

LayerNameGovernanceChange FrequencyExample Classes
0BFO 2020ISO 21838-2 committeeRarely (standard)bfo:BFO_0000040 (Material Entity), bfo:BFO_0000015 (Process)
0.5Mid-level importsExternal maintainers (OBO, W3C, CCO)Annuallyiao:0000027 (DataItem), cco:Agent, prov:Entity
1CKP protocol ontologyCKP specification editorsPer CKP releaseckp:AutonomousKernel, ckp:Edge, ckp:Instance
2Per-kernel domainKernel developerPer CK loop commitDomain-specific classes defined in ontology.yaml

Imported Ontologies (Layer 0.5)

Layer 0.5 bridges the abstract upper ontology (BFO) with the protocol-specific classes (CKP). These are established, well-maintained ontologies that provide the semantic grounding for CKP's core concepts.

OntologyIRIScopeGrounds These CKP Concepts
IAOhttp://purl.obolibrary.org/obo/iao.owlInformation entitiesckp:KernelOntology -> iao:Document, ckp:Instance -> iao:DataItem, ckp:Action -> iao:PlanSpecification
CCO Agentcco:AgentOntologyAgents, roles, organisationsckp:Kernel -> cco:Agent, ckp:Project -> cco:Organization
CCO Artifactcco:ArtifactOntologyArtifacts, specificationsckp:Edge -> cco:Artifact
CCO Info Entitycco:InformationEntityOntologyInformation, documentsAligns with IAO for richer information typing
CCO Eventcco:EventOntologyEvents, actionsAction subtypes -> cco:Event
PROV-Ohttp://www.w3.org/ns/prov#Provenance chainsInstance -> prov:Entity, Action execution -> prov:Activity, Kernel -> prov:Agent
ValueFlowshttps://w3id.org/valueflows#Economic events (REA)Payment -> vf:EconomicEvent, Agreement -> vf:Agreement

CKP Layer 1 OWL Artifact

A Turtle file (ckp.ttl) MUST be published at https://conceptkernel.org/v3.6/ckp.ttl declaring the CKP class hierarchy, imports for Layer 0 and 0.5, object properties for the three loops, edges, and action types, and annotation properties mapping to filesystem paths.

turtle
# ckp.ttl -- Layer 1 CKP Protocol Ontology (normative)
@prefix ckp:  <https://conceptkernel.org/ontology/v3.6/> .
@prefix bfo:  <http://purl.obolibrary.org/obo/BFO_> .
@prefix iao:  <http://purl.obolibrary.org/obo/IAO_> .
@prefix cco:  <http://www.ontologyrepository.com/CommonCoreOntologies/> .
@prefix prov: <http://www.w3.org/ns/prov#> .
@prefix owl:  <http://www.w3.org/2002/07/owl#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<https://conceptkernel.org/ontology/v3.6/> a owl:Ontology ;
    owl:imports <http://purl.obolibrary.org/obo/bfo.owl> ,
                <http://purl.obolibrary.org/obo/iao.owl> ,
                <http://www.w3.org/ns/prov#> ;
    rdfs:label "Concept Kernel Protocol Ontology v3.6" .

# Core classes
ckp:AutonomousKernel a owl:Class ;
    rdfs:subClassOf bfo:0000040 , cco:Agent ;
    rdfs:label "Autonomous Kernel" ;
    rdfs:comment "A persistently-identified computational entity with three loops." .

ckp:HotKernel a owl:Class ;
    rdfs:subClassOf ckp:AutonomousKernel ;
    rdfs:label "Hot Kernel" .

ckp:ColdKernel a owl:Class ;
    rdfs:subClassOf ckp:AutonomousKernel ;
    rdfs:label "Cold Kernel" .

ckp:InlineKernel a owl:Class ;
    rdfs:subClassOf ckp:AutonomousKernel ;
    rdfs:label "Inline Kernel" .

ckp:StaticKernel a owl:Class ;
    rdfs:subClassOf ckp:AutonomousKernel ;
    rdfs:label "Static Kernel" .

ckp:Instance a owl:Class ;
    rdfs:subClassOf iao:0000027 ;
    rdfs:label "CKP Instance" .

ckp:Edge a owl:Class ;
    rdfs:subClassOf cco:Artifact ;
    rdfs:label "CKP Edge" .

ckp:Action a owl:Class ;
    rdfs:subClassOf iao:0000104 ;
    rdfs:label "CKP Action" ;
    rdfs:comment "An action definition is a PlanSpecification; an action execution is a bfo:Process." .

# Object properties
ckp:hasCKLoop a owl:ObjectProperty ;
    rdfs:domain ckp:AutonomousKernel ;
    rdfs:label "has CK loop" .

ckp:hasTOOLLoop a owl:ObjectProperty ;
    rdfs:domain ckp:AutonomousKernel ;
    rdfs:label "has TOOL loop" .

ckp:hasDATALoop a owl:ObjectProperty ;
    rdfs:domain ckp:AutonomousKernel ;
    rdfs:label "has DATA loop" .

ckp:hasEdge a owl:ObjectProperty ;
    rdfs:domain ckp:AutonomousKernel ;
    rdfs:range  ckp:Edge ;
    rdfs:label "has edge" .

Published Turtle Modules

The CKP ontology is published as 10 OWL modules. Each module is independently importable and covers a specific concern. Conformant implementations MUST import the Core module. All other modules are RECOMMENDED for full conformance.

#ModuleFileImport IRIScopeDependencies
1Coreckp-core.ttlckp:coreKernel classes, GUID, three-loop propertiesBFO 2020, IAO, CCO Agent
2Instanceckp-instance.ttlckp:instanceInstance lifecycle, DataItem typing, sealed/amendableCore, IAO
3Actionckp-action.ttlckp:actionSeven action types, PlanSpecification, Process executionCore, IAO, CCO Event
4Edgeckp-edge.ttlckp:edgeFive edge predicates, Artifact typingCore, CCO Artifact
5Provenanceckp-provenance.ttlckp:provenancePROV-O mappings, audit chain, three-factorCore, Instance, PROV-O
6Identityckp-identity.ttlckp:identitySPIFFE SVID, grants, access controlCore, CCO Agent
7Governanceckp-governance.ttlckp:governanceSTRICT/RELAXED/AUTONOMOUS modes, complianceCore, Identity
8Lifecycleckp-lifecycle.ttlckp:lifecycleTask state machine, mint-to-accumulationCore, Instance, Action, PROV-O
9Economicckp-economic.ttlckp:economicValueFlows economic events, capability advertisementCore, ValueFlows
10Topologyckp-topology.ttlckp:topologyVolume layout, NATS topics, filesystem pathsCore

WARNING

All 10 modules are published together under the same version URI. Individual modules MUST NOT be versioned independently -- they form a coherent set. Implementations MUST pin to a specific published version and MUST NOT use unversioned or latest module URIs.

LinkML Integration and ontology.yaml

Each kernel declares its domain-specific ontology (Layer 2) in ontology.yaml using LinkML syntax. This file imports CKP modules and defines the kernel's custom classes.

yaml
# ontology.yaml -- Layer 2 per-kernel ontology
id: https://example.org/ck/finance-employee/v1
name: finance-employee-ontology
prefixes:
  ckp: https://conceptkernel.org/ontology/v3.6/
  linkml: https://w3id.org/linkml/

imports:
  - ckp:core
  - ckp:instance
  - ckp:action
  - ckp:provenance
  - linkml:types

classes:
  EmployeeRecord:
    is_a: ckp:Instance
    attributes:
      name:
        range: string
        required: true
      department:
        range: string
      role:
        range: string

# Instance mutability declaration
instance_mutability: sealed

Conformant implementations MUST validate that:

  1. All imports resolve to published CKP modules or linkml:types.
  2. All is_a references point to valid CKP or BFO classes.
  3. The instance_mutability value is one of sealed, amendments_allowed, or full_versioning.

SHACL Validation

Each kernel MAY include a rules.shacl file in its CK loop that defines SHACL shapes for validating instances before they are written to the DATA loop.

SHACL shapes are evaluated against instance data as follows:

  1. The platform converts data.json to an RDF graph using the JSON-LD @context defined in ontology.yaml.
  2. The SHACL shapes in rules.shacl are applied to the RDF graph.
  3. If validation fails, the write is blocked and ck.{guid}.data.shacl-rejected is published on NATS.
  4. If no @context is defined, SHACL operates in permissive stub mode (all writes accepted).

TIP

SHACL provides a standard, W3C-endorsed mechanism for constraint checking. By using SHACL rather than ad-hoc validation logic, CKP ensures that constraints are machine-readable, composable, and interoperable with the broader Semantic Web ecosystem.

Normative SHACL Shapes

The published shapes.ttl module defines five normative SHACL node shapes:

ShapeTarget ClassValidates
ckp:KernelShapeckp:AutonomousKernelKernel identity completeness (GUID, class, three loops)
ckp:EdgeShapeckp:EdgeEdge structural integrity (source, target, predicate, authorisation)
ckp:InstanceShapeckp:InstanceInstance provenance completeness (PROV-O fields present)
ckp:AuditEventShapeAudit eventsLedger entry structural integrity
ckp:ProtocolOntologyGraphShapeCKP ontology graphImmutability constraint on Layer 1

Abbreviated Class Tree

The following tree shows the top two levels of the CKP ontology class hierarchy. The full hierarchy contains 95 OWL classes across 10 Turtle modules.

bfo:Entity
|
+-- bfo:Continuant (BFO_0000002)
|   |
|   +-- bfo:IndependentContinuant
|   |   |
|   |   +-- bfo:MaterialEntity (BFO_0000040)
|   |   |   +-- ckp:Kernel  (also subClassOf cco:Agent)        [core.ttl]
|   |   |   |   +-- ckp:HotKernel                              [core.ttl]
|   |   |   |   +-- ckp:ColdKernel                             [core.ttl]
|   |   |   |   +-- ckp:InlineKernel                           [core.ttl]
|   |   |   |   +-- ckp:StaticKernel                           [core.ttl]
|   |   |   |   +-- ckp:EdgeKernel                             [core.ttl]
|   |   |   |   +-- ckp:ConsensusKernel                        [core.ttl]
|   |   |   |   +-- ckp:WssHubKernel                           [core.ttl]
|   |   |   |   +-- ckp:SystemKernel                           [kernel-metadata.ttl]
|   |   |   |   +-- ckp:ApplicationKernel                      [kernel-metadata.ttl]
|   |   |   |   +-- ckp:UIKernel                               [kernel-metadata.ttl]
|   |   |   |   +-- ckp:TemplateKernel                         [kernel-metadata.ttl]
|   |   |   |   ...
|   |   |   +-- ckp:Agent                                      [rbac.ttl]
|   |   |   |   +-- ckp:UserAgent
|   |   |   |   +-- ckp:ProcessAgent
|   |   |   ...
|   |
|   +-- bfo:GenericallyDependentContinuant (BFO_0000031)
|   |   +-- ckp:KernelMetadata                                 [kernel-metadata.ttl]
|   |   +-- ckpw:WorkflowEdge                                  [workflow.ttl]
|   |
|   +-- bfo:SpecificallyDependentContinuant
|       +-- bfo:Quality (BFO_0000019)
|       |   +-- ckp:KernelType, ckp:RelationshipType, ...      [core.ttl]
|       |   +-- ckp:Runtime, ckp:KernelStatus, ...             [kernel-metadata.ttl]
|       +-- bfo:RealizableEntity
|           +-- bfo:Disposition (BFO_0000016)
|           |   +-- ckp:StorageContract, ckp:GovernanceMode     [core.ttl]
|           |   +-- ckp:Capability, ckp:ServingDisposition      [kernel-metadata.ttl]
|           |   +-- ckp:Permission                              [rbac.ttl]
|           +-- bfo:Role (BFO_0000023)
|           |   +-- ckp:Role                                    [rbac.ttl]
|           +-- bfo:Function (BFO_0000034)
|               +-- ckpw:WorkflowAction                         [workflow.ttl]
|
+-- bfo:Occurrent (BFO_0000003)
|   |
|   +-- bfo:Process (BFO_0000015)
|   |   +-- ckpp:Process                                        [processes.ttl]
|   |   |   +-- ckpp:InvocationProcess
|   |   |   +-- ckpp:EdgeCommunicationProcess
|   |   |   +-- ckpp:ConsensusProcess
|   |   |   +-- ckpp:BroadcastProcess
|   |   +-- ckpp:TemporalPart                                   [processes.ttl]
|   |   |   +-- ckpp:AcceptedPhase, ckpp:ProcessingPhase, ...
|   |   +-- ckp:AuthorizationCheck                              [rbac.ttl]
|   |   +-- ckpw:Workflow                                       [workflow.ttl]
|   |   +-- ckpi:ImprovementProcess                             [self-improvement.ttl]
|   |
|   +-- bfo:ProcessBoundary (BFO_0000035)
|   |   +-- ckpp:StartBoundary, ckpp:EndBoundary                [processes.ttl]
|   |
|   +-- bfo:TemporalRegion (BFO_0000008)
|       +-- ckpp:TemporalRegion                                 [processes.ttl]
|
+-- (IAO / CCO mid-level grounding)
    |
    +-- iao:InformationContentEntity (IAO_0000030)
    |   +-- ckp:InformationEntity                               [core.ttl]
    |   +-- iao:DataItem (IAO_0000027)
    |   |   +-- ckp:Instance, ckp:InstanceManifest              [core.ttl, base-instances.ttl]
    |   |   +-- ckp:LedgerEntry, ckp:ProofRecord                [base-instances.ttl, proof.ttl]
    |   +-- iao:DirectiveInformationEntity
    |   |   +-- ckp:QueueContract                               [core.ttl]
    |   +-- iao:PlanSpecification (IAO_0000104)
    |   |   +-- ckp:Action                                      [core.ttl]
    |   +-- iao:Document (IAO_0000310)
    |       +-- ckp:KernelOntology                              [core.ttl]
    |
    +-- cco:Artifact
    |   +-- ckp:Edge, ckp:AuthorizedEdge                        [core.ttl]
    |
    +-- cco:Agent
    |   +-- ckp:Kernel  (dual grounding with bfo:MaterialEntity)
    |
    +-- cco:Organization
        +-- ckp:Project                                         [core.ttl]

Key Reclassifications

CKP grounds its core classes through mid-level ontologies rather than direct BFO typing. This provides richer semantic typing and better alignment with established information science ontologies.

CKP ClassMid-Level GroundingRationale
ckp:KernelOntologyiao:Document (IAO_0000310)An ontology is a document, not a quality of the kernel
ckp:Instanceiao:DataItem (IAO_0000027)An instance is a truthful data item about something
ckp:Edgecco:ArtifactAn edge is a constructed artifact connecting kernels
ckp:Kernelcco:Agent + bfo:BFO_0000040A kernel is both material entity AND agent -- it acts
ckp:Actioniao:PlanSpecification (IAO_0000104)An action definition is a plan specification; an action execution is a bfo:Process
ckp:Projectcco:OrganizationA project organises kernels into a coherent unit
ckp:QueueContractiao:DirectiveInformationEntity (IAO_0000033)A contract directs how to interact, not just a capability

Action Typing Distinction

The Action definition in SKILL.md is an iao:PlanSpecification. The Action execution (a specific invocation at a specific time) is a bfo:Process (bfo:BFO_0000015). Conformant implementations MUST maintain this distinction.

Future: Database-Backed Boxes

The filesystem is the current physical layer. In future versions, TBox definitions MAY be served from a graph database (RDF/SPARQL) and ABox instances from a document database (FerretDB, MongoDB). The RBox (tool) remains filesystem-bound -- it is executable code, not query results. The three-loop separation makes this migration transparent: swap the storage layer per loop without affecting the others.

Deliberately Skipped Ontologies

The following ontologies were evaluated and deliberately deferred. Each has a specific trigger condition for future adoption.

OntologyReason for DeferralRevisit When
CCO GeospatialCKP kernels do not have physical locationGeo-distributed kernels across data centres
CCO FacilityNo physical infrastructure modelling neededModelling cluster topology or edge nodes
CCO Units of Measurexsd:decimal sufficient for current metricsQuality-of-service SLAs with formal measurement
CCO Qualitybfo:0000019 sufficient for kernel qualitiesQuality scoring with richer dimensional analysis
CCO Timexsd:dateTime sufficient for timestampsTemporal reasoning (Allen intervals, scheduling)
CCO Currency UnitValueFlows covers economic eventsMulti-currency support requiring ISO 4217
ODRLGrants block in conceptkernel.yaml is simplerFine-grained policy composition across fleet
Hydra CoreREST API descriptions handled by OpenAPIHypermedia-driven API discovery
SWRLSHACL rules sufficient for validationComplex temporal/conditional business rules

Conformance Requirements

IDRequirementLevel
O-3Four-layer import chain MUST be respected; no circular importsCore
O-4ckp.ttl Layer 1 artifact MUST be published at the CKP version URICore
O-5Implementation MUST import the Core module (ckp:core)Core
O-6All 10 modules MUST be versioned together; no independent module versioningCore
O-7ontology.yaml MUST declare imports, and all is_a references MUST resolve to valid classesCore
O-8instance_mutability MUST be one of the three defined valuesCore
O-9SHACL rejection MUST block writes when @context is presentCore
O-10Implementations MUST use the namespace prefixes from Part I when emitting CKP ontology contentCore

See also: BFO Grounding for the Material Entity mapping, NATS Messaging for how ontology declarations materialise as NATS subscriptions at runtime.

Released under the MIT License.