Skip to content

Estate Catalog Ontology — data / model / asset / service / infrastructure (reason over the estate, don't read it) #130

Description

@mdheller

Vision

Make the whole estate ontological so agents (and humans) reason over a graph — search it, understand dependencies, answer cross-cutting questions — instead of reading every repo/config each time. Same thesis as the Model Plane ontology (#129), generalized to every estate resource.

Architecture — one core + five domains (all ontogenesis, rooted in upper-core, sourceos vocab namespaces)

Domains/estate-catalog/estate-catalog-core.ttl (cat: = https://spec.sourceos.dev/vocab/estate-catalog#)

  • cat:CatalogEntry (⊑ upper:Entity) — abstract root of every cataloged thing: catalogId (URN), title, owner, status {active|deprecated|retired}, lifecycle, provenanceRef, evidenceRef.
  • cat:Catalog — a named collection.
  • Cross-catalog object properties = the reasoning fabric: cat:dependsOn, cat:runsOn, cat:consumesData, cat:producesData, cat:usesModel, cat:composedOf, cat:deployedTo, cat:exposes, cat:storedIn, cat:governedBy.

Five domains (each ⊑ cat:CatalogEntry):

  1. Data catalog (dc:) — DataAsset (dataset|stream|table|index|corpus), Schema, DataProduct; sensitivityClass, residencyClass, retention, derivedFrom (lineage).
  2. Model catalog (mc:) — Model, ModelAdapter, ModelVersion. Extends the merged model-plane domain (feat(domains): model-plane OWL/SHACL domain module (T7-7/T7-8) #129): mc:Model ↔ sourceos-spec ModelManifest by digest; mc:servedBymp:InferenceProvider; carries license (MIT/Apache checkable), tier, task.
  3. Asset catalog (ac:) — Asset (artifact|image|package|binary|document); content-addressed digest, storageRef (zot/GCS/MinIO), signature, license. Ties to existing PackageManifest/ArtifactManifest/ReleaseManifest.
  4. Application & Service catalog (sc:) — Application, Service, API, Endpoint; repo, environment, dependsOn, runsOn, consumesData, usesModel, exposes.
  5. Infrastructure (inf:) — InfrastructureNode, Cluster, Environment {dev|staging|prod}, Registry, Runner, Network, StorageBucket, ComputeResource; provider (GKE|GCS|sovereign), region, capacity; hosts, stores.

Reasoning payoff (SPARQL/SHACL over the graph)

  • "Which apps consume biometric/health-sensitive data and run on non-sovereign infra?" → Service —consumesData→ DataAsset(sensitivity) ⋈ Service —runsOn→ Infra(provider).
  • "Which models under a non-Apache license are served by a provider that can escalate off-device?" → mc:Model(license) ⋈ mc:servedBy→ mp:InferenceProvider(escalationPermitted) — reuses the feat(domains): model-plane OWL/SHACL domain module (T7-7/T7-8) #129 residency SHACL.
  • "Blast radius of retiring StorageBucket X" → traverse storedIn/dependsOn.
    Cross-catalog SHACL integrity shapes (e.g. a biometric DataAsset consumed by a Service on non-on-device infra = violation) make these invariants, not just queries.

Phasing (each on the review→remediate→merge loop)

  • P1 (schema): core + five domain OWL + key SHACL integrity/cross-catalog shapes + good/bad fixtures + per-lane validator. (One PR per domain, or core+2 then +3.)
  • P2 (population): ingest instances — gh-inventory (~70 repos → service catalog), model store → model catalog, GCS/zot/GKE → asset+infra. Ingestion tranche, not schema.
  • P3 (query surface): SPARQL + the existing shapes/ontology-query ShapeQuery mechanism as the agent-facing "reason, don't read" API.

Notes

  • Generalizes catalog/registry.ttl (og:Module) which already catalogs ontology modules — same pattern, all resource types.
  • Register each module in catalog/registry.ttl; validate via shacl_gate.py + per-lane validators (same as agent-system / model-plane).
  • Depends on: model-plane domain (feat(domains): model-plane OWL/SHACL domain module (T7-7/T7-8) #129, merged). Related estate context: KKO upper ontology (not yet wired), gh-inventory.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions