Linked.Archi

Linked.Archi Backstage SHACL Shapes

SHACL Shapes

https://meta.linked.archi/backstage/shapes#

v0.2.0 draft bssh: Kalin Maldzhanski Linked.Archi Modified: 2026-08-24 License

SHACL shapes for validating Backstage catalog data. Imports core-shapes for base QualifiedRelationship validation. Adds Backstage-specific domain/range constraints per relationship type, the Backstage naming rule, and the value-set constraints for the lifecycle, API visibility and status level vocabularies. The value-set shapes are load-bearing rather than belt-and-braces: the ontology declares those vocabularies as DD-23 named individuals with no owl:oneOf, so nothing constrains membership if these shapes are not run.

Contents

APIConsumptionShape — target: APIConsumption

PropertyConstraintValueSeverityMessage
target class API Violation
source sh:or class Component | System Violation APIConsumption source must be a Component or a System.

APIProvisionShape — target: APIProvision

PropertyConstraintValueSeverityMessage
target class API Violation
source sh:or class Component | System Violation APIProvision source must be a Component or a System.

ApiDefinitionShape — target: API

PropertyConstraintValueSeverityMessage
definition datatype string Violation
definition maxCount 1 Violation
definition minCount 1 Violation

ApiOnlyPropertiesShape

ApiTypeShape — target: API

PropertyConstraintValueSeverityMessage
apiType class APIType Violation
apiType maxCount 1 Violation
apiType minCount 1 Violation

ApiVisibilityShape — target: API

PropertyConstraintValueSeverityMessage
apiVisibility in 45b8cbb517f68fcb Violation
apiVisibility maxCount 1 Violation

BackstageElementLabelShape — target: API

PropertyConstraintValueSeverityMessage
prefLabel datatype langString Violation
prefLabel datatype langString Violation
prefLabel datatype langString Violation
prefLabel datatype langString Violation
prefLabel datatype langString Violation
prefLabel datatype langString Violation
prefLabel datatype langString Violation
prefLabel datatype langString Violation
prefLabel minCount 1 Violation
prefLabel minCount 1 Violation
prefLabel minCount 1 Violation
prefLabel minCount 1 Violation
prefLabel minCount 1 Violation
prefLabel minCount 1 Violation
prefLabel minCount 1 Violation
prefLabel minCount 1 Violation

BackstageEntityIdentityShape — target: API

PropertyConstraintValueSeverityMessage
apiVersion datatype string Violation
apiVersion datatype string Violation
apiVersion datatype string Violation
apiVersion datatype string Violation
apiVersion datatype string Violation
apiVersion datatype string Violation
apiVersion datatype string Violation
apiVersion datatype string Violation
apiVersion maxCount 1 Violation
apiVersion maxCount 1 Violation
apiVersion maxCount 1 Violation
apiVersion maxCount 1 Violation
apiVersion maxCount 1 Violation
apiVersion maxCount 1 Violation
apiVersion maxCount 1 Violation
apiVersion maxCount 1 Violation
etag datatype string Violation
etag datatype string Violation
etag datatype string Violation
etag datatype string Violation
etag datatype string Violation
etag datatype string Violation
etag datatype string Violation
etag datatype string Violation
etag maxCount 1 Violation
etag maxCount 1 Violation
etag maxCount 1 Violation
etag maxCount 1 Violation
etag maxCount 1 Violation
etag maxCount 1 Violation
etag maxCount 1 Violation
etag maxCount 1 Violation
name datatype string Violation
name datatype string Violation
name datatype string Violation
name datatype string Violation
name datatype string Violation
name datatype string Violation
name datatype string Violation
name datatype string Violation
name maxCount 1 Violation
name maxCount 1 Violation
name maxCount 1 Violation
name maxCount 1 Violation
name maxCount 1 Violation
name maxCount 1 Violation
name maxCount 1 Violation
name maxCount 1 Violation
name minCount 1 Violation
name minCount 1 Violation
name minCount 1 Violation
name minCount 1 Violation
name minCount 1 Violation
name minCount 1 Violation
name minCount 1 Violation
name minCount 1 Violation
namespace datatype string Violation
namespace datatype string Violation
namespace datatype string Violation
namespace datatype string Violation
namespace datatype string Violation
namespace datatype string Violation
namespace datatype string Violation
namespace datatype string Violation
namespace maxCount 1 Violation
namespace maxCount 1 Violation
namespace maxCount 1 Violation
namespace maxCount 1 Violation
namespace maxCount 1 Violation
namespace maxCount 1 Violation
namespace maxCount 1 Violation
namespace maxCount 1 Violation
title datatype string Violation
title datatype string Violation
title datatype string Violation
title datatype string Violation
title datatype string Violation
title datatype string Violation
title datatype string Violation
title datatype string Violation
title maxCount 1 Violation
title maxCount 1 Violation
title maxCount 1 Violation
title maxCount 1 Violation
title maxCount 1 Violation
title maxCount 1 Violation
title maxCount 1 Violation
title maxCount 1 Violation
uid datatype string Violation
uid datatype string Violation
uid datatype string Violation
uid datatype string Violation
uid datatype string Violation
uid datatype string Violation
uid datatype string Violation
uid datatype string Violation
uid maxCount 1 Violation
uid maxCount 1 Violation
uid maxCount 1 Violation
uid maxCount 1 Violation
uid maxCount 1 Violation
uid maxCount 1 Violation
uid maxCount 1 Violation
uid maxCount 1 Violation

ComponentCompositionShape — target: ComponentComposition

PropertyConstraintValueSeverityMessage
source class Component Violation
target class Component Violation

ComponentOnlyPropertiesShape

ComponentTypePropertyShape

ComponentTypeShape — target: Component

PropertyConstraintValueSeverityMessage
componentType class ComponentType Violation
componentType class ComponentType Violation
componentType maxCount 1 Violation
componentType maxCount 1 Violation

DependencyShape — target: Dependency

PropertyConstraintValueSeverityMessage
source sh:or class Component | Resource Violation Dependency source must be a Component or a Resource — spec.dependsOn is declared on those two kinds.
target sh:or class Component | Resource Violation Dependency target is normally a Component or a Resource; the spec leaves the relation general, so an unusual target is reported rather than rejected.

DeprecatedLifecyclePropertyShape

PropertyConstraintValueSeverityMessage
lifecycle maxCount 0 Violation

DomainHierarchyShape — target: DomainHierarchy

PropertyConstraintValueSeverityMessage
source class Domain Violation
target class Domain Violation

DomainMembershipShape — target: DomainMembership

PropertyConstraintValueSeverityMessage
source class System Violation
target class Domain Violation

DomainOnlyPropertiesShape

DomainTypeShape — target: Domain

PropertyConstraintValueSeverityMessage
domainType class DomainType Violation
domainType maxCount 1 Violation

EntityRefConsistencyShape

PropertyConstraintValueSeverityMessage
entityRef datatype string Violation
entityRef maxCount 1 Violation
SPARQL constraint: bs:entityRef disagrees with the retained bs:kind, bs:namespace and bs:name. Expected kind:namespace/name, compared case-insensitively. Violation
            SELECT $this WHERE {
                $this <https://meta.linked.archi/backstage/onto#entityRef> ?ref .
                $this <https://meta.linked.archi/backstage/onto#kind> ?kind .
                $this <https://meta.linked.archi/backstage/onto#name> ?name .
                OPTIONAL { $this <https://meta.linked.archi/backstage/onto#namespace> ?ns }
                BIND(LCASE(CONCAT(STR(?kind), ":", COALESCE(STR(?ns), "default"), "/", STR(?name))) AS ?expected)
                FILTER (LCASE(STR(?ref)) != ?expected)
            }
        

GroupMembershipShape — target: GroupMembership

PropertyConstraintValueSeverityMessage
source class User Violation
target class Group Violation

GroupOnlyPropertiesShape

GroupParentageShape — target: GroupParentage

PropertyConstraintValueSeverityMessage
source class Group Violation
target class Group Violation
SPARQL constraint: A Group cannot be its own parent. Violation
            SELECT $this WHERE {
                $this <https://meta.linked.archi/core#source> ?g .
                $this <https://meta.linked.archi/core#target> ?g .
            }
        

GroupTypeShape — target: Group

PropertyConstraintValueSeverityMessage
groupType class GroupType Violation
groupType maxCount 1 Violation
groupType minCount 1 Violation

KindShape

PropertyConstraintValueSeverityMessage
kind datatype string Violation
kind maxCount 1 Violation

KindTypeAlignmentShape

SPARQL constraint: Retained bs:kind matches no Backstage class this entity is typed with. Legitimate if the entity was deliberately retyped; otherwise the lift mapped the kind wrongly. Info
            SELECT $this WHERE {
                $this <https://meta.linked.archi/backstage/onto#kind> ?kind .
                FILTER NOT EXISTS {
                    $this a ?class .
                    ?class <http://www.w3.org/2004/02/skos/core#notation> ?token .
                    FILTER (LCASE(STR(?token)) = LCASE(STR(?kind)))
                }
            }
        

LifecyclePropertiesShape

LifecycleStateShape — target: API

PropertyConstraintValueSeverityMessage
lifecycleState in 45b8cbb517f68fcf Violation
lifecycleState in 45b8cbb517f68fcf Violation
lifecycleState in 45b8cbb517f68fcf Violation
lifecycleState maxCount 1 Violation
lifecycleState maxCount 1 Violation
lifecycleState maxCount 1 Violation

LinkPropertiesShape

LinkShape — target: Link

PropertyConstraintValueSeverityMessage
linkIcon datatype string Violation
linkIcon maxCount 1 Violation
linkTitle datatype string Violation
linkTitle maxCount 1 Violation
linkType datatype string Violation
linkType maxCount 1 Violation
linkUrl datatype anyURI Violation
linkUrl maxCount 1 Violation
linkUrl minCount 1 Violation

LocationReferenceShape

PropertyConstraintValueSeverityMessage
managedByLocation datatype string Violation
managedByLocation maxCount 1 Violation
managedByOriginLocation datatype string Violation
managedByOriginLocation maxCount 1 Violation

OrphanShape

PropertyConstraintValueSeverityMessage
orphan datatype boolean Violation
orphan maxCount 1 Violation

OwnershipShape — target: Ownership

PropertyConstraintValueSeverityMessage
source class Element Violation
target sh:or class Group | User Violation Ownership target must be a Group or a User.

ProfilePropertiesShape

ProfileShape — target: Group

PropertyConstraintValueSeverityMessage
displayName datatype string Violation
displayName datatype string Violation
displayName maxCount 1 Violation
displayName maxCount 1 Violation
email datatype string Violation
email datatype string Violation
email maxCount 1 Violation
email maxCount 1 Violation
picture datatype anyURI Violation
picture datatype anyURI Violation
picture maxCount 1 Violation
picture maxCount 1 Violation

ResourceOnlyPropertiesShape

ResourceTypeShape — target: Resource

PropertyConstraintValueSeverityMessage
resourceType class ResourceType Violation
resourceType maxCount 1 Violation
resourceType minCount 1 Violation

ResourceUsageShape — target: ResourceUsage

PropertyConstraintValueSeverityMessage
target class Resource Violation
source sh:or class Component | Resource Violation ResourceUsage source must be a Component or a Resource.

ScaffoldingShape — target: Scaffolding

PropertyConstraintValueSeverityMessage
source class Element Violation
target class Template Violation

StatusItemPropertiesShape

StatusItemShape — target: StatusItem

PropertyConstraintValueSeverityMessage
statusLevel in 45b8cbb517f68fb0 Violation
statusLevel maxCount 1 Violation
statusMessage datatype string Violation
statusMessage maxCount 1 Violation
statusType datatype string Violation
statusType maxCount 1 Violation
statusType minCount 1 Violation

SystemMembershipShape — target: SystemMembership

PropertyConstraintValueSeverityMessage
target class System Violation
source sh:or class API | Component | Resource Violation SystemMembership source must be a Component, an API, or a Resource.

SystemOnlyPropertiesShape

SystemTypeShape — target: System

PropertyConstraintValueSeverityMessage
systemType class SystemType Violation
systemType maxCount 1 Violation

TechDocsDelegationShape — target: TechDocsDelegation

PropertyConstraintValueSeverityMessage
techdocsEntityPath datatype string Violation
techdocsEntityPath maxCount 1 Violation
source class Element Violation
target class Element Violation

TemplateOnlyPropertiesShape

TemplateTypeShape — target: Template

PropertyConstraintValueSeverityMessage
componentType minCount 1 Violation

TimeSavedShape

PropertyConstraintValueSeverityMessage
timeSaved datatype duration Violation
timeSaved maxCount 1 Violation

UserOnlyPropertiesShape