Skip to content

Zenith://Ontology

online
← Release history

Zenith / Publication extension / v0.1.0 · Review draft

The history has a model.

A release is an entity. Its comparison contains typed changes, backed by record snapshots, immutable artifacts, and source commits. These records use the schemas and controlled taxonomy defined here.

A bounded, self-describing extension

The PublicationProfile lists its SchemaDefinition records and points to its ontology and taxonomy. Those types are described by the same schema document, which uses the JSON Schema Draft 7 metaschema. References close the loop without embedding an endless chain of schemas or including a file’s own checksum inside itself.

Zenith owns this publication extension. It remains a review draft of the shared ontology; serving and validating these records does not approve an ontology change or qualify a runtime. Devgraph retains authority over its immutable versioned bundles. A RecordSnapshot preserves source evidence rather than creating or approving a new domain entity.

Entity types & schemas

PublicationEntity → ReleaseChange → VocabularyTermChange, OperationChange, ArtifactChange. Other record types specialize PublicationEntity directly.

ReleaseArtifact

An immutable file within one source release, identified by its URL and checksum.

/ontology/publication/v0.1.0/schema.json#/definitions/ReleaseArtifact

View field constraints
{
  "type": "object",
  "description": "An immutable file within one source release, identified by its URL and checksum.",
  "additionalProperties": false,
  "required": [
    "id",
    "type",
    "path",
    "url",
    "sha256"
  ],
  "properties": {
    "id": {
      "type": "string",
      "format": "uri"
    },
    "type": {
      "const": "ReleaseArtifact"
    },
    "path": {
      "type": "string",
      "minLength": 1
    },
    "url": {
      "type": "string",
      "format": "uri"
    },
    "sha256": {
      "type": "string",
      "pattern": "^[a-f0-9]{64}$"
    }
  }
}

SourceCommit

A source revision providing publication provenance, distinct from a semantic release or approval.

/ontology/publication/v0.1.0/schema.json#/definitions/SourceCommit

View field constraints
{
  "type": "object",
  "description": "A source revision providing publication provenance, distinct from a semantic release or approval.",
  "additionalProperties": false,
  "required": [
    "id",
    "type",
    "sha",
    "url",
    "authoredAt",
    "subject",
    "provenanceKind"
  ],
  "properties": {
    "id": {
      "type": "string",
      "format": "uri"
    },
    "type": {
      "const": "SourceCommit"
    },
    "sha": {
      "type": "string",
      "pattern": "^[a-f0-9]{40}$"
    },
    "url": {
      "type": "string",
      "format": "uri"
    },
    "authoredAt": {
      "type": "string",
      "format": "date-time"
    },
    "subject": {
      "type": "string",
      "minLength": 1
    },
    "provenanceKind": {
      "enum": [
        "https://zenith-research.ca/ontology/publication/v0.1.0/terms/PublicSnapshot",
        "https://zenith-research.ca/ontology/publication/v0.1.0/terms/ReleaseRevision"
      ]
    }
  }
}

RecordSnapshot

An opaque JSON representation copied from a specific release artifact. It is evidence about a record, not a newly admitted domain object.

/ontology/publication/v0.1.0/schema.json#/definitions/RecordSnapshot

View field constraints
{
  "type": "object",
  "description": "An opaque JSON representation copied from a specific release artifact. It is evidence about a record, not a newly admitted domain object.",
  "additionalProperties": false,
  "required": [
    "id",
    "type",
    "sourceArtifact",
    "sourceKey",
    "value"
  ],
  "properties": {
    "id": {
      "type": "string",
      "format": "uri"
    },
    "type": {
      "const": "RecordSnapshot"
    },
    "sourceArtifact": {
      "type": "string",
      "format": "uri"
    },
    "sourceKey": {
      "type": "string",
      "minLength": 1
    },
    "value": {
      "type": "object"
    }
  }
}

VocabularyTermChange

A change to a vocabulary term keyed by its canonical identifier.

/ontology/publication/v0.1.0/schema.json#/definitions/VocabularyTermChange

