@prefix ex: https://navicore.tech/ops# . @prefix k8s: https://navicore.tech/k8s# . @prefix flux: https://navicore.tech/flux# . @prefix scm: https://navicore.tech/scm# . @prefix obs: https://navicore.tech/obs# . @prefix org: https://navicore.tech/org# . @prefix prov: http://www.w3.org/ns/prov# . @prefix rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns# . @prefix rdfs: http://www.w3.org/2000/01/rdf-schema# . @prefix xsd: http://www.w3.org/2001/XMLSchema# .
########################
########################
ex:System a rdfs:Class ; rdfs:comment "A logical system boundary (e.g. the SaaS product as a whole)." .
ex:Service a rdfs:Class ; rdfs:comment "A runtime-operable service that can be owned, deployed, alerted on, and reasoned about." .
ex:Component a rdfs:Class ; rdfs:comment "A deployable or buildable unit; optional abstraction if you want to distinguish from Service." .
ex:Tenant a rdfs:Class ; rdfs:comment "A first-class tenant at the application or security boundary." .
ex:Environment a rdfs:Class ; rdfs:comment "An environment such as prod, stage, dev." .
########################
########################
k8s:Cluster a rdfs:Class ; rdfs:comment "A Kubernetes cluster (e.g. an EKS cluster)." .
k8s:Namespace a rdfs:Class ; rdfs:comment "A Kubernetes namespace." .
k8s:Workload a rdfs:Class ; rdfs:comment "A Kubernetes workload abstraction." .
k8s:Deployment a rdfs:Class ; rdfs:subClassOf k8s:Workload . k8s:StatefulSet a rdfs:Class ; rdfs:subClassOf k8s:Workload . k8s:DaemonSet a rdfs:Class ; rdfs:subClassOf k8s:Workload . k8s:Job a rdfs:Class ; rdfs:subClassOf k8s:Workload . k8s:CronJob a rdfs:Class ; rdfs:subClassOf k8s:Workload .
k8s:ServiceObj a rdfs:Class ; rdfs:comment "A Kubernetes Service object (named to avoid clash with ex:Service)." .
k8s:Ingress a rdfs:Class .
k8s:HelmChart a rdfs:Class ; rdfs:comment "A Helm chart (internal or external)." .
k8s:Config a rdfs:Class ; rdfs:comment "A configuration object such as ConfigMap or Secret." .
########################
########################
flux:Kustomization a rdfs:Class ; rdfs:comment "A Flux Kustomization object." .
flux:HelmRelease a rdfs:Class ; rdfs:comment "A Flux HelmRelease object." .
########################
########################
scm:Repo a rdfs:Class ; rdfs:comment "A source code repository." .
scm:Commit a rdfs:Class ; rdfs:comment "A specific source control commit." .
########################
########################
org:Team a rdfs:Class ; rdfs:comment "A team responsible for owning and operating services." .
org:Person a rdfs:Class .
org:OnCall a rdfs:Class ; rdfs:comment "An on-call rotation or escalation policy." .
########################
########################
obs:Dashboard a rdfs:Class ; rdfs:comment "An observability dashboard (Datadog, Grafana, etc.)." .
obs:Monitor a rdfs:Class ; rdfs:comment "An alert or monitor." .
obs:SLO a rdfs:Class ; rdfs:comment "A service-level objective." .
########################
########################
ex:hasComponent a rdf:Property ; rdfs:domain ex:System ; rdfs:range ex:Component .
ex:runsAs a rdf:Property ; rdfs:domain ex:Service ; rdfs:range k8s:Workload .
ex:exposes a rdf:Property ; rdfs:domain ex:Service ; rdfs:range k8s:ServiceObj .
ex:ingressedBy a rdf:Property ; rdfs:domain ex:Service ; rdfs:range k8s:Ingress .
ex:dependsOn a rdf:Property ; rdfs:domain ex:Service ; rdfs:range rdfs:Resource ; rdfs:comment "Service-to-service or service-to-infrastructure dependency." .
ex:ownedBy a rdf:Property ; rdfs:domain ex:Service ; rdfs:range org:Team .
ex:onCall a rdf:Property ; rdfs:domain ex:Service ; rdfs:range org:OnCall .
ex:hasTenant a rdf:Property ; rdfs:domain ex:Service ; rdfs:range ex:Tenant .
ex:tenantType a rdf:Property ; rdfs:domain ex:Tenant ; rdfs:range xsd:string ; rdfs:comment "Examples: app, security." .
ex:inEnv a rdf:Property ; rdfs:domain ex:Service ; rdfs:range ex:Environment .
k8s:inNamespace a rdf:Property ; rdfs:domain k8s:Workload ; rdfs:range k8s:Namespace .
k8s:inCluster a rdf:Property ; rdfs:domain k8s:Namespace ; rdfs:range k8s:Cluster .
k8s:labels a rdf:Property ; rdfs:comment "Key/value labels; representation left to implementation." .
flux:manages a rdf:Property ; rdfs:domain flux:Kustomization ; rdfs:range flux:HelmRelease .
flux:releases a rdf:Property ; rdfs:domain flux:HelmRelease ; rdfs:range k8s:HelmChart .
flux:valuesFrom a rdf:Property ; rdfs:domain flux:HelmRelease ; rdfs:range k8s:Config .
scm:sourceRepo a rdf:Property ; rdfs:domain ex:Service ; rdfs:range scm:Repo .
scm:deployCommit a rdf:Property ; rdfs:domain flux:HelmRelease ; rdfs:range scm:Commit .
obs:hasDashboard a rdf:Property ; rdfs:domain ex:Service ; rdfs:range obs:Dashboard .
obs:hasMonitor a rdf:Property ; rdfs:domain ex:Service ; rdfs:range obs:Monitor .
obs:hasSLO a rdf:Property ; rdfs:domain ex:Service ; rdfs:range obs:SLO .
obs:logsQuery a rdf:Property ; rdfs:comment "A parameterized log query template." .
obs:metricsQuery a rdf:Property ; rdfs:comment "A parameterized metrics query template." .
########################
########################
prov:wasDerivedFrom a rdf:Property . prov:generatedAtTime a rdf:Property . prov:confidence a rdf:Property ; rdfs:range xsd:decimal .
for https://gist.github.com/navicore/0e5f0ba9f6c3adda6900374f5a0fee76