View field constraints
{
  "type": "object",
  "description": "A change to a vocabulary term keyed by its canonical identifier.",
  "additionalProperties": false,
  "required": [
    "id",
    "type",
    "action",
    "subjectId",
    "changedFields"
  ],
  "properties": {
    "id": {
      "type": "string",
      "format": "uri"
    },
    "type": {
      "const": "VocabularyTermChange"
    },
    "action": {
      "enum": [
        "https://zenith-research.ca/ontology/publication/v0.1.0/terms/Added",
        "https://zenith-research.ca/ontology/publication/v0.1.0/terms/Modified",
        "https://zenith-research.ca/ontology/publication/v0.1.0/terms/Removed"
      ]
    },
    "subjectId": {
      "type": "string",
      "minLength": 1
    },
    "changedFields": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1
      }
    },
    "before": {
      "$ref": "#/definitions/RecordSnapshot"
    },
    "after": {
      "$ref": "#/definitions/RecordSnapshot"
    }
  },
  "allOf": [
    {
      "if": {
        "properties": {
          "action": {
            "const": "https://zenith-research.ca/ontology/publication/v0.1.0/terms/Added"
          }
        }
      },
      "then": {
        "required": [
          "after"
        ],
        "not": {
          "required": [
            "before"
          ]
        }
      }
    },
    {
      "if": {
        "properties": {
          "action": {
            "const": "https://zenith-research.ca/ontology/publication/v0.1.0/terms/Modified"
          }
        }
      },
      "then": {
        "required": [
          "before",
          "after"
        ]
      }
    },
    {
      "if": {
        "properties": {
          "action": {
            "const": "https://zenith-research.ca/ontology/publication/v0.1.0/terms/Removed"
          }
        }
      },
      "then": {
        "required": [
          "before"
        ],
        "not": {
          "required": [
            "after"
          ]
        }
      }
    }
  ]
}

OperationChange

A change to a semantic operation keyed by its canonical identifier.

/ontology/publication/v0.1.0/schema.json#/definitions/OperationChange

View field constraints
{
  "type": "object",
  "description": "A change to a semantic operation keyed by its canonical identifier.",
  "additionalProperties": false,
  "required": [
    "id",
    "type",
    "action",
    "subjectId",
    "changedFields"
  ],
  "properties": {
    "id": {
      "type": "string",
      "format": "uri"
    },
    "type": {
      "const": "OperationChange"
    },
    "action": {
      "enum": [
        "https://zenith-research.ca/ontology/publication/v0.1.0/terms/Added",
        "https://zenith-research.ca/ontology/publication/v0.1.0/terms/Modified",
        "https://zenith-research.ca/ontology/publication/v0.1.0/terms/Removed"
      ]
    },
    "subjectId": {
      "type": "string",
      "minLength": 1
    },
    "changedFields": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1
      }
    },
    "before": {
      "$ref": "#/definitions/RecordSnapshot"
    },
    "after": {
      "$ref": "#/definitions/RecordSnapshot"
    }
  },
  "allOf": [
    {
      "if": {
        "properties": {
          "action": {
            "const": "https://zenith-research.ca/ontology/publication/v0.1.0/terms/Added"
          }
        }
      },
      "then": {
        "required": [
          "after"
        ],
        "not": {
          "required": [
            "before"
          ]
        }
      }
    },
    {
      "if": {
        "properties": {
          "action": {
            "const": "https://zenith-research.ca/ontology/publication/v0.1.0/terms/Modified"
          }
        }
      },
      "then": {
        "required": [
          "before",
          "after"
        ]
      }
    },
    {
      "if": {
        "properties": {
          "action": {
            "const": "https://zenith-research.ca/ontology/publication/v0.1.0/terms/Removed"
          }
        }
      },
      "then": {
        "required": [
          "before"
        ],
        "not": {
          "required": [
            "after"
          ]
        }
      }
    }
  ]
}

ArtifactChange

A change to a release file determined by path and checksum.

/ontology/publication/v0.1.0/schema.json#/definitions/ArtifactChange

View field constraints
{
  "type": "object",
  "description": "A change to a release file determined by path and checksum.",
  "additionalProperties": false,
  "required": [
    "id",
    "type",
    "action",
    "subjectId",
    "changedFields"
  ],
  "properties": {
    "id": {
      "type": "string",
      "format": "uri"
    },
    "type": {
      "const": "ArtifactChange"
    },
    "action": {
      "enum": [
        "https://zenith-research.ca/ontology/publication/v0.1.0/terms/Added",
        "https://zenith-research.ca/ontology/publication/v0.1.0/terms/Modified",
        "https://zenith-research.ca/ontology/publication/v0.1.0/terms/Removed"
      ]
    },
    "subjectId": {
      "type": "string",
      "minLength": 1
    },
    "changedFields": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1
      }
    },
    "before": {
      "$ref": "#/definitions/RecordSnapshot"
    },
    "after": {
      "$ref": "#/definitions/RecordSnapshot"
    }
  },
  "allOf": [
    {
      "if": {
        "properties": {
          "action": {
            "const": "https://zenith-research.ca/ontology/publication/v0.1.0/terms/Added"
          }
        }
      },
      "then": {
        "required": [
          "after"
        ],
        "not": {
          "required": [
            "before"
          ]
        }
      }
    },
    {
      "if": {
        "properties": {
          "action": {
            "const": "https://zenith-research.ca/ontology/publication/v0.1.0/terms/Modified"
          }
        }
      },
      "then": {
        "required": [
          "before",
          "after"
        ]
      }
    },
    {
      "if": {
        "properties": {
          "action": {
            "const": "https://zenith-research.ca/ontology/publication/v0.1.0/terms/Removed"
          }
        }
      },
      "then": {
        "required": [
          "before"
        ],
        "not": {
          "required": [
            "after"
          ]
        }
      }
    }
  ]
}

ReleaseComparison

A computed comparison of immutable adjacent source bundles; the initial release has no predecessor.

/ontology/publication/v0.1.0/schema.json#/definitions/ReleaseComparison

View field constraints
{
  "type": "object",
  "description": "A computed comparison of immutable adjacent source bundles; the initial release has no predecessor.",
  "additionalProperties": false,
  "required": [
    "id",
    "type",
    "toRelease",
    "changes"
  ],
  "properties": {
    "id": {
      "type": "string",
      "format": "uri"
    },
    "type": {
      "const": "ReleaseComparison"
    },
    "fromRelease": {
      "type": "string",
      "format": "uri"
    },
    "toRelease": {
      "type": "string",
      "format": "uri"
    },
    "changes": {
      "type": "array",
      "items": {
        "oneOf": [
          {
            "$ref": "#/definitions/VocabularyTermChange"
          },
          {
            "$ref": "#/definitions/OperationChange"
          },
          {
            "$ref": "#/definitions/ArtifactChange"
          }
        ]
      }
    }
  }
}

OntologyRelease

A source ontology release distributed by Zenith. Its source release date does not assert a website publication date or installed runtime qualification.

/ontology/publication/v0.1.0/schema.json#/definitions/OntologyRelease

View field constraints
{
  "type": "object",
  "description": "A source ontology release distributed by Zenith. Its source release date does not assert a website publication date or installed runtime qualification.",
  "additionalProperties": false,
  "required": [
    "id",
    "type",
    "ontology",
    "version",
    "sourceReleasedAt",
    "manifest",
    "bundleDigest",
    "notes",
    "notesSource",
    "notesSha256",
    "compatibilityNotes",
    "sourceRevision",
    "sourceHistory",
    "artifacts",
    "comparison"
  ],
  "properties": {
    "id": {
      "type": "string",
      "format": "uri"
    },
    "type": {
      "const": "OntologyRelease"
    },
    "ontology": {
      "type": "string",
      "format": "uri"
    },
    "version": {
      "type": "string",
      "pattern": "^v[0-9]+\\.[0-9]+\\.[0-9]+$"
    },
    "sourceReleasedAt": {
      "type": "string",
      "format": "date-time"
    },
    "manifest": {
      "type": "string",
      "format": "uri"
    },
    "bundleDigest": {
      "type": "string",
      "pattern": "^[a-f0-9]{64}$"
    },
    "notes": {
      "type": "string",
      "minLength": 1
    },
    "notesSource": {
      "type": "string",
      "format": "uri"
    },
    "notesSha256": {
      "type": "string",
      "pattern": "^[a-f0-9]{64}$"
    },
    "compatibilityNotes": {
      "type": "string",
      "minLength": 1
    },
    "sourceRevision": {
      "type": "string",
      "format": "uri"
    },
    "sourceHistory": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/SourceCommit"
      }
    },
    "artifacts": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/ReleaseArtifact"
      }
    },
    "comparison": {
      "$ref": "#/definitions/ReleaseComparison"
    }
  }
}

TaxonomyConcept

A controlled classification in the publication taxonomy.

/ontology/publication/v0.1.0/schema.json#/definitions/TaxonomyConcept

View field constraints
{
  "type": "object",
  "description": "A controlled classification in the publication taxonomy.",
  "additionalProperties": false,
  "required": [
    "id",
    "type",
    "label",
    "scheme"
  ],
  "properties": {
    "id": {
      "type": "string",
      "format": "uri"
    },
    "type": {
      "const": "TaxonomyConcept"
    },
    "label": {
      "type": "string",
      "minLength": 1
    },
    "scheme": {
      "type": "string",
      "format": "uri"
    },
    "broader": {
      "type": "string",
      "format": "uri"
    }
  }
}

Taxonomy

Controlled terms for change action and source provenance.

/ontology/publication/v0.1.0/schema.json#/definitions/Taxonomy

View field constraints
{
  "type": "object",
  "description": "Controlled terms for change action and source provenance.",
  "additionalProperties": false,
  "required": [
    "id",
    "type",
    "concepts"
  ],
  "properties": {
    "id": {
      "type": "string",
      "format": "uri"
    },
    "type": {
      "const": "Taxonomy"
    },
    "concepts": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/TaxonomyConcept"
      }
    }
  }
}

SchemaDefinition

A reference to an executable JSON Schema definition for one publication record type.

/ontology/publication/v0.1.0/schema.json#/definitions/SchemaDefinition

View field constraints
{
  "type": "object",
  "description": "A reference to an executable JSON Schema definition for one publication record type.",
  "additionalProperties": false,
  "required": [
    "id",
    "type",
    "describesType",
    "schemaDocument",
    "definitionPointer"
  ],
  "properties": {
    "id": {
      "type": "string",
      "format": "uri"
    },
    "type": {
      "const": "SchemaDefinition"
    },
    "describesType": {
      "type": "string",
      "format": "uri"
    },
    "schemaDocument": {
      "type": "string",
      "format": "uri"
    },
    "definitionPointer": {
      "type": "string",
      "minLength": 1
    }
  }
}

PublicationProfile

The Zenith publication extension describes its own schemas and taxonomy by reference; it does not require an infinite inline schema expansion.

/ontology/publication/v0.1.0/schema.json#/definitions/PublicationProfile

View field constraints
{
  "type": "object",
  "description": "The Zenith publication extension describes its own schemas and taxonomy by reference; it does not require an infinite inline schema expansion.",
  "additionalProperties": false,
  "required": [
    "id",
    "type",
    "status",
    "ontology",
    "schema",
    "taxonomy",
    "definitions"
  ],
  "properties": {
    "id": {
      "type": "string",
      "format": "uri"
    },
    "type": {
      "const": "PublicationProfile"
    },
    "status": {
      "const": "Review draft"
    },
    "ontology": {
      "type": "string",
      "format": "uri"
    },
    "schema": {
      "type": "string",
      "format": "uri"
    },
    "taxonomy": {
      "type": "string",
      "format": "uri"
    },
    "definitions": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/SchemaDefinition"
      }
    }
  }
}

Controlled taxonomy

  • AddedChangeAction
  • ModifiedChangeAction
  • RemovedChangeAction
  • PublicSnapshotProvenanceKind
  • ReleaseRevisionProvenanceKind

Added, Modified, and Removed classify comparisons. PublicSnapshot means first public availability; ReleaseRevision identifies a source manifest revision. Neither category implies an approval decision.