# UOR Foundation SHACL Shapes
# Generated from ontology v0.2.0 — 441 NodeShapes.

@prefix rdf:        <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs:       <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl:        <http://www.w3.org/2002/07/owl#> .
@prefix xsd:        <http://www.w3.org/2001/XMLSchema#> .
@prefix sh:         <http://www.w3.org/ns/shacl#> .
@prefix u:          <https://uor.foundation/u/> .
@prefix schema:     <https://uor.foundation/schema/> .
@prefix op:         <https://uor.foundation/op/> .
@prefix query:      <https://uor.foundation/query/> .
@prefix resolver:   <https://uor.foundation/resolver/> .
@prefix type:       <https://uor.foundation/type/> .
@prefix partition:  <https://uor.foundation/partition/> .
@prefix observable: <https://uor.foundation/observable/> .
@prefix carry:      <https://uor.foundation/carry/> .
@prefix homology:   <https://uor.foundation/homology/> .
@prefix cohomology: <https://uor.foundation/cohomology/> .
@prefix proof:      <https://uor.foundation/proof/> .
@prefix derivation: <https://uor.foundation/derivation/> .
@prefix trace:      <https://uor.foundation/trace/> .
@prefix cert:       <https://uor.foundation/cert/> .
@prefix morphism:   <https://uor.foundation/morphism/> .
@prefix state:      <https://uor.foundation/state/> .
@prefix reduction:  <https://uor.foundation/reduction/> .
@prefix convergence:<https://uor.foundation/convergence/> .
@prefix division:   <https://uor.foundation/division/> .
@prefix interaction:<https://uor.foundation/interaction/> .
@prefix monoidal:   <https://uor.foundation/monoidal/> .
@prefix operad:     <https://uor.foundation/operad/> .
@prefix effect:     <https://uor.foundation/effect/> .
@prefix predicate:  <https://uor.foundation/predicate/> .
@prefix parallel:   <https://uor.foundation/parallel/> .
@prefix stream:     <https://uor.foundation/stream/> .
@prefix failure:    <https://uor.foundation/failure/> .
@prefix linear:     <https://uor.foundation/linear/> .
@prefix recursion:  <https://uor.foundation/recursion/> .
@prefix region:     <https://uor.foundation/region/> .
@prefix boundary:   <https://uor.foundation/boundary/> .
@prefix conformance:<https://uor.foundation/conformance/> .
@prefix uor-sh:     <https://uor.foundation/shapes/> .

# ── u/ namespace (1) ─────────────────────────────

uor-sh:ElementShape
    a               sh:NodeShape ;
    sh:targetClass  u:Element ;
    rdfs:label      "ElementShape" ;
    sh:property [
        sh:path u:length ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path u:addresses ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class owl:Thing ;
    ] ;
    sh:property [
        sh:path u:digest ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:string ;
    ] ;
    sh:property [
        sh:path u:digestAlgorithm ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:string ;
    ] ;
    sh:property [
        sh:path u:canonicalBytes ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:hexBinary ;
    ] ;
    sh:property [
        sh:path u:wittLength ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:positiveInteger ;
    ] .

# ── schema/ namespace (21) ────────────────────────

uor-sh:DatumShape
    a               sh:NodeShape ;
    sh:targetClass  schema:Datum ;
    rdfs:label      "DatumShape" ;
    sh:property [
        sh:path schema:value ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path schema:wittLength ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:positiveInteger ;
    ] ;
    sh:property [
        sh:path schema:stratum ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path schema:spectrum ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path schema:element ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class u:Element ;
    ] .

uor-sh:TermShape
    a               sh:NodeShape ;
    sh:targetClass  schema:Term ;
    rdfs:label      "TermShape" .

uor-sh:TriadShape
    a               sh:NodeShape ;
    sh:targetClass  schema:Triad ;
    rdfs:label      "TriadShape" .

uor-sh:LiteralShape
    a               sh:NodeShape ;
    sh:targetClass  schema:Literal ;
    rdfs:label      "LiteralShape" ;
    sh:property [
        sh:path schema:denotes ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:Datum ;
    ] .

uor-sh:ApplicationShape
    a               sh:NodeShape ;
    sh:targetClass  schema:Application ;
    rdfs:label      "ApplicationShape" ;
    sh:property [
        sh:path schema:operator ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class op:Operation ;
    ] ;
    sh:property [
        sh:path schema:argument ;
        sh:class schema:Term ;
    ] .

uor-sh:RingShape
    a               sh:NodeShape ;
    sh:targetClass  schema:Ring ;
    rdfs:label      "RingShape" ;
    sh:property [
        sh:path schema:ringWittLength ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:positiveInteger ;
    ] ;
    sh:property [
        sh:path schema:modulus ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:positiveInteger ;
    ] ;
    sh:property [
        sh:path schema:generator ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:Datum ;
    ] ;
    sh:property [
        sh:path schema:negation ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class op:Involution ;
    ] ;
    sh:property [
        sh:path schema:complement ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class op:Involution ;
    ] ;
    sh:property [
        sh:path schema:atWittLevel ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:WittLevel ;
    ] .

uor-sh:W16RingShape
    a               sh:NodeShape ;
    sh:targetClass  schema:W16Ring ;
    rdfs:label      "W16RingShape" ;
    sh:property [
        sh:path schema:W16bitWidth ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:positiveInteger ;
    ] ;
    sh:property [
        sh:path schema:W16capacity ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:positiveInteger ;
    ] .

uor-sh:WittLevelShape
    a               sh:NodeShape ;
    sh:targetClass  schema:WittLevel ;
    rdfs:label      "WittLevelShape" ;
    sh:property [
        sh:path schema:bitsWidth ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:positiveInteger ;
    ] ;
    sh:property [
        sh:path schema:cycleSize ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:positiveInteger ;
    ] ;
    sh:property [
        sh:path schema:nextWittLevel ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:WittLevel ;
    ] ;
    sh:property [
        sh:path schema:wittLevelPredecessor ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:WittLevel ;
    ] .

uor-sh:TermExpressionShape
    a               sh:NodeShape ;
    sh:targetClass  schema:TermExpression ;
    rdfs:label      "TermExpressionShape" .

uor-sh:LiteralExpressionShape
    a               sh:NodeShape ;
    sh:targetClass  schema:LiteralExpression ;
    rdfs:label      "LiteralExpressionShape" ;
    sh:property [
        sh:path schema:literalValue ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:string ;
    ] .

uor-sh:ApplicationExpressionShape
    a               sh:NodeShape ;
    sh:targetClass  schema:ApplicationExpression ;
    rdfs:label      "ApplicationExpressionShape" ;
    sh:property [
        sh:path schema:expressionOperator ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class op:Operation ;
    ] ;
    sh:property [
        sh:path schema:arguments ;
        sh:class schema:TermExpression ;
    ] .

uor-sh:InfixExpressionShape
    a               sh:NodeShape ;
    sh:targetClass  schema:InfixExpression ;
    rdfs:label      "InfixExpressionShape" ;
    sh:property [
        sh:path schema:leftOperand ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:TermExpression ;
    ] ;
    sh:property [
        sh:path schema:rightOperand ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:TermExpression ;
    ] ;
    sh:property [
        sh:path schema:infixOperator ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:string ;
    ] .

uor-sh:SetExpressionShape
    a               sh:NodeShape ;
    sh:targetClass  schema:SetExpression ;
    rdfs:label      "SetExpressionShape" .

uor-sh:CompositionExpressionShape
    a               sh:NodeShape ;
    sh:targetClass  schema:CompositionExpression ;
    rdfs:label      "CompositionExpressionShape" .

uor-sh:ForAllDeclarationShape
    a               sh:NodeShape ;
    sh:targetClass  schema:ForAllDeclaration ;
    rdfs:label      "ForAllDeclarationShape" ;
    sh:property [
        sh:path schema:boundVariables ;
        sh:class schema:VariableBinding ;
    ] ;
    sh:property [
        sh:path schema:quantifierKind ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:QuantifierKind ;
    ] .

uor-sh:VariableBindingShape
    a               sh:NodeShape ;
    sh:targetClass  schema:VariableBinding ;
    rdfs:label      "VariableBindingShape" ;
    sh:property [
        sh:path schema:variableDomain ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class owl:Class ;
    ] ;
    sh:property [
        sh:path schema:variableName ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:string ;
    ] .

uor-sh:QuantifierKindShape
    a               sh:NodeShape ;
    sh:targetClass  schema:QuantifierKind ;
    rdfs:label      "QuantifierKindShape" .

uor-sh:SurfaceSymbolShape
    a               sh:NodeShape ;
    sh:targetClass  schema:SurfaceSymbol ;
    rdfs:label      "SurfaceSymbolShape" .

uor-sh:HostValueShape
    a               sh:NodeShape ;
    sh:targetClass  schema:HostValue ;
    rdfs:label      "HostValueShape" .

uor-sh:HostStringLiteralShape
    a               sh:NodeShape ;
    sh:targetClass  schema:HostStringLiteral ;
    rdfs:label      "HostStringLiteralShape" ;
    sh:property [
        sh:path schema:hostString ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:string ;
    ] .

uor-sh:HostBooleanLiteralShape
    a               sh:NodeShape ;
    sh:targetClass  schema:HostBooleanLiteral ;
    rdfs:label      "HostBooleanLiteralShape" ;
    sh:property [
        sh:path schema:hostBoolean ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] .

# ── op/ namespace (19) ────────────────────────────

uor-sh:OperationShape
    a               sh:NodeShape ;
    sh:targetClass  op:Operation ;
    rdfs:label      "OperationShape" ;
    sh:property [
        sh:path op:arity ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path op:hasGeometricCharacter ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class op:GeometricCharacter ;
    ] ;
    sh:property [
        sh:path op:inverse ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class op:Operation ;
    ] ;
    sh:property [
        sh:path op:composedOf ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class rdf:List ;
    ] .

uor-sh:UnaryOpShape
    a               sh:NodeShape ;
    sh:targetClass  op:UnaryOp ;
    rdfs:label      "UnaryOpShape" .

uor-sh:BinaryOpShape
    a               sh:NodeShape ;
    sh:targetClass  op:BinaryOp ;
    rdfs:label      "BinaryOpShape" ;
    sh:property [
        sh:path op:commutative ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] ;
    sh:property [
        sh:path op:associative ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] ;
    sh:property [
        sh:path op:identity ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:integer ;
    ] .

uor-sh:InvolutionShape
    a               sh:NodeShape ;
    sh:targetClass  op:Involution ;
    rdfs:label      "InvolutionShape" .

uor-sh:IdentityShape
    a               sh:NodeShape ;
    sh:targetClass  op:Identity ;
    rdfs:label      "IdentityShape" ;
    sh:property [
        sh:path op:lhs ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:TermExpression ;
    ] ;
    sh:property [
        sh:path op:rhs ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:TermExpression ;
    ] ;
    sh:property [
        sh:path op:forAll ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:ForAllDeclaration ;
    ] ;
    sh:property [
        sh:path op:verificationDomain ;
        sh:class op:VerificationDomain ;
    ] ;
    sh:property [
        sh:path op:verifiedAtLevel ;
        sh:class op:WittLevelBinding ;
    ] ;
    sh:property [
        sh:path op:universallyValid ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] ;
    sh:property [
        sh:path op:validityKind ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class op:ValidityScopeKind ;
    ] ;
    sh:property [
        sh:path op:validKMin ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path op:validKMax ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] .

uor-sh:GroupShape
    a               sh:NodeShape ;
    sh:targetClass  op:Group ;
    rdfs:label      "GroupShape" ;
    sh:property [
        sh:path op:generatedBy ;
        sh:class op:Operation ;
    ] ;
    sh:property [
        sh:path op:order ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:positiveInteger ;
    ] .

uor-sh:DihedralGroupShape
    a               sh:NodeShape ;
    sh:targetClass  op:DihedralGroup ;
    rdfs:label      "DihedralGroupShape" .

uor-sh:VerificationDomainShape
    a               sh:NodeShape ;
    sh:targetClass  op:VerificationDomain ;
    rdfs:label      "VerificationDomainShape" ;
    sh:property [
        sh:path op:enumVariant ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class op:VerificationDomain ;
    ] .

uor-sh:GeometricCharacterShape
    a               sh:NodeShape ;
    sh:targetClass  op:GeometricCharacter ;
    rdfs:label      "GeometricCharacterShape" .

uor-sh:WittLevelBindingShape
    a               sh:NodeShape ;
    sh:targetClass  op:WittLevelBinding ;
    rdfs:label      "WittLevelBindingShape" ;
    sh:property [
        sh:path op:bindingLevel ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:WittLevel ;
    ] .

uor-sh:QuantumThermodynamicDomainShape
    a               sh:NodeShape ;
    sh:targetClass  op:QuantumThermodynamicDomain ;
    rdfs:label      "QuantumThermodynamicDomainShape" .

uor-sh:ValidityScopeKindShape
    a               sh:NodeShape ;
    sh:targetClass  op:ValidityScopeKind ;
    rdfs:label      "ValidityScopeKindShape" .

uor-sh:ComposedOperationShape
    a               sh:NodeShape ;
    sh:targetClass  op:ComposedOperation ;
    rdfs:label      "ComposedOperationShape" ;
    sh:property [
        sh:path op:composedOfOps ;
        sh:class op:Operation ;
    ] ;
    sh:property [
        sh:path op:operatorDomainType ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class type:TypeDefinition ;
    ] ;
    sh:property [
        sh:path op:operatorRangeType ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class type:TypeDefinition ;
    ] ;
    sh:property [
        sh:path op:operatorComplexity ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:string ;
    ] ;
    sh:property [
        sh:path op:operatorIdempotent ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] ;
    sh:property [
        sh:path op:composedOperatorCount ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path op:isInvolutory ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] ;
    sh:property [
        sh:path op:convergenceGuarantee ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:TermExpression ;
    ] .

uor-sh:DispatchOperationShape
    a               sh:NodeShape ;
    sh:targetClass  op:DispatchOperation ;
    rdfs:label      "DispatchOperationShape" ;
    sh:property [
        sh:path op:dispatchSource ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class op:Operation ;
    ] ;
    sh:property [
        sh:path op:dispatchTarget ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class op:Operation ;
    ] .

uor-sh:InferenceOperationShape
    a               sh:NodeShape ;
    sh:targetClass  op:InferenceOperation ;
    rdfs:label      "InferenceOperationShape" ;
    sh:property [
        sh:path op:inferenceSource ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class op:Operation ;
    ] ;
    sh:property [
        sh:path op:inferenceTarget ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class op:Operation ;
    ] ;
    sh:property [
        sh:path op:inferencePipeline ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class op:Operation ;
    ] .

uor-sh:AccumulationOperationShape
    a               sh:NodeShape ;
    sh:targetClass  op:AccumulationOperation ;
    rdfs:label      "AccumulationOperationShape" ;
    sh:property [
        sh:path op:accumulationBase ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:TermExpression ;
    ] ;
    sh:property [
        sh:path op:accumulationBinding ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:TermExpression ;
    ] .

uor-sh:LeasePartitionOperationShape
    a               sh:NodeShape ;
    sh:targetClass  op:LeasePartitionOperation ;
    rdfs:label      "LeasePartitionOperationShape" ;
    sh:property [
        sh:path op:leaseSource ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class op:Operation ;
    ] ;
    sh:property [
        sh:path op:leaseFactor ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class op:Operation ;
    ] ;
    sh:property [
        sh:path op:leasePartitionCount ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] .

uor-sh:SessionCompositionOperationShape
    a               sh:NodeShape ;
    sh:targetClass  op:SessionCompositionOperation ;
    rdfs:label      "SessionCompositionOperationShape" ;
    sh:property [
        sh:path op:compositionLeftSession ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class op:Operation ;
    ] ;
    sh:property [
        sh:path op:compositionRightSession ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class op:Operation ;
    ] .

uor-sh:GroupPresentationShape
    a               sh:NodeShape ;
    sh:targetClass  op:GroupPresentation ;
    rdfs:label      "GroupPresentationShape" .

# ── query/ namespace (7) ─────────────────────────

uor-sh:QueryShape
    a               sh:NodeShape ;
    sh:targetClass  query:Query ;
    rdfs:label      "QueryShape" ;
    sh:property [
        sh:path query:inputType ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class owl:Class ;
    ] ;
    sh:property [
        sh:path query:outputType ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class owl:Class ;
    ] .

uor-sh:CoordinateQueryShape
    a               sh:NodeShape ;
    sh:targetClass  query:CoordinateQuery ;
    rdfs:label      "CoordinateQueryShape" ;
    sh:property [
        sh:path query:hasTriadProjection ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class query:TriadProjection ;
    ] .

uor-sh:MetricQueryShape
    a               sh:NodeShape ;
    sh:targetClass  query:MetricQuery ;
    rdfs:label      "MetricQueryShape" .

uor-sh:RepresentationQueryShape
    a               sh:NodeShape ;
    sh:targetClass  query:RepresentationQuery ;
    rdfs:label      "RepresentationQueryShape" .

uor-sh:RelationQueryShape
    a               sh:NodeShape ;
    sh:targetClass  query:RelationQuery ;
    rdfs:label      "RelationQueryShape" ;
    sh:property [
        sh:path query:sourceAddress ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class u:Element ;
    ] ;
    sh:property [
        sh:path query:relationType ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class type:Constraint ;
    ] ;
    sh:property [
        sh:path query:targetSite ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class partition:FreeRank ;
    ] ;
    sh:property [
        sh:path query:groundingMap ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class morphism:GroundingMap ;
    ] ;
    sh:property [
        sh:path query:projectionMap ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class morphism:ProjectionMap ;
    ] ;
    sh:property [
        sh:path query:sessionContext ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class state:Context ;
    ] .

uor-sh:TriadProjectionShape
    a               sh:NodeShape ;
    sh:targetClass  query:TriadProjection ;
    rdfs:label      "TriadProjectionShape" .

uor-sh:SessionQueryShape
    a               sh:NodeShape ;
    sh:targetClass  query:SessionQuery ;
    rdfs:label      "SessionQueryShape" ;
    sh:property [
        sh:path query:sessionMembership ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class state:Session ;
    ] .

# ── resolver/ namespace (26) ──────────────────────

uor-sh:ResolverShape
    a               sh:NodeShape ;
    sh:targetClass  resolver:Resolver ;
    rdfs:label      "ResolverShape" ;
    sh:property [
        sh:path resolver:inputType ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class type:TypeDefinition ;
    ] ;
    sh:property [
        sh:path resolver:outputType ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class partition:Partition ;
    ] ;
    sh:property [
        sh:path resolver:strategy ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:TermExpression ;
    ] ;
    sh:property [
        sh:path resolver:resolutionState ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class resolver:ResolutionState ;
    ] ;
    sh:property [
        sh:path resolver:hasComplexityClass ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class resolver:ComplexityClass ;
    ] ;
    sh:property [
        sh:path resolver:dispatchTable ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class predicate:DispatchTable ;
    ] ;
    sh:property [
        sh:path resolver:resolverPredicate ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class predicate:TypePredicate ;
    ] .

uor-sh:DihedralFactorizationResolverShape
    a               sh:NodeShape ;
    sh:targetClass  resolver:DihedralFactorizationResolver ;
    rdfs:label      "DihedralFactorizationResolverShape" .

uor-sh:CanonicalFormResolverShape
    a               sh:NodeShape ;
    sh:targetClass  resolver:CanonicalFormResolver ;
    rdfs:label      "CanonicalFormResolverShape" .

uor-sh:EvaluationResolverShape
    a               sh:NodeShape ;
    sh:targetClass  resolver:EvaluationResolver ;
    rdfs:label      "EvaluationResolverShape" .

uor-sh:ResolutionStateShape
    a               sh:NodeShape ;
    sh:targetClass  resolver:ResolutionState ;
    rdfs:label      "ResolutionStateShape" ;
    sh:property [
        sh:path resolver:isComplete ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] ;
    sh:property [
        sh:path resolver:iterationCount ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path resolver:siteDeficit ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class partition:FreeRank ;
    ] ;
    sh:property [
        sh:path resolver:suggestion ;
        sh:class resolver:RefinementSuggestion ;
    ] ;
    sh:property [
        sh:path resolver:convergenceRate ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:decimal ;
    ] ;
    sh:property [
        sh:path resolver:cechNerve ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class resolver:CechNerve ;
    ] ;
    sh:property [
        sh:path resolver:residualEntropy ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:decimal ;
    ] ;
    sh:property [
        sh:path resolver:topologicallyComplete ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] ;
    sh:property [
        sh:path resolver:nerveEulerCharacteristic ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:integer ;
    ] ;
    sh:property [
        sh:path resolver:guidingJacobian ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class observable:Jacobian ;
    ] .

uor-sh:RefinementSuggestionShape
    a               sh:NodeShape ;
    sh:targetClass  resolver:RefinementSuggestion ;
    rdfs:label      "RefinementSuggestionShape" ;
    sh:property [
        sh:path resolver:suggestedAxis ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class type:MetricAxis ;
    ] ;
    sh:property [
        sh:path resolver:suggestedClass ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class owl:Class ;
    ] ;
    sh:property [
        sh:path resolver:targetSites ;
        sh:class partition:SiteIndex ;
    ] .

uor-sh:ComplexityClassShape
    a               sh:NodeShape ;
    sh:targetClass  resolver:ComplexityClass ;
    rdfs:label      "ComplexityClassShape" .

uor-sh:CechNerveShape
    a               sh:NodeShape ;
    sh:targetClass  resolver:CechNerve ;
    rdfs:label      "CechNerveShape" .

uor-sh:CompletenessResolverShape
    a               sh:NodeShape ;
    sh:targetClass  resolver:CompletenessResolver ;
    rdfs:label      "CompletenessResolverShape" ;
    sh:property [
        sh:path resolver:completenessTarget ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class type:CompletenessCandidate ;
    ] .

uor-sh:WittLevelResolverShape
    a               sh:NodeShape ;
    sh:targetClass  resolver:WittLevelResolver ;
    rdfs:label      "WittLevelResolverShape" ;
    sh:property [
        sh:path resolver:quantumLevel ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:WittLevel ;
    ] .

uor-sh:SessionResolverShape
    a               sh:NodeShape ;
    sh:targetClass  resolver:SessionResolver ;
    rdfs:label      "SessionResolverShape" ;
    sh:property [
        sh:path resolver:sessionAccumulator ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class state:BindingAccumulator ;
    ] ;
    sh:property [
        sh:path resolver:executionPolicy ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class resolver:ExecutionPolicy ;
    ] .

uor-sh:TypeSynthesisResolverShape
    a               sh:NodeShape ;
    sh:targetClass  resolver:TypeSynthesisResolver ;
    rdfs:label      "TypeSynthesisResolverShape" ;
    sh:property [
        sh:path resolver:synthesisGoal ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class type:TypeSynthesisGoal ;
    ] .

uor-sh:ConstraintSearchStateShape
    a               sh:NodeShape ;
    sh:targetClass  resolver:ConstraintSearchState ;
    rdfs:label      "ConstraintSearchStateShape" ;
    sh:property [
        sh:path resolver:exploredCount ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path resolver:currentCandidate ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class type:ConstrainedType ;
    ] .

uor-sh:IncrementalCompletenessResolverShape
    a               sh:NodeShape ;
    sh:targetClass  resolver:IncrementalCompletenessResolver ;
    rdfs:label      "IncrementalCompletenessResolverShape" ;
    sh:property [
        sh:path resolver:liftTarget ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class type:WittLift ;
    ] .

uor-sh:LiftRefinementSuggestionShape
    a               sh:NodeShape ;
    sh:targetClass  resolver:LiftRefinementSuggestion ;
    rdfs:label      "LiftRefinementSuggestionShape" ;
    sh:property [
        sh:path resolver:liftSitePosition ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class partition:SiteIndex ;
    ] ;
    sh:property [
        sh:path resolver:obstructionClass ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class observable:LiftObstructionClass ;
    ] .

uor-sh:MonodromyResolverShape
    a               sh:NodeShape ;
    sh:targetClass  resolver:MonodromyResolver ;
    rdfs:label      "MonodromyResolverShape" ;
    sh:property [
        sh:path resolver:monodromyTarget ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class type:ConstrainedType ;
    ] ;
    sh:property [
        sh:path resolver:holonomyResult ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class observable:HolonomyGroup ;
    ] .

uor-sh:JacobianGuidedResolverShape
    a               sh:NodeShape ;
    sh:targetClass  resolver:JacobianGuidedResolver ;
    rdfs:label      "JacobianGuidedResolverShape" .

uor-sh:SuperpositionResolverShape
    a               sh:NodeShape ;
    sh:targetClass  resolver:SuperpositionResolver ;
    rdfs:label      "SuperpositionResolverShape" ;
    sh:property [
        sh:path resolver:amplitudeVector ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:decimal ;
    ] .

uor-sh:GroundingAwareResolverShape
    a               sh:NodeShape ;
    sh:targetClass  resolver:GroundingAwareResolver ;
    rdfs:label      "GroundingAwareResolverShape" ;
    sh:property [
        sh:path resolver:usedGrounding ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] .

uor-sh:GeodesicValidatorShape
    a               sh:NodeShape ;
    sh:targetClass  resolver:GeodesicValidator ;
    rdfs:label      "GeodesicValidatorShape" ;
    sh:property [
        sh:path resolver:validateGeodesic ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class trace:GeodesicTrace ;
    ] .

uor-sh:MeasurementResolverShape
    a               sh:NodeShape ;
    sh:targetClass  resolver:MeasurementResolver ;
    rdfs:label      "MeasurementResolverShape" ;
    sh:property [
        sh:path resolver:collapseAmplitude ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:decimal ;
    ] ;
    sh:property [
        sh:path resolver:collapsedSite ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path resolver:measurementOutcome ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path resolver:priorAmplitudeVector ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:decimal ;
    ] .

uor-sh:TowerCompletenessResolverShape
    a               sh:NodeShape ;
    sh:targetClass  resolver:TowerCompletenessResolver ;
    rdfs:label      "TowerCompletenessResolverShape" ;
    sh:property [
        sh:path resolver:towerSourceLevel ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:WittLevel ;
    ] ;
    sh:property [
        sh:path resolver:towerTargetLevel ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:WittLevel ;
    ] ;
    sh:property [
        sh:path resolver:currentChain ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class type:LiftChain ;
    ] ;
    sh:property [
        sh:path resolver:towerStepResolver ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class resolver:IncrementalCompletenessResolver ;
    ] .

uor-sh:ExecutionPolicyShape
    a               sh:NodeShape ;
    sh:targetClass  resolver:ExecutionPolicy ;
    rdfs:label      "ExecutionPolicyShape" .

uor-sh:ExecutionPolicyKindShape
    a               sh:NodeShape ;
    sh:targetClass  resolver:ExecutionPolicyKind ;
    rdfs:label      "ExecutionPolicyKindShape" .

uor-sh:HomotopyResolverShape
    a               sh:NodeShape ;
    sh:targetClass  resolver:HomotopyResolver ;
    rdfs:label      "HomotopyResolverShape" ;
    sh:property [
        sh:path resolver:homotopyTarget ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class resolver:CechNerve ;
    ] ;
    sh:property [
        sh:path resolver:homotopyResult ;
        sh:class observable:HomotopyGroup ;
    ] .

uor-sh:ModuliResolverShape
    a               sh:NodeShape ;
    sh:targetClass  resolver:ModuliResolver ;
    rdfs:label      "ModuliResolverShape" ;
    sh:property [
        sh:path resolver:moduliTarget ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class type:CompleteType ;
    ] ;
    sh:property [
        sh:path resolver:moduliDeformation ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class homology:DeformationComplex ;
    ] .

# ── type/ namespace (39) ──────────────────────────

uor-sh:TypeDefinitionShape
    a               sh:NodeShape ;
    sh:targetClass  type:TypeDefinition ;
    rdfs:label      "TypeDefinitionShape" ;
    sh:property [
        sh:path type:contentAddress ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class u:Element ;
    ] .

uor-sh:PrimitiveTypeShape
    a               sh:NodeShape ;
    sh:targetClass  type:PrimitiveType ;
    rdfs:label      "PrimitiveTypeShape" ;
    sh:property [
        sh:path type:bitWidth ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:positiveInteger ;
    ] .

uor-sh:ProductTypeShape
    a               sh:NodeShape ;
    sh:targetClass  type:ProductType ;
    rdfs:label      "ProductTypeShape" ;
    sh:property [
        sh:path type:component ;
        sh:class type:TypeDefinition ;
    ] .

uor-sh:SumTypeShape
    a               sh:NodeShape ;
    sh:targetClass  type:SumType ;
    rdfs:label      "SumTypeShape" .

uor-sh:ConstrainedTypeShape
    a               sh:NodeShape ;
    sh:targetClass  type:ConstrainedType ;
    rdfs:label      "ConstrainedTypeShape" ;
    sh:property [
        sh:path type:baseType ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class type:TypeDefinition ;
    ] ;
    sh:property [
        sh:path type:hasConstraint ;
        sh:class type:Constraint ;
    ] ;
    sh:property [
        sh:path type:holonomyGroup ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class observable:HolonomyGroup ;
    ] ;
    sh:property [
        sh:path type:monodromyClass ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class observable:MonodromyClass ;
    ] ;
    sh:property [
        sh:path type:holonomyClassified ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] .

uor-sh:ConstraintShape
    a               sh:NodeShape ;
    sh:targetClass  type:Constraint ;
    rdfs:label      "ConstraintShape" ;
    sh:property [
        sh:path type:metricAxis ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class type:MetricAxis ;
    ] ;
    sh:property [
        sh:path type:pinsSites ;
        sh:class partition:SiteIndex ;
    ] ;
    sh:property [
        sh:path type:crossingCost ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] .

uor-sh:ResidueConstraintShape
    a               sh:NodeShape ;
    sh:targetClass  type:ResidueConstraint ;
    rdfs:label      "ResidueConstraintShape" ;
    sh:property [
        sh:path type:modulus ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:positiveInteger ;
    ] ;
    sh:property [
        sh:path type:residue ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] .

uor-sh:CarryConstraintShape
    a               sh:NodeShape ;
    sh:targetClass  type:CarryConstraint ;
    rdfs:label      "CarryConstraintShape" ;
    sh:property [
        sh:path type:carryPattern ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:Datum ;
    ] .

uor-sh:DepthConstraintShape
    a               sh:NodeShape ;
    sh:targetClass  type:DepthConstraint ;
    rdfs:label      "DepthConstraintShape" ;
    sh:property [
        sh:path type:minDepth ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path type:maxDepth ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] .

uor-sh:CompositeConstraintShape
    a               sh:NodeShape ;
    sh:targetClass  type:CompositeConstraint ;
    rdfs:label      "CompositeConstraintShape" ;
    sh:property [
        sh:path type:composedFrom ;
        sh:class type:Constraint ;
    ] .

uor-sh:HammingConstraintShape
    a               sh:NodeShape ;
    sh:targetClass  type:HammingConstraint ;
    rdfs:label      "HammingConstraintShape" ;
    sh:property [
        sh:path type:hammingBound ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] .

uor-sh:SiteConstraintShape
    a               sh:NodeShape ;
    sh:targetClass  type:SiteConstraint ;
    rdfs:label      "SiteConstraintShape" ;
    sh:property [
        sh:path type:siteIndex ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path type:siteValue ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:Datum ;
    ] .

uor-sh:AffineConstraintShape
    a               sh:NodeShape ;
    sh:targetClass  type:AffineConstraint ;
    rdfs:label      "AffineConstraintShape" ;
    sh:property [
        sh:path type:affineOffset ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:Datum ;
    ] ;
    sh:property [
        sh:path type:affineGenerator ;
        sh:class schema:Datum ;
    ] .

uor-sh:MetricAxisShape
    a               sh:NodeShape ;
    sh:targetClass  type:MetricAxis ;
    rdfs:label      "MetricAxisShape" .

uor-sh:CompleteTypeShape
    a               sh:NodeShape ;
    sh:targetClass  type:CompleteType ;
    rdfs:label      "CompleteTypeShape" .

uor-sh:CompletenessCandidateShape
    a               sh:NodeShape ;
    sh:targetClass  type:CompletenessCandidate ;
    rdfs:label      "CompletenessCandidateShape" ;
    sh:property [
        sh:path type:completenessCandidate ;
        sh:class type:ConstrainedType ;
    ] ;
    sh:property [
        sh:path type:candidateNerve ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class resolver:CechNerve ;
    ] .

uor-sh:CompletenessWitnessShape
    a               sh:NodeShape ;
    sh:targetClass  type:CompletenessWitness ;
    rdfs:label      "CompletenessWitnessShape" ;
    sh:property [
        sh:path type:witnessConstraint ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class type:Constraint ;
    ] ;
    sh:property [
        sh:path type:sitesClosed ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] .

uor-sh:TypeSynthesisGoalShape
    a               sh:NodeShape ;
    sh:targetClass  type:TypeSynthesisGoal ;
    rdfs:label      "TypeSynthesisGoalShape" ;
    sh:property [
        sh:path type:targetEulerCharacteristic ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:integer ;
    ] ;
    sh:property [
        sh:path type:targetBettiNumber ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path type:targetForbidden ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] .

uor-sh:TypeSynthesisResultShape
    a               sh:NodeShape ;
    sh:targetClass  type:TypeSynthesisResult ;
    rdfs:label      "TypeSynthesisResultShape" .

uor-sh:SynthesizedTypeShape
    a               sh:NodeShape ;
    sh:targetClass  type:SynthesizedType ;
    rdfs:label      "SynthesizedTypeShape" ;
    sh:property [
        sh:path type:synthesisResult ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class type:TypeSynthesisResult ;
    ] .

uor-sh:MinimalConstraintBasisShape
    a               sh:NodeShape ;
    sh:targetClass  type:MinimalConstraintBasis ;
    rdfs:label      "MinimalConstraintBasisShape" ;
    sh:property [
        sh:path type:basisConstraint ;
        sh:class type:Constraint ;
    ] ;
    sh:property [
        sh:path type:basisSize ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] .

uor-sh:WittLiftShape
    a               sh:NodeShape ;
    sh:targetClass  type:WittLift ;
    rdfs:label      "WittLiftShape" ;
    sh:property [
        sh:path type:liftBase ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class type:ConstrainedType ;
    ] ;
    sh:property [
        sh:path type:liftTargetLevel ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:WittLevel ;
    ] ;
    sh:property [
        sh:path type:liftObstruction ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class type:LiftObstruction ;
    ] .

uor-sh:LiftObstructionShape
    a               sh:NodeShape ;
    sh:targetClass  type:LiftObstruction ;
    rdfs:label      "LiftObstructionShape" ;
    sh:property [
        sh:path type:obstructionTrivial ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] ;
    sh:property [
        sh:path type:obstructionSite ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class partition:SiteIndex ;
    ] .

uor-sh:TwistedTypeShape
    a               sh:NodeShape ;
    sh:targetClass  type:TwistedType ;
    rdfs:label      "TwistedTypeShape" .

uor-sh:FlatTypeShape
    a               sh:NodeShape ;
    sh:targetClass  type:FlatType ;
    rdfs:label      "FlatTypeShape" .

uor-sh:SuperposedSiteStateShape
    a               sh:NodeShape ;
    sh:targetClass  type:SuperposedSiteState ;
    rdfs:label      "SuperposedSiteStateShape" ;
    sh:property [
        sh:path type:amplitude ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:decimal ;
    ] ;
    sh:property [
        sh:path type:normalizationVerified ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] .

uor-sh:ForbiddenSignatureShape
    a               sh:NodeShape ;
    sh:targetClass  type:ForbiddenSignature ;
    rdfs:label      "ForbiddenSignatureShape" .

uor-sh:CollapsedSiteStateShape
    a               sh:NodeShape ;
    sh:targetClass  type:CollapsedSiteState ;
    rdfs:label      "CollapsedSiteStateShape" ;
    sh:property [
        sh:path type:collapsedFrom ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class type:SuperposedSiteState ;
    ] ;
    sh:property [
        sh:path type:survivingAmplitude ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:decimal ;
    ] .

uor-sh:LiftChainShape
    a               sh:NodeShape ;
    sh:targetClass  type:LiftChain ;
    rdfs:label      "LiftChainShape" ;
    sh:property [
        sh:path type:liftSourceLevel ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:WittLevel ;
    ] ;
    sh:property [
        sh:path type:chainLength ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path type:chainStep ;
        sh:class type:WittLift ;
    ] ;
    sh:property [
        sh:path type:chainObstructionProfile ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class type:ObstructionChain ;
    ] ;
    sh:property [
        sh:path type:resolvedBasisSize ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] .

uor-sh:ObstructionChainShape
    a               sh:NodeShape ;
    sh:targetClass  type:ObstructionChain ;
    rdfs:label      "ObstructionChainShape" ;
    sh:property [
        sh:path type:obstructionAt ;
        sh:class type:LiftObstruction ;
    ] ;
    sh:property [
        sh:path type:obstructionCount ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path type:isFlat ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] .

uor-sh:ModuliSpaceShape
    a               sh:NodeShape ;
    sh:targetClass  type:ModuliSpace ;
    rdfs:label      "ModuliSpaceShape" ;
    sh:property [
        sh:path type:moduliWittLevel ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:WittLevel ;
    ] ;
    sh:property [
        sh:path type:moduliPoint ;
        sh:class type:CompleteType ;
    ] ;
    sh:property [
        sh:path type:moduliDimension ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] .

uor-sh:HolonomyStratumShape
    a               sh:NodeShape ;
    sh:targetClass  type:HolonomyStratum ;
    rdfs:label      "HolonomyStratumShape" ;
    sh:property [
        sh:path type:stratumHolonomyClass ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class observable:MonodromyClass ;
    ] ;
    sh:property [
        sh:path type:stratumCodimension ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path type:stratumModuli ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class type:ModuliSpace ;
    ] .

uor-sh:DeformationFamilyShape
    a               sh:NodeShape ;
    sh:targetClass  type:DeformationFamily ;
    rdfs:label      "DeformationFamilyShape" ;
    sh:property [
        sh:path type:familyParameter ;
        sh:class type:CompleteType ;
    ] ;
    sh:property [
        sh:path type:familyPreservesCompleteness ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] .

uor-sh:VersalDeformationShape
    a               sh:NodeShape ;
    sh:targetClass  type:VersalDeformation ;
    rdfs:label      "VersalDeformationShape" ;
    sh:property [
        sh:path type:versalBase ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class type:CompleteType ;
    ] ;
    sh:property [
        sh:path type:versalDimension ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] .

uor-sh:ModuliTowerMapShape
    a               sh:NodeShape ;
    sh:targetClass  type:ModuliTowerMap ;
    rdfs:label      "ModuliTowerMapShape" ;
    sh:property [
        sh:path type:towerMapSource ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class type:ModuliSpace ;
    ] .

uor-sh:GaloisConnectionShape
    a               sh:NodeShape ;
    sh:targetClass  type:GaloisConnection ;
    rdfs:label      "GaloisConnectionShape" ;
    sh:property [
        sh:path type:upperAdjoint ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:TermExpression ;
    ] ;
    sh:property [
        sh:path type:lowerAdjoint ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:TermExpression ;
    ] ;
    sh:property [
        sh:path type:fixpointCondition ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:TermExpression ;
    ] ;
    sh:property [
        sh:path type:refinementDirection ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path type:galoisClosureProperty ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:TermExpression ;
    ] ;
    sh:property [
        sh:path type:galoisInteriorProperty ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:TermExpression ;
    ] .

uor-sh:TypeInclusionShape
    a               sh:NodeShape ;
    sh:targetClass  type:TypeInclusion ;
    rdfs:label      "TypeInclusionShape" ;
    sh:property [
        sh:path type:inclusionSource ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class type:ConstrainedType ;
    ] ;
    sh:property [
        sh:path type:inclusionTarget ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class type:ConstrainedType ;
    ] ;
    sh:property [
        sh:path type:inclusionWitness ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] .

uor-sh:VarianceAnnotationShape
    a               sh:NodeShape ;
    sh:targetClass  type:VarianceAnnotation ;
    rdfs:label      "VarianceAnnotationShape" .

uor-sh:SubtypingLatticeShape
    a               sh:NodeShape ;
    sh:targetClass  type:SubtypingLattice ;
    rdfs:label      "SubtypingLatticeShape" ;
    sh:property [
        sh:path type:latticeDepth ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] .

# ── partition/ namespace (11) ─────────────────────

uor-sh:PartitionShape
    a               sh:NodeShape ;
    sh:targetClass  partition:Partition ;
    rdfs:label      "PartitionShape" ;
    sh:property [
        sh:path partition:irreducibles ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class partition:IrreducibleSet ;
    ] ;
    sh:property [
        sh:path partition:reducibles ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class partition:ReducibleSet ;
    ] ;
    sh:property [
        sh:path partition:units ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class partition:UnitGroup ;
    ] ;
    sh:property [
        sh:path partition:exterior ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class partition:Complement ;
    ] ;
    sh:property [
        sh:path partition:density ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:decimal ;
    ] ;
    sh:property [
        sh:path partition:sourceType ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class type:TypeDefinition ;
    ] ;
    sh:property [
        sh:path partition:wittLength ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:positiveInteger ;
    ] ;
    sh:property [
        sh:path partition:siteBudget ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class partition:FreeRank ;
    ] ;
    sh:property [
        sh:path partition:isExhaustive ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] .

uor-sh:ComponentShape
    a               sh:NodeShape ;
    sh:targetClass  partition:Component ;
    rdfs:label      "ComponentShape" ;
    sh:property [
        sh:path partition:member ;
        sh:class schema:Datum ;
    ] ;
    sh:property [
        sh:path partition:cardinality ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] .

uor-sh:IrreducibleSetShape
    a               sh:NodeShape ;
    sh:targetClass  partition:IrreducibleSet ;
    rdfs:label      "IrreducibleSetShape" .

uor-sh:ReducibleSetShape
    a               sh:NodeShape ;
    sh:targetClass  partition:ReducibleSet ;
    rdfs:label      "ReducibleSetShape" .

uor-sh:UnitGroupShape
    a               sh:NodeShape ;
    sh:targetClass  partition:UnitGroup ;
    rdfs:label      "UnitGroupShape" .

uor-sh:ComplementShape
    a               sh:NodeShape ;
    sh:targetClass  partition:Complement ;
    rdfs:label      "ComplementShape" ;
    sh:property [
        sh:path partition:exteriorCriteria ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:TermExpression ;
    ] .

uor-sh:SiteIndexShape
    a               sh:NodeShape ;
    sh:targetClass  partition:SiteIndex ;
    rdfs:label      "SiteIndexShape" ;
    sh:property [
        sh:path partition:sitePosition ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path partition:siteState ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path partition:ancillaSite ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class partition:SiteIndex ;
    ] .

uor-sh:FreeRankShape
    a               sh:NodeShape ;
    sh:targetClass  partition:FreeRank ;
    rdfs:label      "FreeRankShape" ;
    sh:property [
        sh:path partition:totalSites ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path partition:pinnedCount ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path partition:freeRank ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path partition:isClosed ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] ;
    sh:property [
        sh:path partition:hasSite ;
        sh:class partition:SiteIndex ;
    ] ;
    sh:property [
        sh:path partition:hasBinding ;
        sh:class partition:SiteBinding ;
    ] ;
    sh:property [
        sh:path partition:reversibleStrategy ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] .

uor-sh:SiteBindingShape
    a               sh:NodeShape ;
    sh:targetClass  partition:SiteBinding ;
    rdfs:label      "SiteBindingShape" ;
    sh:property [
        sh:path partition:pinnedBy ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class type:Constraint ;
    ] ;
    sh:property [
        sh:path partition:pinsCoordinate ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class partition:SiteIndex ;
    ] .

uor-sh:PartitionProductShape
    a               sh:NodeShape ;
    sh:targetClass  partition:PartitionProduct ;
    rdfs:label      "PartitionProductShape" ;
    sh:property [
        sh:path partition:leftFactor ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class partition:Partition ;
    ] ;
    sh:property [
        sh:path partition:rightFactor ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class partition:Partition ;
    ] .

uor-sh:PartitionCoproductShape
    a               sh:NodeShape ;
    sh:targetClass  partition:PartitionCoproduct ;
    rdfs:label      "PartitionCoproductShape" ;
    sh:property [
        sh:path partition:leftSummand ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class partition:Partition ;
    ] ;
    sh:property [
        sh:path partition:rightSummand ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class partition:Partition ;
    ] .

# ── observable/ namespace (50) ────────────────────

uor-sh:ObservableShape
    a               sh:NodeShape ;
    sh:targetClass  observable:Observable ;
    rdfs:label      "ObservableShape" ;
    sh:property [
        sh:path observable:value ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:decimal ;
    ] ;
    sh:property [
        sh:path observable:source ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class owl:Thing ;
    ] ;
    sh:property [
        sh:path observable:target ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class owl:Thing ;
    ] ;
    sh:property [
        sh:path observable:hasUnit ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class observable:MeasurementUnit ;
    ] .

uor-sh:StratumObservableShape
    a               sh:NodeShape ;
    sh:targetClass  observable:StratumObservable ;
    rdfs:label      "StratumObservableShape" .

uor-sh:MetricObservableShape
    a               sh:NodeShape ;
    sh:targetClass  observable:MetricObservable ;
    rdfs:label      "MetricObservableShape" .

uor-sh:PathObservableShape
    a               sh:NodeShape ;
    sh:targetClass  observable:PathObservable ;
    rdfs:label      "PathObservableShape" .

uor-sh:ReductionObservableShape
    a               sh:NodeShape ;
    sh:targetClass  observable:ReductionObservable ;
    rdfs:label      "ReductionObservableShape" .

uor-sh:CatastropheObservableShape
    a               sh:NodeShape ;
    sh:targetClass  observable:CatastropheObservable ;
    rdfs:label      "CatastropheObservableShape" ;
    sh:property [
        sh:path observable:phaseN ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:positiveInteger ;
    ] ;
    sh:property [
        sh:path observable:phaseG ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:positiveInteger ;
    ] ;
    sh:property [
        sh:path observable:onResonanceLine ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] ;
    sh:property [
        sh:path observable:phaseBoundaryType ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class observable:PhaseBoundaryType ;
    ] .

uor-sh:CurvatureObservableShape
    a               sh:NodeShape ;
    sh:targetClass  observable:CurvatureObservable ;
    rdfs:label      "CurvatureObservableShape" .

uor-sh:HolonomyObservableShape
    a               sh:NodeShape ;
    sh:targetClass  observable:HolonomyObservable ;
    rdfs:label      "HolonomyObservableShape" .

uor-sh:RingMetricShape
    a               sh:NodeShape ;
    sh:targetClass  observable:RingMetric ;
    rdfs:label      "RingMetricShape" .

uor-sh:HammingMetricShape
    a               sh:NodeShape ;
    sh:targetClass  observable:HammingMetric ;
    rdfs:label      "HammingMetricShape" .

uor-sh:IncompatibilityMetricShape
    a               sh:NodeShape ;
    sh:targetClass  observable:IncompatibilityMetric ;
    rdfs:label      "IncompatibilityMetricShape" .

uor-sh:StratumValueShape
    a               sh:NodeShape ;
    sh:targetClass  observable:StratumValue ;
    rdfs:label      "StratumValueShape" .

uor-sh:StratumDeltaShape
    a               sh:NodeShape ;
    sh:targetClass  observable:StratumDelta ;
    rdfs:label      "StratumDeltaShape" .

uor-sh:StratumTrajectoryShape
    a               sh:NodeShape ;
    sh:targetClass  observable:StratumTrajectory ;
    rdfs:label      "StratumTrajectoryShape" .

uor-sh:PathLengthShape
    a               sh:NodeShape ;
    sh:targetClass  observable:PathLength ;
    rdfs:label      "PathLengthShape" .

uor-sh:TotalVariationShape
    a               sh:NodeShape ;
    sh:targetClass  observable:TotalVariation ;
    rdfs:label      "TotalVariationShape" .

uor-sh:WindingNumberShape
    a               sh:NodeShape ;
    sh:targetClass  observable:WindingNumber ;
    rdfs:label      "WindingNumberShape" .

uor-sh:ReductionLengthShape
    a               sh:NodeShape ;
    sh:targetClass  observable:ReductionLength ;
    rdfs:label      "ReductionLengthShape" .

uor-sh:ReductionCountShape
    a               sh:NodeShape ;
    sh:targetClass  observable:ReductionCount ;
    rdfs:label      "ReductionCountShape" .

uor-sh:CatastropheThresholdShape
    a               sh:NodeShape ;
    sh:targetClass  observable:CatastropheThreshold ;
    rdfs:label      "CatastropheThresholdShape" .

uor-sh:CatastropheCountShape
    a               sh:NodeShape ;
    sh:targetClass  observable:CatastropheCount ;
    rdfs:label      "CatastropheCountShape" .

uor-sh:CommutatorShape
    a               sh:NodeShape ;
    sh:targetClass  observable:Commutator ;
    rdfs:label      "CommutatorShape" .

uor-sh:CurvatureFluxShape
    a               sh:NodeShape ;
    sh:targetClass  observable:CurvatureFlux ;
    rdfs:label      "CurvatureFluxShape" .

uor-sh:MonodromyShape
    a               sh:NodeShape ;
    sh:targetClass  observable:Monodromy ;
    rdfs:label      "MonodromyShape" ;
    sh:property [
        sh:path observable:monodromyLoop ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class observable:ClosedConstraintPath ;
    ] ;
    sh:property [
        sh:path observable:monodromyElement ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class observable:DihedralElement ;
    ] ;
    sh:property [
        sh:path observable:isTrivialMonodromy ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] .

uor-sh:ParallelTransportShape
    a               sh:NodeShape ;
    sh:targetClass  observable:ParallelTransport ;
    rdfs:label      "ParallelTransportShape" .

uor-sh:DihedralElementShape
    a               sh:NodeShape ;
    sh:targetClass  observable:DihedralElement ;
    rdfs:label      "DihedralElementShape" ;
    sh:property [
        sh:path observable:dihedralElementValue ;
        sh:class op:Operation ;
    ] ;
    sh:property [
        sh:path observable:isIdentityElement ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] ;
    sh:property [
        sh:path observable:elementOrder ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:positiveInteger ;
    ] ;
    sh:property [
        sh:path observable:rotationExponent ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path observable:reflectionBit ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] .

uor-sh:MeasurementUnitShape
    a               sh:NodeShape ;
    sh:targetClass  observable:MeasurementUnit ;
    rdfs:label      "MeasurementUnitShape" .

uor-sh:JacobianShape
    a               sh:NodeShape ;
    sh:targetClass  observable:Jacobian ;
    rdfs:label      "JacobianShape" ;
    sh:property [
        sh:path observable:sitePosition ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path observable:derivativeValue ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:decimal ;
    ] .

uor-sh:TopologicalObservableShape
    a               sh:NodeShape ;
    sh:targetClass  observable:TopologicalObservable ;
    rdfs:label      "TopologicalObservableShape" ;
    sh:property [
        sh:path observable:dimension ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] .

uor-sh:BettiNumberShape
    a               sh:NodeShape ;
    sh:targetClass  observable:BettiNumber ;
    rdfs:label      "BettiNumberShape" .

uor-sh:SpectralGapShape
    a               sh:NodeShape ;
    sh:targetClass  observable:SpectralGap ;
    rdfs:label      "SpectralGapShape" .

uor-sh:ThermoObservableShape
    a               sh:NodeShape ;
    sh:targetClass  observable:ThermoObservable ;
    rdfs:label      "ThermoObservableShape" ;
    sh:property [
        sh:path observable:hardnessEstimate ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:decimal ;
    ] .

uor-sh:ResidualEntropyShape
    a               sh:NodeShape ;
    sh:targetClass  observable:ResidualEntropy ;
    rdfs:label      "ResidualEntropyShape" .

uor-sh:LandauerCostShape
    a               sh:NodeShape ;
    sh:targetClass  observable:LandauerCost ;
    rdfs:label      "LandauerCostShape" .

uor-sh:ReductionEntropyShape
    a               sh:NodeShape ;
    sh:targetClass  observable:ReductionEntropy ;
    rdfs:label      "ReductionEntropyShape" .

uor-sh:SynthesisSignatureShape
    a               sh:NodeShape ;
    sh:targetClass  observable:SynthesisSignature ;
    rdfs:label      "SynthesisSignatureShape" ;
    sh:property [
        sh:path observable:realisedEuler ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:integer ;
    ] ;
    sh:property [
        sh:path observable:realisedBetti ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path observable:achievabilityStatus ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class observable:AchievabilityStatus ;
    ] ;
    sh:property [
        sh:path observable:isAchievable ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] ;
    sh:property [
        sh:path observable:isForbidden ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] ;
    sh:property [
        sh:path observable:achievabilityWitness ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class proof:Proof ;
    ] .

uor-sh:SpectralSequencePageShape
    a               sh:NodeShape ;
    sh:targetClass  observable:SpectralSequencePage ;
    rdfs:label      "SpectralSequencePageShape" ;
    sh:property [
        sh:path observable:pageIndex ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path observable:differentialIsZero ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] ;
    sh:property [
        sh:path observable:convergedAt ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path observable:postnikovTruncation ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class homology:PostnikovTruncation ;
    ] .

uor-sh:LiftObstructionClassShape
    a               sh:NodeShape ;
    sh:targetClass  observable:LiftObstructionClass ;
    rdfs:label      "LiftObstructionClassShape" ;
    sh:property [
        sh:path observable:obstructionClass ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class cohomology:CohomologyGroup ;
    ] .

uor-sh:MonodromyClassShape
    a               sh:NodeShape ;
    sh:targetClass  observable:MonodromyClass ;
    rdfs:label      "MonodromyClassShape" .

uor-sh:HolonomyGroupShape
    a               sh:NodeShape ;
    sh:targetClass  observable:HolonomyGroup ;
    rdfs:label      "HolonomyGroupShape" ;
    sh:property [
        sh:path observable:holonomyGroup ;
        sh:class observable:DihedralElement ;
    ] ;
    sh:property [
        sh:path observable:holonomyGroupOrder ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:positiveInteger ;
    ] .

uor-sh:ClosedConstraintPathShape
    a               sh:NodeShape ;
    sh:targetClass  observable:ClosedConstraintPath ;
    rdfs:label      "ClosedConstraintPathShape" ;
    sh:property [
        sh:path observable:pathLength ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path observable:pathConstraints ;
        sh:class type:Constraint ;
    ] .

uor-sh:PhaseBoundaryTypeShape
    a               sh:NodeShape ;
    sh:targetClass  observable:PhaseBoundaryType ;
    rdfs:label      "PhaseBoundaryTypeShape" .

uor-sh:AchievabilityStatusShape
    a               sh:NodeShape ;
    sh:targetClass  observable:AchievabilityStatus ;
    rdfs:label      "AchievabilityStatusShape" .

uor-sh:HomotopyGroupShape
    a               sh:NodeShape ;
    sh:targetClass  observable:HomotopyGroup ;
    rdfs:label      "HomotopyGroupShape" ;
    sh:property [
        sh:path observable:homotopyDimension ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path observable:homotopyRank ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path observable:homotopyBasepoint ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class type:Constraint ;
    ] .

uor-sh:HigherMonodromyShape
    a               sh:NodeShape ;
    sh:targetClass  observable:HigherMonodromy ;
    rdfs:label      "HigherMonodromyShape" ;
    sh:property [
        sh:path observable:higherMonodromyDimension ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] .

uor-sh:WhiteheadProductShape
    a               sh:NodeShape ;
    sh:targetClass  observable:WhiteheadProduct ;
    rdfs:label      "WhiteheadProductShape" ;
    sh:property [
        sh:path observable:whiteheadTrivial ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] .

uor-sh:StratificationRecordShape
    a               sh:NodeShape ;
    sh:targetClass  observable:StratificationRecord ;
    rdfs:label      "StratificationRecordShape" ;
    sh:property [
        sh:path observable:stratificationLevel ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:WittLevel ;
    ] ;
    sh:property [
        sh:path observable:stratificationStratum ;
        sh:class type:HolonomyStratum ;
    ] .

uor-sh:BaseMetricShape
    a               sh:NodeShape ;
    sh:targetClass  observable:BaseMetric ;
    rdfs:label      "BaseMetricShape" ;
    sh:property [
        sh:path observable:metricDomain ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:string ;
    ] ;
    sh:property [
        sh:path observable:metricRange ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:string ;
    ] ;
    sh:property [
        sh:path observable:metricComposition ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:TermExpression ;
    ] ;
    sh:property [
        sh:path observable:referencesClass ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class observable:Observable ;
    ] ;
    sh:property [
        sh:path observable:referencesIdentity ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class op:Identity ;
    ] ;
    sh:property [
        sh:path observable:metricUnit ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class observable:MeasurementUnit ;
    ] ;
    sh:property [
        sh:path observable:metricPrecision ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path observable:metricMonotonicity ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:TermExpression ;
    ] ;
    sh:property [
        sh:path observable:metricDecomposition ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:TermExpression ;
    ] ;
    sh:property [
        sh:path observable:metricTowerPosition ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path observable:metricComputationCost ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:TermExpression ;
    ] ;
    sh:property [
        sh:path observable:metricBound ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:TermExpression ;
    ] .

uor-sh:GroundingObservableShape
    a               sh:NodeShape ;
    sh:targetClass  observable:GroundingObservable ;
    rdfs:label      "GroundingObservableShape" ;
    sh:property [
        sh:path observable:saturationNumerator ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path observable:saturationDenominator ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:positiveInteger ;
    ] .

uor-sh:EulerCharacteristicObservableShape
    a               sh:NodeShape ;
    sh:targetClass  observable:EulerCharacteristicObservable ;
    rdfs:label      "EulerCharacteristicObservableShape" ;
    sh:property [
        sh:path observable:alternatingSum ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:TermExpression ;
    ] .

# ── carry/ namespace (5) ─────────────────────────

uor-sh:CarryChainShape
    a               sh:NodeShape ;
    sh:targetClass  carry:CarryChain ;
    rdfs:label      "CarryChainShape" ;
    sh:property [
        sh:path carry:chainLength ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path carry:generateMask ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path carry:propagateMask ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path carry:killMask ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] .

uor-sh:CarryEventShape
    a               sh:NodeShape ;
    sh:targetClass  carry:CarryEvent ;
    rdfs:label      "CarryEventShape" ;
    sh:property [
        sh:path carry:eventKind ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path carry:sitePosition ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] .

uor-sh:CarryProfileShape
    a               sh:NodeShape ;
    sh:targetClass  carry:CarryProfile ;
    rdfs:label      "CarryProfileShape" ;
    sh:property [
        sh:path carry:carryCount ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path carry:maxPropagationLength ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path carry:profileChain ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class carry:CarryChain ;
    ] .

uor-sh:EncodingConfigurationShape
    a               sh:NodeShape ;
    sh:targetClass  carry:EncodingConfiguration ;
    rdfs:label      "EncodingConfigurationShape" ;
    sh:property [
        sh:path carry:symbolSetSize ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:positiveInteger ;
    ] ;
    sh:property [
        sh:path carry:quantizationBits ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:positiveInteger ;
    ] ;
    sh:property [
        sh:path carry:encodingMap ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:TermExpression ;
    ] .

uor-sh:EncodingQualityShape
    a               sh:NodeShape ;
    sh:targetClass  carry:EncodingQuality ;
    rdfs:label      "EncodingQualityShape" ;
    sh:property [
        sh:path carry:meanDelta ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:decimal ;
    ] ;
    sh:property [
        sh:path carry:discriminationRatio ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:decimal ;
    ] ;
    sh:property [
        sh:path carry:isOptimalEncoding ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] .

# ── homology/ namespace (14) ──────────────────────

uor-sh:SimplexShape
    a               sh:NodeShape ;
    sh:targetClass  homology:Simplex ;
    rdfs:label      "SimplexShape" ;
    sh:property [
        sh:path homology:dimension ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:integer ;
    ] ;
    sh:property [
        sh:path homology:vertex ;
        sh:class type:Constraint ;
    ] ;
    sh:property [
        sh:path homology:vertexCount ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:positiveInteger ;
    ] ;
    sh:property [
        sh:path homology:isFaceOf ;
        sh:class homology:Simplex ;
    ] ;
    sh:property [
        sh:path homology:pinIntersection ;
        sh:class partition:SiteIndex ;
    ] .

uor-sh:SimplicialComplexShape
    a               sh:NodeShape ;
    sh:targetClass  homology:SimplicialComplex ;
    rdfs:label      "SimplicialComplexShape" ;
    sh:property [
        sh:path homology:hasSimplex ;
        sh:class homology:Simplex ;
    ] ;
    sh:property [
        sh:path homology:maxDimension ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:integer ;
    ] ;
    sh:property [
        sh:path homology:eulerCharacteristic ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:integer ;
    ] ;
    sh:property [
        sh:path homology:simplicialVertexCount ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] .

uor-sh:FaceMapShape
    a               sh:NodeShape ;
    sh:targetClass  homology:FaceMap ;
    rdfs:label      "FaceMapShape" ;
    sh:property [
        sh:path homology:removesVertex ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path homology:sourceSimplex ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class homology:Simplex ;
    ] ;
    sh:property [
        sh:path homology:targetFace ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class homology:Simplex ;
    ] .

uor-sh:ChainGroupShape
    a               sh:NodeShape ;
    sh:targetClass  homology:ChainGroup ;
    rdfs:label      "ChainGroupShape" ;
    sh:property [
        sh:path homology:degree ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:integer ;
    ] ;
    sh:property [
        sh:path homology:generatedBy ;
        sh:class homology:Simplex ;
    ] .

uor-sh:BoundaryOperatorShape
    a               sh:NodeShape ;
    sh:targetClass  homology:BoundaryOperator ;
    rdfs:label      "BoundaryOperatorShape" ;
    sh:property [
        sh:path homology:sourceGroup ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class homology:ChainGroup ;
    ] ;
    sh:property [
        sh:path homology:targetGroup ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class homology:ChainGroup ;
    ] ;
    sh:property [
        sh:path homology:satisfiesBoundarySquaredZero ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] .

uor-sh:ChainComplexShape
    a               sh:NodeShape ;
    sh:targetClass  homology:ChainComplex ;
    rdfs:label      "ChainComplexShape" ;
    sh:property [
        sh:path homology:hasChainGroup ;
        sh:class homology:ChainGroup ;
    ] ;
    sh:property [
        sh:path homology:hasBoundary ;
        sh:class homology:BoundaryOperator ;
    ] .

uor-sh:HomologyGroupShape
    a               sh:NodeShape ;
    sh:targetClass  homology:HomologyGroup ;
    rdfs:label      "HomologyGroupShape" ;
    sh:property [
        sh:path homology:homologyDegree ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:integer ;
    ] ;
    sh:property [
        sh:path homology:bettiNumber ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] .

uor-sh:NerveFunctorShape
    a               sh:NodeShape ;
    sh:targetClass  homology:NerveFunctor ;
    rdfs:label      "NerveFunctorShape" .

uor-sh:ChainFunctorShape
    a               sh:NodeShape ;
    sh:targetClass  homology:ChainFunctor ;
    rdfs:label      "ChainFunctorShape" .

uor-sh:KanComplexShape
    a               sh:NodeShape ;
    sh:targetClass  homology:KanComplex ;
    rdfs:label      "KanComplexShape" ;
    sh:property [
        sh:path homology:kanWitness ;
        sh:class homology:HornFiller ;
    ] .

uor-sh:HornFillerShape
    a               sh:NodeShape ;
    sh:targetClass  homology:HornFiller ;
    rdfs:label      "HornFillerShape" ;
    sh:property [
        sh:path homology:hornDimension ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path homology:hornPosition ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] .

uor-sh:PostnikovTruncationShape
    a               sh:NodeShape ;
    sh:targetClass  homology:PostnikovTruncation ;
    rdfs:label      "PostnikovTruncationShape" ;
    sh:property [
        sh:path homology:truncationLevel ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path homology:truncationSource ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class homology:KanComplex ;
    ] ;
    sh:property [
        sh:path homology:kInvariant ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class homology:KInvariant ;
    ] .

uor-sh:KInvariantShape
    a               sh:NodeShape ;
    sh:targetClass  homology:KInvariant ;
    rdfs:label      "KInvariantShape" ;
    sh:property [
        sh:path homology:kInvariantTrivial ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] .

uor-sh:DeformationComplexShape
    a               sh:NodeShape ;
    sh:targetClass  homology:DeformationComplex ;
    rdfs:label      "DeformationComplexShape" ;
    sh:property [
        sh:path homology:deformationBase ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class type:CompleteType ;
    ] ;
    sh:property [
        sh:path homology:tangentDimension ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path homology:obstructionDimension ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] .

# ── cohomology/ namespace (10) ────────────────────

uor-sh:CochainGroupShape
    a               sh:NodeShape ;
    sh:targetClass  cohomology:CochainGroup ;
    rdfs:label      "CochainGroupShape" ;
    sh:property [
        sh:path cohomology:cochainDegree ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:integer ;
    ] ;
    sh:property [
        sh:path cohomology:cochainRank ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path cohomology:dualOf ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class homology:ChainGroup ;
    ] .

uor-sh:CoboundaryOperatorShape
    a               sh:NodeShape ;
    sh:targetClass  cohomology:CoboundaryOperator ;
    rdfs:label      "CoboundaryOperatorShape" ;
    sh:property [
        sh:path cohomology:coboundarySource ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class cohomology:CochainGroup ;
    ] ;
    sh:property [
        sh:path cohomology:coboundaryTarget ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class cohomology:CochainGroup ;
    ] ;
    sh:property [
        sh:path cohomology:satisfiesCoboundarySquaredZero ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] .

uor-sh:CochainComplexShape
    a               sh:NodeShape ;
    sh:targetClass  cohomology:CochainComplex ;
    rdfs:label      "CochainComplexShape" ;
    sh:property [
        sh:path cohomology:hasCochainGroup ;
        sh:class cohomology:CochainGroup ;
    ] ;
    sh:property [
        sh:path cohomology:hasCoboundary ;
        sh:class cohomology:CoboundaryOperator ;
    ] .

uor-sh:CohomologyGroupShape
    a               sh:NodeShape ;
    sh:targetClass  cohomology:CohomologyGroup ;
    rdfs:label      "CohomologyGroupShape" ;
    sh:property [
        sh:path cohomology:cohomologyDegree ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:integer ;
    ] ;
    sh:property [
        sh:path cohomology:cohomologyRank ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] .

uor-sh:SheafShape
    a               sh:NodeShape ;
    sh:targetClass  cohomology:Sheaf ;
    rdfs:label      "SheafShape" ;
    sh:property [
        sh:path cohomology:sheafOver ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class homology:SimplicialComplex ;
    ] ;
    sh:property [
        sh:path cohomology:coefficientIn ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:Ring ;
    ] ;
    sh:property [
        sh:path cohomology:hasStalks ;
        sh:class cohomology:Stalk ;
    ] ;
    sh:property [
        sh:path cohomology:hasGlobalSection ;
        sh:class cohomology:Section ;
    ] .

uor-sh:StalkShape
    a               sh:NodeShape ;
    sh:targetClass  cohomology:Stalk ;
    rdfs:label      "StalkShape" ;
    sh:property [
        sh:path cohomology:stalkAt ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class homology:Simplex ;
    ] .

uor-sh:SectionShape
    a               sh:NodeShape ;
    sh:targetClass  cohomology:Section ;
    rdfs:label      "SectionShape" .

uor-sh:LocalSectionShape
    a               sh:NodeShape ;
    sh:targetClass  cohomology:LocalSection ;
    rdfs:label      "LocalSectionShape" .

uor-sh:RestrictionMapShape
    a               sh:NodeShape ;
    sh:targetClass  cohomology:RestrictionMap ;
    rdfs:label      "RestrictionMapShape" ;
    sh:property [
        sh:path cohomology:restrictsFrom ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class homology:Simplex ;
    ] ;
    sh:property [
        sh:path cohomology:restrictsTo ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class homology:Simplex ;
    ] .

uor-sh:GluingObstructionShape
    a               sh:NodeShape ;
    sh:targetClass  cohomology:GluingObstruction ;
    rdfs:label      "GluingObstructionShape" ;
    sh:property [
        sh:path cohomology:obstructionClass ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class cohomology:CohomologyGroup ;
    ] ;
    sh:property [
        sh:path cohomology:addressesSuggestion ;
        sh:class resolver:RefinementSuggestion ;
    ] .

# ── proof/ namespace (16) ─────────────────────────

uor-sh:ProofShape
    a               sh:NodeShape ;
    sh:targetClass  proof:Proof ;
    rdfs:label      "ProofShape" ;
    sh:property [
        sh:path proof:verified ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] ;
    sh:property [
        sh:path proof:timestamp ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:dateTime ;
    ] ;
    sh:property [
        sh:path proof:witness ;
        sh:class proof:WitnessData ;
    ] ;
    sh:property [
        sh:path proof:provesIdentity ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class op:Identity ;
    ] ;
    sh:property [
        sh:path proof:verifiedAtLevel ;
        sh:class schema:WittLevel ;
    ] ;
    sh:property [
        sh:path proof:strategy ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class proof:ProofStrategy ;
    ] ;
    sh:property [
        sh:path proof:dependsOn ;
        sh:class op:Identity ;
    ] ;
    sh:property [
        sh:path proof:formalDerivation ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class proof:DerivationTerm ;
    ] .

uor-sh:CoherenceProofShape
    a               sh:NodeShape ;
    sh:targetClass  proof:CoherenceProof ;
    rdfs:label      "CoherenceProofShape" .

uor-sh:ComputationCertificateShape
    a               sh:NodeShape ;
    sh:targetClass  proof:ComputationCertificate ;
    rdfs:label      "ComputationCertificateShape" ;
    sh:property [
        sh:path proof:atWittLevel ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:WittLevel ;
    ] .

uor-sh:AxiomaticDerivationShape
    a               sh:NodeShape ;
    sh:targetClass  proof:AxiomaticDerivation ;
    rdfs:label      "AxiomaticDerivationShape" ;
    sh:property [
        sh:path proof:universalScope ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] ;
    sh:property [
        sh:path proof:derivationWitness ;
        sh:class derivation:Derivation ;
    ] .

uor-sh:CriticalIdentityProofShape
    a               sh:NodeShape ;
    sh:targetClass  proof:CriticalIdentityProof ;
    rdfs:label      "CriticalIdentityProofShape" .

uor-sh:WitnessDataShape
    a               sh:NodeShape ;
    sh:targetClass  proof:WitnessData ;
    rdfs:label      "WitnessDataShape" ;
    sh:property [
        sh:path proof:x ;
        sh:datatype xsd:integer ;
    ] ;
    sh:property [
        sh:path proof:bnot_x ;
        sh:datatype xsd:integer ;
    ] ;
    sh:property [
        sh:path proof:neg_bnot_x ;
        sh:datatype xsd:integer ;
    ] ;
    sh:property [
        sh:path proof:succ_x ;
        sh:datatype xsd:integer ;
    ] ;
    sh:property [
        sh:path proof:holds ;
        sh:datatype xsd:boolean ;
    ] .

uor-sh:ImpossibilityWitnessShape
    a               sh:NodeShape ;
    sh:targetClass  proof:ImpossibilityWitness ;
    rdfs:label      "ImpossibilityWitnessShape" ;
    sh:property [
        sh:path proof:impossibilityReason ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:string ;
    ] ;
    sh:property [
        sh:path proof:impossibilityDomain ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class op:VerificationDomain ;
    ] ;
    sh:property [
        sh:path proof:achievabilityStatus ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class observable:AchievabilityStatus ;
    ] .

uor-sh:MorphospaceRecordShape
    a               sh:NodeShape ;
    sh:targetClass  proof:MorphospaceRecord ;
    rdfs:label      "MorphospaceRecordShape" ;
    sh:property [
        sh:path proof:boundaryType ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class observable:AchievabilityStatus ;
    ] .

uor-sh:MorphospaceBoundaryShape
    a               sh:NodeShape ;
    sh:targetClass  proof:MorphospaceBoundary ;
    rdfs:label      "MorphospaceBoundaryShape" ;
    sh:property [
        sh:path proof:morphospaceRecord ;
        sh:class proof:MorphospaceRecord ;
    ] .

uor-sh:InductiveProofShape
    a               sh:NodeShape ;
    sh:targetClass  proof:InductiveProof ;
    rdfs:label      "InductiveProofShape" ;
    sh:property [
        sh:path proof:baseCase ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class proof:Proof ;
    ] ;
    sh:property [
        sh:path proof:inductiveStep ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class proof:Proof ;
    ] ;
    sh:property [
        sh:path proof:validForKAtLeast ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] .

uor-sh:ProofStrategyShape
    a               sh:NodeShape ;
    sh:targetClass  proof:ProofStrategy ;
    rdfs:label      "ProofStrategyShape" .

uor-sh:DerivationTermShape
    a               sh:NodeShape ;
    sh:targetClass  proof:DerivationTerm ;
    rdfs:label      "DerivationTermShape" .

uor-sh:TacticApplicationShape
    a               sh:NodeShape ;
    sh:targetClass  proof:TacticApplication ;
    rdfs:label      "TacticApplicationShape" .

uor-sh:LemmaInvocationShape
    a               sh:NodeShape ;
    sh:targetClass  proof:LemmaInvocation ;
    rdfs:label      "LemmaInvocationShape" .

uor-sh:InductionStepShape
    a               sh:NodeShape ;
    sh:targetClass  proof:InductionStep ;
    rdfs:label      "InductionStepShape" .

uor-sh:ComputationStepShape
    a               sh:NodeShape ;
    sh:targetClass  proof:ComputationStep ;
    rdfs:label      "ComputationStepShape" .

# ── derivation/ namespace (8) ────────────────────

uor-sh:DerivationShape
    a               sh:NodeShape ;
    sh:targetClass  derivation:Derivation ;
    rdfs:label      "DerivationShape" ;
    sh:property [
        sh:path derivation:originalTerm ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:Term ;
    ] ;
    sh:property [
        sh:path derivation:canonicalTerm ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:Term ;
    ] ;
    sh:property [
        sh:path derivation:result ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:Datum ;
    ] ;
    sh:property [
        sh:path derivation:step ;
        sh:class derivation:RewriteStep ;
    ] ;
    sh:property [
        sh:path derivation:termMetrics ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class derivation:TermMetrics ;
    ] .

uor-sh:DerivationStepShape
    a               sh:NodeShape ;
    sh:targetClass  derivation:DerivationStep ;
    rdfs:label      "DerivationStepShape" .

uor-sh:RewriteStepShape
    a               sh:NodeShape ;
    sh:targetClass  derivation:RewriteStep ;
    rdfs:label      "RewriteStepShape" ;
    sh:property [
        sh:path derivation:from ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:Term ;
    ] ;
    sh:property [
        sh:path derivation:to ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:Term ;
    ] ;
    sh:property [
        sh:path derivation:hasRewriteRule ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class derivation:RewriteRule ;
    ] .

uor-sh:RefinementStepShape
    a               sh:NodeShape ;
    sh:targetClass  derivation:RefinementStep ;
    rdfs:label      "RefinementStepShape" ;
    sh:property [
        sh:path derivation:previousType ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class type:TypeDefinition ;
    ] ;
    sh:property [
        sh:path derivation:appliedConstraint ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class type:Constraint ;
    ] ;
    sh:property [
        sh:path derivation:refinedType ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class type:TypeDefinition ;
    ] ;
    sh:property [
        sh:path derivation:sitesClosed ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] .

uor-sh:RewriteRuleShape
    a               sh:NodeShape ;
    sh:targetClass  derivation:RewriteRule ;
    rdfs:label      "RewriteRuleShape" ;
    sh:property [
        sh:path derivation:groundedIn ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class op:Identity ;
    ] .

uor-sh:TermMetricsShape
    a               sh:NodeShape ;
    sh:targetClass  derivation:TermMetrics ;
    rdfs:label      "TermMetricsShape" ;
    sh:property [
        sh:path derivation:stepCount ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path derivation:termSize ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] .

uor-sh:SynthesisStepShape
    a               sh:NodeShape ;
    sh:targetClass  derivation:SynthesisStep ;
    rdfs:label      "SynthesisStepShape" ;
    sh:property [
        sh:path derivation:stepIndex ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path derivation:addedConstraint ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class type:Constraint ;
    ] ;
    sh:property [
        sh:path derivation:signatureBefore ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class observable:SynthesisSignature ;
    ] ;
    sh:property [
        sh:path derivation:signatureAfter ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class observable:SynthesisSignature ;
    ] .

uor-sh:SynthesisCheckpointShape
    a               sh:NodeShape ;
    sh:targetClass  derivation:SynthesisCheckpoint ;
    rdfs:label      "SynthesisCheckpointShape" ;
    sh:property [
        sh:path derivation:checkpointStep ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class derivation:SynthesisStep ;
    ] ;
    sh:property [
        sh:path derivation:checkpointState ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class resolver:ConstraintSearchState ;
    ] .

# ── trace/ namespace (7) ─────────────────────────

uor-sh:ComputationTraceShape
    a               sh:NodeShape ;
    sh:targetClass  trace:ComputationTrace ;
    rdfs:label      "ComputationTraceShape" ;
    sh:property [
        sh:path trace:input ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:Datum ;
    ] ;
    sh:property [
        sh:path trace:output ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:Datum ;
    ] ;
    sh:property [
        sh:path trace:step ;
        sh:class trace:ComputationStep ;
    ] ;
    sh:property [
        sh:path trace:monodromy ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class observable:DihedralElement ;
    ] ;
    sh:property [
        sh:path trace:certifiedBy ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class cert:Certificate ;
    ] ;
    sh:property [
        sh:path trace:residualEntropy ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class observable:ResidualEntropy ;
    ] ;
    sh:property [
        sh:path trace:isGeodesic ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] ;
    sh:property [
        sh:path trace:geodesicViolation ;
        sh:class trace:GeodesicViolation ;
    ] ;
    sh:property [
        sh:path trace:cumulativeEntropyCost ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:decimal ;
    ] ;
    sh:property [
        sh:path trace:adiabaticallyOrdered ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] ;
    sh:property [
        sh:path trace:measurementEvent ;
        sh:class trace:MeasurementEvent ;
    ] ;
    sh:property [
        sh:path trace:isAR1Ordered ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] ;
    sh:property [
        sh:path trace:isDC10Selected ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] .

uor-sh:ComputationStepShape
    a               sh:NodeShape ;
    sh:targetClass  trace:ComputationStep ;
    rdfs:label      "ComputationStepShape" ;
    sh:property [
        sh:path trace:from ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:Datum ;
    ] ;
    sh:property [
        sh:path trace:to ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:Datum ;
    ] ;
    sh:property [
        sh:path trace:operation ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class op:Operation ;
    ] ;
    sh:property [
        sh:path trace:index ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path trace:stepEntropyCost ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:decimal ;
    ] ;
    sh:property [
        sh:path trace:jacobianAtStep ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:decimal ;
    ] .

uor-sh:TraceMetricsShape
    a               sh:NodeShape ;
    sh:targetClass  trace:TraceMetrics ;
    rdfs:label      "TraceMetricsShape" ;
    sh:property [
        sh:path trace:stepCount ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path trace:totalRingDistance ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path trace:totalHammingDistance ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] .

uor-sh:GeodesicTraceShape
    a               sh:NodeShape ;
    sh:targetClass  trace:GeodesicTrace ;
    rdfs:label      "GeodesicTraceShape" ;
    sh:property [
        sh:path trace:geodesicCertificate ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class cert:GeodesicCertificate ;
    ] .

uor-sh:GeodesicViolationShape
    a               sh:NodeShape ;
    sh:targetClass  trace:GeodesicViolation ;
    rdfs:label      "GeodesicViolationShape" ;
    sh:property [
        sh:path trace:violationReason ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:string ;
    ] .

uor-sh:MeasurementEventShape
    a               sh:NodeShape ;
    sh:targetClass  trace:MeasurementEvent ;
    rdfs:label      "MeasurementEventShape" ;
    sh:property [
        sh:path trace:preCollapseEntropy ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:decimal ;
    ] ;
    sh:property [
        sh:path trace:postCollapseLandauerCost ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:decimal ;
    ] ;
    sh:property [
        sh:path trace:collapseStep ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path trace:amplitudeVector ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:decimal ;
    ] .

uor-sh:MeasurementOutcomeShape
    a               sh:NodeShape ;
    sh:targetClass  trace:MeasurementOutcome ;
    rdfs:label      "MeasurementOutcomeShape" ;
    sh:property [
        sh:path trace:outcomeValue ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path trace:outcomeProbability ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:decimal ;
    ] .

# ── cert/ namespace (13) ──────────────────────────

uor-sh:CertificateShape
    a               sh:NodeShape ;
    sh:targetClass  cert:Certificate ;
    rdfs:label      "CertificateShape" ;
    sh:property [
        sh:path cert:method ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class proof:ProofStrategy ;
    ] ;
    sh:property [
        sh:path cert:verified ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] ;
    sh:property [
        sh:path cert:wittLength ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:positiveInteger ;
    ] ;
    sh:property [
        sh:path cert:timestamp ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:dateTime ;
    ] ;
    sh:property [
        sh:path cert:certifies ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class owl:Thing ;
    ] .

uor-sh:TransformCertificateShape
    a               sh:NodeShape ;
    sh:targetClass  cert:TransformCertificate ;
    rdfs:label      "TransformCertificateShape" ;
    sh:property [
        sh:path cert:transformType ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:TermExpression ;
    ] .

uor-sh:IsometryCertificateShape
    a               sh:NodeShape ;
    sh:targetClass  cert:IsometryCertificate ;
    rdfs:label      "IsometryCertificateShape" .

uor-sh:InvolutionCertificateShape
    a               sh:NodeShape ;
    sh:targetClass  cert:InvolutionCertificate ;
    rdfs:label      "InvolutionCertificateShape" ;
    sh:property [
        sh:path cert:operation ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class op:Operation ;
    ] .

uor-sh:CompletenessCertificateShape
    a               sh:NodeShape ;
    sh:targetClass  cert:CompletenessCertificate ;
    rdfs:label      "CompletenessCertificateShape" ;
    sh:property [
        sh:path cert:certifiedType ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class type:CompleteType ;
    ] ;
    sh:property [
        sh:path cert:auditTrail ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class cert:CompletenessAuditTrail ;
    ] .

uor-sh:CompletenessAuditTrailShape
    a               sh:NodeShape ;
    sh:targetClass  cert:CompletenessAuditTrail ;
    rdfs:label      "CompletenessAuditTrailShape" ;
    sh:property [
        sh:path cert:witnessCount ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] .

uor-sh:GroundingCertificateShape
    a               sh:NodeShape ;
    sh:targetClass  cert:GroundingCertificate ;
    rdfs:label      "GroundingCertificateShape" ;
    sh:property [
        sh:path cert:certifiedGrounding ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class state:GroundedContext ;
    ] ;
    sh:property [
        sh:path cert:groundingWitness ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class state:GroundingWitness ;
    ] .

uor-sh:GeodesicCertificateShape
    a               sh:NodeShape ;
    sh:targetClass  cert:GeodesicCertificate ;
    rdfs:label      "GeodesicCertificateShape" ;
    sh:property [
        sh:path cert:certifiedGeodesic ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class trace:GeodesicTrace ;
    ] ;
    sh:property [
        sh:path cert:geodesicTrace ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class trace:GeodesicTrace ;
    ] ;
    sh:property [
        sh:path cert:evidenceBundle ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class cert:GeodesicEvidenceBundle ;
    ] .

uor-sh:MeasurementCertificateShape
    a               sh:NodeShape ;
    sh:targetClass  cert:MeasurementCertificate ;
    rdfs:label      "MeasurementCertificateShape" ;
    sh:property [
        sh:path cert:certifiedMeasurement ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class trace:MeasurementEvent ;
    ] ;
    sh:property [
        sh:path cert:vonNeumannEntropy ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:decimal ;
    ] ;
    sh:property [
        sh:path cert:landauerCost ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:decimal ;
    ] .

uor-sh:GeodesicEvidenceBundleShape
    a               sh:NodeShape ;
    sh:targetClass  cert:GeodesicEvidenceBundle ;
    rdfs:label      "GeodesicEvidenceBundleShape" ;
    sh:property [
        sh:path cert:isAR1Ordered ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] ;
    sh:property [
        sh:path cert:isDC10Selected ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] .

uor-sh:BornRuleVerificationShape
    a               sh:NodeShape ;
    sh:targetClass  cert:BornRuleVerification ;
    rdfs:label      "BornRuleVerificationShape" ;
    sh:property [
        sh:path cert:bornRuleVerified ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] .

uor-sh:LiftChainCertificateShape
    a               sh:NodeShape ;
    sh:targetClass  cert:LiftChainCertificate ;
    rdfs:label      "LiftChainCertificateShape" ;
    sh:property [
        sh:path cert:certifiedChain ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class type:LiftChain ;
    ] ;
    sh:property [
        sh:path cert:chainAuditTrail ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class cert:ChainAuditTrail ;
    ] ;
    sh:property [
        sh:path cert:targetLevel ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:WittLevel ;
    ] ;
    sh:property [
        sh:path cert:sourceLevel ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:WittLevel ;
    ] .

uor-sh:ChainAuditTrailShape
    a               sh:NodeShape ;
    sh:targetClass  cert:ChainAuditTrail ;
    rdfs:label      "ChainAuditTrailShape" ;
    sh:property [
        sh:path cert:chainStepCount ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] .

# ── morphism/ namespace (20) ──────────────────────

uor-sh:TransformShape
    a               sh:NodeShape ;
    sh:targetClass  morphism:Transform ;
    rdfs:label      "TransformShape" ;
    sh:property [
        sh:path morphism:source ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class owl:Thing ;
    ] ;
    sh:property [
        sh:path morphism:target ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class owl:Thing ;
    ] ;
    sh:property [
        sh:path morphism:preserves ;
        sh:class owl:Thing ;
    ] ;
    sh:property [
        sh:path morphism:trace ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class trace:ComputationTrace ;
    ] ;
    sh:property [
        sh:path morphism:composesWith ;
        sh:class morphism:Transform ;
    ] ;
    sh:property [
        sh:path morphism:preservedInvariant ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class op:Identity ;
    ] ;
    sh:property [
        sh:path morphism:inputClass ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class owl:Class ;
    ] ;
    sh:property [
        sh:path morphism:outputClass ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class owl:Class ;
    ] ;
    sh:property [
        sh:path morphism:hasWitness ;
        sh:class morphism:Witness ;
    ] .

uor-sh:IsometryShape
    a               sh:NodeShape ;
    sh:targetClass  morphism:Isometry ;
    rdfs:label      "IsometryShape" ;
    sh:property [
        sh:path morphism:preservesMetric ;
        sh:class observable:MetricObservable ;
    ] .

uor-sh:EmbeddingShape
    a               sh:NodeShape ;
    sh:targetClass  morphism:Embedding ;
    rdfs:label      "EmbeddingShape" ;
    sh:property [
        sh:path morphism:sourceQuantum ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:positiveInteger ;
    ] ;
    sh:property [
        sh:path morphism:targetQuantum ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:positiveInteger ;
    ] ;
    sh:property [
        sh:path morphism:addressCoherence ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class op:Identity ;
    ] .

uor-sh:ActionShape
    a               sh:NodeShape ;
    sh:targetClass  morphism:Action ;
    rdfs:label      "ActionShape" ;
    sh:property [
        sh:path morphism:group ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class op:Group ;
    ] ;
    sh:property [
        sh:path morphism:actingOn ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class owl:Thing ;
    ] ;
    sh:property [
        sh:path morphism:actionIsometry ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] .

uor-sh:CompositionShape
    a               sh:NodeShape ;
    sh:targetClass  morphism:Composition ;
    rdfs:label      "CompositionShape" ;
    sh:property [
        sh:path morphism:compositionResult ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class morphism:Transform ;
    ] ;
    sh:property [
        sh:path morphism:compositionComponents ;
        sh:class morphism:Transform ;
    ] .

uor-sh:IdentityShape
    a               sh:NodeShape ;
    sh:targetClass  morphism:Identity ;
    rdfs:label      "IdentityShape" ;
    sh:property [
        sh:path morphism:identityOn ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class type:TypeDefinition ;
    ] .

uor-sh:CompositionLawShape
    a               sh:NodeShape ;
    sh:targetClass  morphism:CompositionLaw ;
    rdfs:label      "CompositionLawShape" ;
    sh:property [
        sh:path morphism:isAssociative ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] ;
    sh:property [
        sh:path morphism:isCommutative ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] ;
    sh:property [
        sh:path morphism:lawComponents ;
        sh:class op:Operation ;
    ] ;
    sh:property [
        sh:path morphism:lawResult ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class op:Operation ;
    ] .

uor-sh:GroundingMapShape
    a               sh:NodeShape ;
    sh:targetClass  morphism:GroundingMap ;
    rdfs:label      "GroundingMapShape" ;
    sh:property [
        sh:path morphism:groundingDerivation ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class derivation:Derivation ;
    ] ;
    sh:property [
        sh:path morphism:symbolConstraints ;
        sh:class type:Constraint ;
    ] .

uor-sh:ProjectionMapShape
    a               sh:NodeShape ;
    sh:targetClass  morphism:ProjectionMap ;
    rdfs:label      "ProjectionMapShape" ;
    sh:property [
        sh:path morphism:projectionFrame ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class state:Frame ;
    ] ;
    sh:property [
        sh:path morphism:projectionOrder ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class type:CompositeConstraint ;
    ] ;
    sh:property [
        sh:path morphism:roundTripCoherence ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] ;
    sh:property [
        sh:path morphism:outputElementClass ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class owl:Class ;
    ] .

uor-sh:GroundingCertificateShape
    a               sh:NodeShape ;
    sh:targetClass  morphism:GroundingCertificate ;
    rdfs:label      "GroundingCertificateShape" ;
    sh:property [
        sh:path morphism:groundingCertMap ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class morphism:GroundingMap ;
    ] ;
    sh:property [
        sh:path morphism:groundingCertProjection ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class morphism:ProjectionMap ;
    ] ;
    sh:property [
        sh:path morphism:groundingCertSourceSymbol ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:Literal ;
    ] ;
    sh:property [
        sh:path morphism:groundingCertAddress ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class u:Element ;
    ] .

uor-sh:TopologicalDeltaShape
    a               sh:NodeShape ;
    sh:targetClass  morphism:TopologicalDelta ;
    rdfs:label      "TopologicalDeltaShape" ;
    sh:property [
        sh:path morphism:bettisBefore ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class observable:BettiNumber ;
    ] ;
    sh:property [
        sh:path morphism:bettisAfter ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class observable:BettiNumber ;
    ] ;
    sh:property [
        sh:path morphism:eulerBefore ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:integer ;
    ] ;
    sh:property [
        sh:path morphism:eulerAfter ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:integer ;
    ] ;
    sh:property [
        sh:path morphism:nerveBefore ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class homology:SimplicialComplex ;
    ] ;
    sh:property [
        sh:path morphism:nerveAfter ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class homology:SimplicialComplex ;
    ] .

uor-sh:ComputationDatumShape
    a               sh:NodeShape ;
    sh:targetClass  morphism:ComputationDatum ;
    rdfs:label      "ComputationDatumShape" ;
    sh:property [
        sh:path morphism:referencedCertificate ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class cert:TransformCertificate ;
    ] ;
    sh:property [
        sh:path morphism:computationAddress ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class u:Element ;
    ] .

uor-sh:ApplicationMorphismShape
    a               sh:NodeShape ;
    sh:targetClass  morphism:ApplicationMorphism ;
    rdfs:label      "ApplicationMorphismShape" ;
    sh:property [
        sh:path morphism:applicationTarget ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class morphism:ComputationDatum ;
    ] ;
    sh:property [
        sh:path morphism:applicationInput ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:Datum ;
    ] .

uor-sh:PartialApplicationShape
    a               sh:NodeShape ;
    sh:targetClass  morphism:PartialApplication ;
    rdfs:label      "PartialApplicationShape" ;
    sh:property [
        sh:path morphism:partialBase ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class morphism:ComputationDatum ;
    ] ;
    sh:property [
        sh:path morphism:boundArguments ;
        sh:class schema:Datum ;
    ] ;
    sh:property [
        sh:path morphism:remainingArity ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:positiveInteger ;
    ] .

uor-sh:TransformCompositionShape
    a               sh:NodeShape ;
    sh:targetClass  morphism:TransformComposition ;
    rdfs:label      "TransformCompositionShape" ;
    sh:property [
        sh:path morphism:compositionLeft ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class morphism:ComputationDatum ;
    ] ;
    sh:property [
        sh:path morphism:compositionRight ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class morphism:ComputationDatum ;
    ] .

uor-sh:WitnessShape
    a               sh:NodeShape ;
    sh:targetClass  morphism:Witness ;
    rdfs:label      "WitnessShape" .

uor-sh:GroundingWitnessShape
    a               sh:NodeShape ;
    sh:targetClass  morphism:GroundingWitness ;
    rdfs:label      "GroundingWitnessShape" ;
    sh:property [
        sh:path morphism:surfaceSymbol ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:SurfaceSymbol ;
    ] ;
    sh:property [
        sh:path morphism:groundedAddress ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class u:Element ;
    ] .

uor-sh:ProjectionWitnessShape
    a               sh:NodeShape ;
    sh:targetClass  morphism:ProjectionWitness ;
    rdfs:label      "ProjectionWitnessShape" ;
    sh:property [
        sh:path morphism:projectionSource ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class partition:Partition ;
    ] ;
    sh:property [
        sh:path morphism:projectionOutput ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class morphism:SymbolSequence ;
    ] .

uor-sh:SymbolSequenceShape
    a               sh:NodeShape ;
    sh:targetClass  morphism:SymbolSequence ;
    rdfs:label      "SymbolSequenceShape" ;
    sh:property [
        sh:path morphism:hasElement ;
        sh:class morphism:SequenceElement ;
    ] .

uor-sh:SequenceElementShape
    a               sh:NodeShape ;
    sh:targetClass  morphism:SequenceElement ;
    rdfs:label      "SequenceElementShape" ;
    sh:property [
        sh:path morphism:elementValue ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:SurfaceSymbol ;
    ] ;
    sh:property [
        sh:path morphism:elementIndex ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] .

# ── state/ namespace (15) ─────────────────────────

uor-sh:ContextShape
    a               sh:NodeShape ;
    sh:targetClass  state:Context ;
    rdfs:label      "ContextShape" ;
    sh:property [
        sh:path state:binding ;
        sh:class state:Binding ;
    ] ;
    sh:property [
        sh:path state:capacity ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:positiveInteger ;
    ] ;
    sh:property [
        sh:path state:contentAddress ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:string ;
    ] ;
    sh:property [
        sh:path state:wittLength ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:positiveInteger ;
    ] ;
    sh:property [
        sh:path state:groundingDegree ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:decimal ;
    ] ;
    sh:property [
        sh:path state:contextTemperature ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:decimal ;
    ] ;
    sh:property [
        sh:path state:isGrounded ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] ;
    sh:property [
        sh:path state:groundingPhase ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class state:GroundingPhase ;
    ] ;
    sh:property [
        sh:path state:residualFreeCount ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] .

uor-sh:BindingShape
    a               sh:NodeShape ;
    sh:targetClass  state:Binding ;
    rdfs:label      "BindingShape" ;
    sh:property [
        sh:path state:address ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class u:Element ;
    ] ;
    sh:property [
        sh:path state:content ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:Datum ;
    ] ;
    sh:property [
        sh:path state:boundType ;
        sh:class type:TypeDefinition ;
    ] ;
    sh:property [
        sh:path state:timestamp ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:dateTime ;
    ] .

uor-sh:FrameShape
    a               sh:NodeShape ;
    sh:targetClass  state:Frame ;
    rdfs:label      "FrameShape" ;
    sh:property [
        sh:path state:activeBindings ;
        sh:class state:Binding ;
    ] ;
    sh:property [
        sh:path state:context ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class state:Context ;
    ] ;
    sh:property [
        sh:path state:constraint ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class type:Constraint ;
    ] .

uor-sh:TransitionShape
    a               sh:NodeShape ;
    sh:targetClass  state:Transition ;
    rdfs:label      "TransitionShape" ;
    sh:property [
        sh:path state:from ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class state:Context ;
    ] ;
    sh:property [
        sh:path state:to ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class state:Context ;
    ] ;
    sh:property [
        sh:path state:addedBindings ;
        sh:class state:Binding ;
    ] ;
    sh:property [
        sh:path state:removedBindings ;
        sh:class state:Binding ;
    ] ;
    sh:property [
        sh:path state:trace ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class trace:ComputationTrace ;
    ] ;
    sh:property [
        sh:path state:topologicalSnapshot ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class morphism:TopologicalDelta ;
    ] .

uor-sh:SessionBoundaryTypeShape
    a               sh:NodeShape ;
    sh:targetClass  state:SessionBoundaryType ;
    rdfs:label      "SessionBoundaryTypeShape" .

uor-sh:SessionShape
    a               sh:NodeShape ;
    sh:targetClass  state:Session ;
    rdfs:label      "SessionShape" ;
    sh:property [
        sh:path state:sessionBindings ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class state:Context ;
    ] ;
    sh:property [
        sh:path state:sessionQueries ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] .

uor-sh:BindingAccumulatorShape
    a               sh:NodeShape ;
    sh:targetClass  state:BindingAccumulator ;
    rdfs:label      "BindingAccumulatorShape" ;
    sh:property [
        sh:path state:aggregateSiteDeficit ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class partition:FreeRank ;
    ] ;
    sh:property [
        sh:path state:accumulatedBindings ;
        sh:class state:Binding ;
    ] .

uor-sh:SessionBoundaryShape
    a               sh:NodeShape ;
    sh:targetClass  state:SessionBoundary ;
    rdfs:label      "SessionBoundaryShape" ;
    sh:property [
        sh:path state:boundaryReason ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:string ;
    ] ;
    sh:property [
        sh:path state:boundaryType ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class state:SessionBoundaryType ;
    ] ;
    sh:property [
        sh:path state:priorContext ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class state:Context ;
    ] ;
    sh:property [
        sh:path state:freshContext ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class state:Context ;
    ] .

uor-sh:GroundedContextShape
    a               sh:NodeShape ;
    sh:targetClass  state:GroundedContext ;
    rdfs:label      "GroundedContextShape" ;
    sh:property [
        sh:path state:groundingCertificate ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class cert:GroundingCertificate ;
    ] .

uor-sh:GroundingWitnessShape
    a               sh:NodeShape ;
    sh:targetClass  state:GroundingWitness ;
    rdfs:label      "GroundingWitnessShape" ;
    sh:property [
        sh:path state:witnessBinding ;
        sh:class state:Binding ;
    ] ;
    sh:property [
        sh:path state:witnessStep ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] .

uor-sh:DomainGroundingRecordShape
    a               sh:NodeShape ;
    sh:targetClass  state:DomainGroundingRecord ;
    rdfs:label      "DomainGroundingRecordShape" ;
    sh:property [
        sh:path state:groundedContext ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class state:GroundedContext ;
    ] ;
    sh:property [
        sh:path state:groundedDomain ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class type:TypeDefinition ;
    ] ;
    sh:property [
        sh:path state:domainFreeCount ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] .

uor-sh:GroundingPhaseShape
    a               sh:NodeShape ;
    sh:targetClass  state:GroundingPhase ;
    rdfs:label      "GroundingPhaseShape" .

uor-sh:SharedContextShape
    a               sh:NodeShape ;
    sh:targetClass  state:SharedContext ;
    rdfs:label      "SharedContextShape" ;
    sh:property [
        sh:path state:leaseSet ;
        sh:class state:ContextLease ;
    ] .

uor-sh:ContextLeaseShape
    a               sh:NodeShape ;
    sh:targetClass  state:ContextLease ;
    rdfs:label      "ContextLeaseShape" ;
    sh:property [
        sh:path state:leasedSites ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class partition:FreeRank ;
    ] ;
    sh:property [
        sh:path state:leaseHolder ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class state:Session ;
    ] .

uor-sh:SessionCompositionShape
    a               sh:NodeShape ;
    sh:targetClass  state:SessionComposition ;
    rdfs:label      "SessionCompositionShape" ;
    sh:property [
        sh:path state:composedFrom ;
        sh:class state:Session ;
    ] ;
    sh:property [
        sh:path state:compositionCompatible ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] ;
    sh:property [
        sh:path state:compositionResult ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class state:Context ;
    ] ;
    sh:property [
        sh:path state:towerConsistencyVerified ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] .

# ── reduction/ namespace (38) ─────────────────────

uor-sh:EulerReductionShape
    a               sh:NodeShape ;
    sh:targetClass  reduction:EulerReduction ;
    rdfs:label      "EulerReductionShape" ;
    sh:property [
        sh:path reduction:phaseParameter ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:decimal ;
    ] ;
    sh:property [
        sh:path reduction:stageCount ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path reduction:convergenceAngle ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:decimal ;
    ] ;
    sh:property [
        sh:path reduction:composedOfMaps ;
        sh:class schema:TermExpression ;
    ] .

uor-sh:PhaseRotationSchedulerShape
    a               sh:NodeShape ;
    sh:targetClass  reduction:PhaseRotationScheduler ;
    rdfs:label      "PhaseRotationSchedulerShape" ;
    sh:property [
        sh:path reduction:rotationSchedule ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:decimal ;
    ] ;
    sh:property [
        sh:path reduction:baseAngle ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:decimal ;
    ] .

uor-sh:TargetConvergenceAngleShape
    a               sh:NodeShape ;
    sh:targetClass  reduction:TargetConvergenceAngle ;
    rdfs:label      "TargetConvergenceAngleShape" ;
    sh:property [
        sh:path reduction:targetAngle ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:decimal ;
    ] .

uor-sh:PhaseGateAttestationShape
    a               sh:NodeShape ;
    sh:targetClass  reduction:PhaseGateAttestation ;
    rdfs:label      "PhaseGateAttestationShape" ;
    sh:property [
        sh:path reduction:gateStage ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class reduction:ReductionStep ;
    ] ;
    sh:property [
        sh:path reduction:gateExpectedPhase ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:decimal ;
    ] ;
    sh:property [
        sh:path reduction:gateResult ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] .

uor-sh:ComplexConjugateRollbackShape
    a               sh:NodeShape ;
    sh:targetClass  reduction:ComplexConjugateRollback ;
    rdfs:label      "ComplexConjugateRollbackShape" ;
    sh:property [
        sh:path reduction:rollbackTarget ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class reduction:ReductionStep ;
    ] .

uor-sh:ReductionStepShape
    a               sh:NodeShape ;
    sh:targetClass  reduction:ReductionStep ;
    rdfs:label      "ReductionStepShape" ;
    sh:property [
        sh:path reduction:stageIndex ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path reduction:stageName ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:string ;
    ] ;
    sh:property [
        sh:path reduction:expectedPhase ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:decimal ;
    ] ;
    sh:property [
        sh:path reduction:entryGuard ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class predicate:StatePredicate ;
    ] ;
    sh:property [
        sh:path reduction:exitGuard ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class predicate:StatePredicate ;
    ] ;
    sh:property [
        sh:path reduction:stageEffect ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class effect:Effect ;
    ] .

uor-sh:ReductionStateShape
    a               sh:NodeShape ;
    sh:targetClass  reduction:ReductionState ;
    rdfs:label      "ReductionStateShape" ;
    sh:property [
        sh:path reduction:currentStage ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class reduction:ReductionStep ;
    ] ;
    sh:property [
        sh:path reduction:phaseAngle ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:decimal ;
    ] ;
    sh:property [
        sh:path reduction:pinnedMask ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path reduction:freeRank ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path reduction:siteState ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:TermExpression ;
    ] .

uor-sh:ReductionRuleShape
    a               sh:NodeShape ;
    sh:targetClass  reduction:ReductionRule ;
    rdfs:label      "ReductionRuleShape" ;
    sh:property [
        sh:path reduction:transitionGuard ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class predicate:GuardedTransition ;
    ] ;
    sh:property [
        sh:path reduction:transitionEffect ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:TermExpression ;
    ] ;
    sh:property [
        sh:path reduction:transitionAdvance ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] .

uor-sh:EpochShape
    a               sh:NodeShape ;
    sh:targetClass  reduction:Epoch ;
    rdfs:label      "EpochShape" ;
    sh:property [
        sh:path reduction:epochIndex ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path reduction:epochDatum ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:TermExpression ;
    ] .

uor-sh:EpochBoundaryShape
    a               sh:NodeShape ;
    sh:targetClass  reduction:EpochBoundary ;
    rdfs:label      "EpochBoundaryShape" ;
    sh:property [
        sh:path reduction:epochBoundaryType ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:TermExpression ;
    ] ;
    sh:property [
        sh:path reduction:preservedGrounding ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] .

uor-sh:PredicateExpressionShape
    a               sh:NodeShape ;
    sh:targetClass  reduction:PredicateExpression ;
    rdfs:label      "PredicateExpressionShape" ;
    sh:property [
        sh:path reduction:predicateField ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:string ;
    ] ;
    sh:property [
        sh:path reduction:predicateOperator ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:string ;
    ] ;
    sh:property [
        sh:path reduction:predicateValue ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:string ;
    ] .

uor-sh:GuardExpressionShape
    a               sh:NodeShape ;
    sh:targetClass  reduction:GuardExpression ;
    rdfs:label      "GuardExpressionShape" ;
    sh:property [
        sh:path reduction:guardPredicates ;
        sh:class reduction:PredicateExpression ;
    ] .

uor-sh:TransitionEffectShape
    a               sh:NodeShape ;
    sh:targetClass  reduction:TransitionEffect ;
    rdfs:label      "TransitionEffectShape" ;
    sh:property [
        sh:path reduction:effectBindings ;
        sh:class reduction:PropertyBind ;
    ] .

uor-sh:PropertyBindShape
    a               sh:NodeShape ;
    sh:targetClass  reduction:PropertyBind ;
    rdfs:label      "PropertyBindShape" ;
    sh:property [
        sh:path reduction:bindTarget ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:string ;
    ] ;
    sh:property [
        sh:path reduction:bindValue ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:string ;
    ] .

uor-sh:ReductionAdvanceShape
    a               sh:NodeShape ;
    sh:targetClass  reduction:ReductionAdvance ;
    rdfs:label      "ReductionAdvanceShape" ;
    sh:property [
        sh:path reduction:advanceFrom ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class reduction:ReductionStep ;
    ] ;
    sh:property [
        sh:path reduction:advanceTo ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class reduction:ReductionStep ;
    ] .

uor-sh:ServiceWindowShape
    a               sh:NodeShape ;
    sh:targetClass  reduction:ServiceWindow ;
    rdfs:label      "ServiceWindowShape" ;
    sh:property [
        sh:path reduction:windowSize ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path reduction:windowOffset ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path reduction:baseContextRef ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:TermExpression ;
    ] .

uor-sh:ReductionTransactionShape
    a               sh:NodeShape ;
    sh:targetClass  reduction:ReductionTransaction ;
    rdfs:label      "ReductionTransactionShape" ;
    sh:property [
        sh:path reduction:transactionPolicy ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:string ;
    ] ;
    sh:property [
        sh:path reduction:transactionOutcome ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:TermExpression ;
    ] ;
    sh:property [
        sh:path reduction:transactionScope ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:TermExpression ;
    ] ;
    sh:property [
        sh:path reduction:transactionStatus ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:TermExpression ;
    ] .

uor-sh:PipelineSuccessShape
    a               sh:NodeShape ;
    sh:targetClass  reduction:PipelineSuccess ;
    rdfs:label      "PipelineSuccessShape" ;
    sh:property [
        sh:path reduction:groundingReached ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] ;
    sh:property [
        sh:path reduction:finalGrounding ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:decimal ;
    ] .

uor-sh:PipelineFailureReasonShape
    a               sh:NodeShape ;
    sh:targetClass  reduction:PipelineFailureReason ;
    rdfs:label      "PipelineFailureReasonShape" ;
    sh:property [
        sh:path reduction:failureKind ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:string ;
    ] ;
    sh:property [
        sh:path reduction:failureStage ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:TermExpression ;
    ] .

uor-sh:PreflightCheckShape
    a               sh:NodeShape ;
    sh:targetClass  reduction:PreflightCheck ;
    rdfs:label      "PreflightCheckShape" ;
    sh:property [
        sh:path reduction:preflightKind ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:string ;
    ] ;
    sh:property [
        sh:path reduction:preflightResult ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:TermExpression ;
    ] ;
    sh:property [
        sh:path reduction:preflightOrder ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] .

uor-sh:FeasibilityResultShape
    a               sh:NodeShape ;
    sh:targetClass  reduction:FeasibilityResult ;
    rdfs:label      "FeasibilityResultShape" ;
    sh:property [
        sh:path reduction:feasibilityKind ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:string ;
    ] ;
    sh:property [
        sh:path reduction:feasibilityWitness ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:string ;
    ] ;
    sh:property [
        sh:path reduction:infeasibilityKind ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:TermExpression ;
    ] .

uor-sh:LeaseStateShape
    a               sh:NodeShape ;
    sh:targetClass  reduction:LeaseState ;
    rdfs:label      "LeaseStateShape" ;
    sh:property [
        sh:path reduction:leasePhase ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:string ;
    ] .

uor-sh:ManagedLeaseShape
    a               sh:NodeShape ;
    sh:targetClass  reduction:ManagedLease ;
    rdfs:label      "ManagedLeaseShape" ;
    sh:property [
        sh:path reduction:managedLeaseId ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:TermExpression ;
    ] ;
    sh:property [
        sh:path reduction:leaseLifecycle ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class reduction:LeaseState ;
    ] ;
    sh:property [
        sh:path reduction:expiryEpoch ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path reduction:leaseBudget ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] .

uor-sh:LeaseCheckpointShape
    a               sh:NodeShape ;
    sh:targetClass  reduction:LeaseCheckpoint ;
    rdfs:label      "LeaseCheckpointShape" ;
    sh:property [
        sh:path reduction:checkpointEpoch ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path reduction:checkpointState ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class reduction:ReductionState ;
    ] ;
    sh:property [
        sh:path reduction:leaseRemainingBudget ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] .

uor-sh:BackPressureSignalShape
    a               sh:NodeShape ;
    sh:targetClass  reduction:BackPressureSignal ;
    rdfs:label      "BackPressureSignalShape" ;
    sh:property [
        sh:path reduction:pressureLevel ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:string ;
    ] ;
    sh:property [
        sh:path reduction:pressureThreshold ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:decimal ;
    ] ;
    sh:property [
        sh:path reduction:sourceStage ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:TermExpression ;
    ] ;
    sh:property [
        sh:path reduction:targetStage ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:TermExpression ;
    ] .

uor-sh:DeferredQuerySetShape
    a               sh:NodeShape ;
    sh:targetClass  reduction:DeferredQuerySet ;
    rdfs:label      "DeferredQuerySetShape" ;
    sh:property [
        sh:path reduction:deferredCount ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path reduction:deferralEpoch ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path reduction:deferralReason ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:TermExpression ;
    ] .

uor-sh:SubleaseTransferShape
    a               sh:NodeShape ;
    sh:targetClass  reduction:SubleaseTransfer ;
    rdfs:label      "SubleaseTransferShape" ;
    sh:property [
        sh:path reduction:sourceLeaseRef ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:TermExpression ;
    ] ;
    sh:property [
        sh:path reduction:targetLeaseRef ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:TermExpression ;
    ] ;
    sh:property [
        sh:path reduction:transferredBudget ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path reduction:transferCompleted ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] .

uor-sh:ComparisonPredicateShape
    a               sh:NodeShape ;
    sh:targetClass  reduction:ComparisonPredicate ;
    rdfs:label      "ComparisonPredicateShape" ;
    sh:property [
        sh:path reduction:comparisonField ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:TermExpression ;
    ] ;
    sh:property [
        sh:path reduction:comparisonOperator ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:TermExpression ;
    ] ;
    sh:property [
        sh:path reduction:comparisonValue ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:TermExpression ;
    ] .

uor-sh:ConjunctionPredicateShape
    a               sh:NodeShape ;
    sh:targetClass  reduction:ConjunctionPredicate ;
    rdfs:label      "ConjunctionPredicateShape" ;
    sh:property [
        sh:path reduction:conjuncts ;
        sh:class schema:TermExpression ;
    ] .

uor-sh:DisjunctionPredicateShape
    a               sh:NodeShape ;
    sh:targetClass  reduction:DisjunctionPredicate ;
    rdfs:label      "DisjunctionPredicateShape" ;
    sh:property [
        sh:path reduction:disjuncts ;
        sh:class schema:TermExpression ;
    ] .

uor-sh:NegationPredicateShape
    a               sh:NodeShape ;
    sh:targetClass  reduction:NegationPredicate ;
    rdfs:label      "NegationPredicateShape" ;
    sh:property [
        sh:path reduction:negatedPredicate ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:TermExpression ;
    ] .

uor-sh:MembershipPredicateShape
    a               sh:NodeShape ;
    sh:targetClass  reduction:MembershipPredicate ;
    rdfs:label      "MembershipPredicateShape" ;
    sh:property [
        sh:path reduction:membershipSet ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:TermExpression ;
    ] ;
    sh:property [
        sh:path reduction:membershipElement ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:TermExpression ;
    ] .

uor-sh:GroundingPredicateShape
    a               sh:NodeShape ;
    sh:targetClass  reduction:GroundingPredicate ;
    rdfs:label      "GroundingPredicateShape" ;
    sh:property [
        sh:path reduction:groundingThreshold ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] .

uor-sh:SiteCoveragePredicateShape
    a               sh:NodeShape ;
    sh:targetClass  reduction:SiteCoveragePredicate ;
    rdfs:label      "SiteCoveragePredicateShape" ;
    sh:property [
        sh:path reduction:coverageTarget ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] .

uor-sh:EqualsPredicateShape
    a               sh:NodeShape ;
    sh:targetClass  reduction:EqualsPredicate ;
    rdfs:label      "EqualsPredicateShape" ;
    sh:property [
        sh:path reduction:equalityLeft ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:TermExpression ;
    ] ;
    sh:property [
        sh:path reduction:equalityRight ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:TermExpression ;
    ] .

uor-sh:NonNullPredicateShape
    a               sh:NodeShape ;
    sh:targetClass  reduction:NonNullPredicate ;
    rdfs:label      "NonNullPredicateShape" ;
    sh:property [
        sh:path reduction:nonNullField ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] .

uor-sh:QuerySubtypePredicateShape
    a               sh:NodeShape ;
    sh:targetClass  reduction:QuerySubtypePredicate ;
    rdfs:label      "QuerySubtypePredicateShape" ;
    sh:property [
        sh:path reduction:queryTypeRef ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:TermExpression ;
    ] .

uor-sh:CompileUnitShape
    a               sh:NodeShape ;
    sh:targetClass  reduction:CompileUnit ;
    rdfs:label      "CompileUnitShape" ;
    sh:property [
        sh:path reduction:rootTerm ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:TermExpression ;
    ] ;
    sh:property [
        sh:path reduction:unitWittLevel ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:WittLevel ;
    ] ;
    sh:property [
        sh:path reduction:thermodynamicBudget ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:decimal ;
    ] ;
    sh:property [
        sh:path reduction:targetDomains ;
        sh:class op:VerificationDomain ;
    ] ;
    sh:property [
        sh:path reduction:unitAddress ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class u:Element ;
    ] .

# ── convergence/ namespace (5) ───────────────────

uor-sh:ConvergenceLevelShape
    a               sh:NodeShape ;
    sh:targetClass  convergence:ConvergenceLevel ;
    rdfs:label      "ConvergenceLevelShape" ;
    sh:property [
        sh:path convergence:algebraDimension ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path convergence:bettiSignature ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:string ;
    ] ;
    sh:property [
        sh:path convergence:fiberType ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class convergence:HopfFiber ;
    ] ;
    sh:property [
        sh:path convergence:characteristicIdentity ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:string ;
    ] ;
    sh:property [
        sh:path convergence:levelName ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:string ;
    ] .

uor-sh:HopfFiberShape
    a               sh:NodeShape ;
    sh:targetClass  convergence:HopfFiber ;
    rdfs:label      "HopfFiberShape" ;
    sh:property [
        sh:path convergence:fiberDimension ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path convergence:totalSpace ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:string ;
    ] ;
    sh:property [
        sh:path convergence:baseSpace ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:string ;
    ] ;
    sh:property [
        sh:path convergence:fiberSphere ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:string ;
    ] .

uor-sh:ConvergenceResidualShape
    a               sh:NodeShape ;
    sh:targetClass  convergence:ConvergenceResidual ;
    rdfs:label      "ConvergenceResidualShape" ;
    sh:property [
        sh:path convergence:residualBetti ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path convergence:residualDimension ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] .

uor-sh:CommutativeSubspaceShape
    a               sh:NodeShape ;
    sh:targetClass  convergence:CommutativeSubspace ;
    rdfs:label      "CommutativeSubspaceShape" ;
    sh:property [
        sh:path convergence:subspaceRef ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class convergence:CommutativeSubspace ;
    ] ;
    sh:property [
        sh:path convergence:commutatorRef ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class observable:Commutator ;
    ] .

uor-sh:AssociativeSubalgebraShape
    a               sh:NodeShape ;
    sh:targetClass  convergence:AssociativeSubalgebra ;
    rdfs:label      "AssociativeSubalgebraShape" ;
    sh:property [
        sh:path convergence:subalgebraRef ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class convergence:AssociativeSubalgebra ;
    ] ;
    sh:property [
        sh:path convergence:associatorRef ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class interaction:AssociatorTriple ;
    ] .

# ── division/ namespace (5) ──────────────────────

uor-sh:NormedDivisionAlgebraShape
    a               sh:NodeShape ;
    sh:targetClass  division:NormedDivisionAlgebra ;
    rdfs:label      "NormedDivisionAlgebraShape" ;
    sh:property [
        sh:path division:algebraDimension ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path division:isCommutative ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] ;
    sh:property [
        sh:path division:isAssociative ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] ;
    sh:property [
        sh:path division:basisElements ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:string ;
    ] ;
    sh:property [
        sh:path division:algebraMultiplicationTable ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class division:MultiplicationTable ;
    ] .

uor-sh:CayleyDicksonConstructionShape
    a               sh:NodeShape ;
    sh:targetClass  division:CayleyDicksonConstruction ;
    rdfs:label      "CayleyDicksonConstructionShape" ;
    sh:property [
        sh:path division:cayleyDicksonSource ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class division:NormedDivisionAlgebra ;
    ] ;
    sh:property [
        sh:path division:cayleyDicksonTarget ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class division:NormedDivisionAlgebra ;
    ] ;
    sh:property [
        sh:path division:adjoinedElement ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:string ;
    ] ;
    sh:property [
        sh:path division:conjugationRule ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:string ;
    ] .

uor-sh:MultiplicationTableShape
    a               sh:NodeShape ;
    sh:targetClass  division:MultiplicationTable ;
    rdfs:label      "MultiplicationTableShape" .

uor-sh:AlgebraCommutatorShape
    a               sh:NodeShape ;
    sh:targetClass  division:AlgebraCommutator ;
    rdfs:label      "AlgebraCommutatorShape" .

uor-sh:AlgebraAssociatorShape
    a               sh:NodeShape ;
    sh:targetClass  division:AlgebraAssociator ;
    rdfs:label      "AlgebraAssociatorShape" .

# ── interaction/ namespace (9) ───────────────────

uor-sh:InteractionContextShape
    a               sh:NodeShape ;
    sh:targetClass  interaction:InteractionContext ;
    rdfs:label      "InteractionContextShape" ;
    sh:property [
        sh:path interaction:entityA ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:TermExpression ;
    ] ;
    sh:property [
        sh:path interaction:entityB ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:TermExpression ;
    ] ;
    sh:property [
        sh:path interaction:sharedSiteMask ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path interaction:commutatorNorm ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:decimal ;
    ] .

uor-sh:CommutatorStateShape
    a               sh:NodeShape ;
    sh:targetClass  interaction:CommutatorState ;
    rdfs:label      "CommutatorStateShape" ;
    sh:property [
        sh:path interaction:commutatorValue ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:decimal ;
    ] .

uor-sh:AssociatorStateShape
    a               sh:NodeShape ;
    sh:targetClass  interaction:AssociatorState ;
    rdfs:label      "AssociatorStateShape" ;
    sh:property [
        sh:path interaction:associatorNorm ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:decimal ;
    ] .

uor-sh:AssociatorTripleShape
    a               sh:NodeShape ;
    sh:targetClass  interaction:AssociatorTriple ;
    rdfs:label      "AssociatorTripleShape" ;
    sh:property [
        sh:path interaction:tripleComponentA ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:Datum ;
    ] ;
    sh:property [
        sh:path interaction:tripleComponentB ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:Datum ;
    ] ;
    sh:property [
        sh:path interaction:tripleComponentC ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:Datum ;
    ] ;
    sh:property [
        sh:path interaction:associatorProfileRef ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class observable:Observable ;
    ] ;
    sh:property [
        sh:path interaction:associatorNormValue ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:decimal ;
    ] .

uor-sh:ThreeWaySiteShape
    a               sh:NodeShape ;
    sh:targetClass  interaction:ThreeWaySite ;
    rdfs:label      "ThreeWaySiteShape" ;
    sh:property [
        sh:path interaction:sitePosition ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path interaction:leftGroupingValue ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:decimal ;
    ] ;
    sh:property [
        sh:path interaction:rightGroupingValue ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:decimal ;
    ] ;
    sh:property [
        sh:path interaction:isPinned ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] ;
    sh:property [
        sh:path interaction:pinningPair ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:TermExpression ;
    ] .

uor-sh:NegotiationTraceShape
    a               sh:NodeShape ;
    sh:targetClass  interaction:NegotiationTrace ;
    rdfs:label      "NegotiationTraceShape" ;
    sh:property [
        sh:path interaction:negotiationSteps ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path interaction:isConvergent ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] ;
    sh:property [
        sh:path interaction:traceLength ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path interaction:convergenceRate ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:decimal ;
    ] ;
    sh:property [
        sh:path interaction:terminalValue ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:TermExpression ;
    ] .

uor-sh:MutualModelTraceShape
    a               sh:NodeShape ;
    sh:targetClass  interaction:MutualModelTrace ;
    rdfs:label      "MutualModelTraceShape" ;
    sh:property [
        sh:path interaction:modelConvergent ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] .

uor-sh:InteractionNerveShape
    a               sh:NodeShape ;
    sh:targetClass  interaction:InteractionNerve ;
    rdfs:label      "InteractionNerveShape" ;
    sh:property [
        sh:path interaction:nerveDimension ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path interaction:nerveBettiNumbers ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] .

uor-sh:InteractionCompositionShape
    a               sh:NodeShape ;
    sh:targetClass  interaction:InteractionComposition ;
    rdfs:label      "InteractionCompositionShape" ;
    sh:property [
        sh:path interaction:reificationDepth ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] .

# ── monoidal/ namespace (3) ──────────────────────

uor-sh:MonoidalProductShape
    a               sh:NodeShape ;
    sh:targetClass  monoidal:MonoidalProduct ;
    rdfs:label      "MonoidalProductShape" ;
    sh:property [
        sh:path monoidal:leftOperand ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class morphism:ComputationDatum ;
    ] ;
    sh:property [
        sh:path monoidal:rightOperand ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class morphism:ComputationDatum ;
    ] ;
    sh:property [
        sh:path monoidal:composedResult ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:Datum ;
    ] ;
    sh:property [
        sh:path monoidal:saturationValue ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:decimal ;
    ] .

uor-sh:MonoidalUnitShape
    a               sh:NodeShape ;
    sh:targetClass  monoidal:MonoidalUnit ;
    rdfs:label      "MonoidalUnitShape" ;
    sh:property [
        sh:path monoidal:unitWitnessRef ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class cert:Certificate ;
    ] .

uor-sh:MonoidalAssociatorShape
    a               sh:NodeShape ;
    sh:targetClass  monoidal:MonoidalAssociator ;
    rdfs:label      "MonoidalAssociatorShape" ;
    sh:property [
        sh:path monoidal:associatorLeft ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class monoidal:MonoidalProduct ;
    ] ;
    sh:property [
        sh:path monoidal:associatorRight ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class monoidal:MonoidalProduct ;
    ] ;
    sh:property [
        sh:path monoidal:associatorWitnessRef ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class cert:Certificate ;
    ] .

# ── operad/ namespace (2) ────────────────────────

uor-sh:StructuralOperadShape
    a               sh:NodeShape ;
    sh:targetClass  operad:StructuralOperad ;
    rdfs:label      "StructuralOperadShape" ;
    sh:property [
        sh:path operad:operadStructure ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class operad:StructuralOperad ;
    ] .

uor-sh:OperadCompositionShape
    a               sh:NodeShape ;
    sh:targetClass  operad:OperadComposition ;
    rdfs:label      "OperadCompositionShape" ;
    sh:property [
        sh:path operad:outerType ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class type:TypeDefinition ;
    ] ;
    sh:property [
        sh:path operad:innerType ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class type:TypeDefinition ;
    ] ;
    sh:property [
        sh:path operad:composedType ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class type:TypeDefinition ;
    ] ;
    sh:property [
        sh:path operad:composedSiteCount ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path operad:composedGrounding ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class morphism:GroundingMap ;
    ] .

# ── effect/ namespace (9) ────────────────────────

uor-sh:EffectShape
    a               sh:NodeShape ;
    sh:targetClass  effect:Effect ;
    rdfs:label      "EffectShape" ;
    sh:property [
        sh:path effect:effectTarget ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class effect:EffectTarget ;
    ] ;
    sh:property [
        sh:path effect:preContext ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class state:Context ;
    ] ;
    sh:property [
        sh:path effect:postContext ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class state:Context ;
    ] ;
    sh:property [
        sh:path effect:freeRankDelta ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:integer ;
    ] ;
    sh:property [
        sh:path effect:compositeIndex ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path effect:isCommutativeWith ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] .

uor-sh:ReversibleEffectShape
    a               sh:NodeShape ;
    sh:targetClass  effect:ReversibleEffect ;
    rdfs:label      "ReversibleEffectShape" .

uor-sh:PinningEffectShape
    a               sh:NodeShape ;
    sh:targetClass  effect:PinningEffect ;
    rdfs:label      "PinningEffectShape" .

uor-sh:UnbindingEffectShape
    a               sh:NodeShape ;
    sh:targetClass  effect:UnbindingEffect ;
    rdfs:label      "UnbindingEffectShape" .

uor-sh:PhaseEffectShape
    a               sh:NodeShape ;
    sh:targetClass  effect:PhaseEffect ;
    rdfs:label      "PhaseEffectShape" ;
    sh:property [
        sh:path effect:phaseAngleDelta ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:decimal ;
    ] .

uor-sh:CompositeEffectShape
    a               sh:NodeShape ;
    sh:targetClass  effect:CompositeEffect ;
    rdfs:label      "CompositeEffectShape" ;
    sh:property [
        sh:path effect:compositeHead ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class effect:Effect ;
    ] ;
    sh:property [
        sh:path effect:compositeTail ;
        sh:class effect:Effect ;
    ] .

uor-sh:ExternalEffectShape
    a               sh:NodeShape ;
    sh:targetClass  effect:ExternalEffect ;
    rdfs:label      "ExternalEffectShape" ;
    sh:property [
        sh:path effect:externalEffectShape ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class conformance:EffectShape ;
    ] .

uor-sh:EffectTargetShape
    a               sh:NodeShape ;
    sh:targetClass  effect:EffectTarget ;
    rdfs:label      "EffectTargetShape" ;
    sh:property [
        sh:path effect:targetSites ;
        sh:class partition:SiteIndex ;
    ] ;
    sh:property [
        sh:path effect:targetCardinality ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] .

uor-sh:DisjointnessWitnessShape
    a               sh:NodeShape ;
    sh:targetClass  effect:DisjointnessWitness ;
    rdfs:label      "DisjointnessWitnessShape" ;
    sh:property [
        sh:path effect:disjointnessLeft ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class effect:EffectTarget ;
    ] ;
    sh:property [
        sh:path effect:disjointnessRight ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class effect:EffectTarget ;
    ] .

# ── predicate/ namespace (9) ─────────────────────

uor-sh:PredicateShape
    a               sh:NodeShape ;
    sh:targetClass  predicate:Predicate ;
    rdfs:label      "PredicateShape" ;
    sh:property [
        sh:path predicate:evaluatesOver ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class owl:Class ;
    ] ;
    sh:property [
        sh:path predicate:boundedEvaluator ;
        sh:class recursion:DescentMeasure ;
    ] .

uor-sh:TypePredicateShape
    a               sh:NodeShape ;
    sh:targetClass  predicate:TypePredicate ;
    rdfs:label      "TypePredicateShape" .

uor-sh:StatePredicateShape
    a               sh:NodeShape ;
    sh:targetClass  predicate:StatePredicate ;
    rdfs:label      "StatePredicateShape" .

uor-sh:SitePredicateShape
    a               sh:NodeShape ;
    sh:targetClass  predicate:SitePredicate ;
    rdfs:label      "SitePredicateShape" .

uor-sh:DispatchRuleShape
    a               sh:NodeShape ;
    sh:targetClass  predicate:DispatchRule ;
    rdfs:label      "DispatchRuleShape" ;
    sh:property [
        sh:path predicate:dispatchPredicate ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class predicate:Predicate ;
    ] ;
    sh:property [
        sh:path predicate:dispatchTarget ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class resolver:Resolver ;
    ] ;
    sh:property [
        sh:path predicate:dispatchIndex ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] .

uor-sh:DispatchTableShape
    a               sh:NodeShape ;
    sh:targetClass  predicate:DispatchTable ;
    rdfs:label      "DispatchTableShape" ;
    sh:property [
        sh:path predicate:dispatchRules ;
        sh:class predicate:DispatchRule ;
    ] ;
    sh:property [
        sh:path predicate:isExhaustive ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] ;
    sh:property [
        sh:path predicate:isMutuallyExclusive ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] .

uor-sh:GuardedTransitionShape
    a               sh:NodeShape ;
    sh:targetClass  predicate:GuardedTransition ;
    rdfs:label      "GuardedTransitionShape" ;
    sh:property [
        sh:path predicate:guardPredicate ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class predicate:StatePredicate ;
    ] ;
    sh:property [
        sh:path predicate:guardEffect ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class effect:Effect ;
    ] ;
    sh:property [
        sh:path predicate:guardTarget ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class reduction:ReductionStep ;
    ] .

uor-sh:MatchArmShape
    a               sh:NodeShape ;
    sh:targetClass  predicate:MatchArm ;
    rdfs:label      "MatchArmShape" ;
    sh:property [
        sh:path predicate:armPredicate ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class predicate:Predicate ;
    ] ;
    sh:property [
        sh:path predicate:armResult ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:Term ;
    ] ;
    sh:property [
        sh:path predicate:armIndex ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] .

uor-sh:MatchExpressionShape
    a               sh:NodeShape ;
    sh:targetClass  predicate:MatchExpression ;
    rdfs:label      "MatchExpressionShape" ;
    sh:property [
        sh:path predicate:matchArms ;
        sh:class predicate:MatchArm ;
    ] .

# ── parallel/ namespace (5) ──────────────────────

uor-sh:ParallelProductShape
    a               sh:NodeShape ;
    sh:targetClass  parallel:ParallelProduct ;
    rdfs:label      "ParallelProductShape" ;
    sh:property [
        sh:path parallel:leftComputation ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class monoidal:MonoidalProduct ;
    ] ;
    sh:property [
        sh:path parallel:rightComputation ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class monoidal:MonoidalProduct ;
    ] ;
    sh:property [
        sh:path parallel:disjointnessCert ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class parallel:DisjointnessCertificate ;
    ] ;
    sh:property [
        sh:path parallel:isFullyDisjoint ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] ;
    sh:property [
        sh:path parallel:disjointnessCommutation ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] .

uor-sh:DisjointnessCertificateShape
    a               sh:NodeShape ;
    sh:targetClass  parallel:DisjointnessCertificate ;
    rdfs:label      "DisjointnessCertificateShape" ;
    sh:property [
        sh:path parallel:certLeftTarget ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class effect:EffectTarget ;
    ] ;
    sh:property [
        sh:path parallel:certRightTarget ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class effect:EffectTarget ;
    ] .

uor-sh:SynchronizationPointShape
    a               sh:NodeShape ;
    sh:targetClass  parallel:SynchronizationPoint ;
    rdfs:label      "SynchronizationPointShape" ;
    sh:property [
        sh:path parallel:syncSites ;
        sh:class partition:SiteIndex ;
    ] .

uor-sh:ParallelTraceShape
    a               sh:NodeShape ;
    sh:targetClass  parallel:ParallelTrace ;
    rdfs:label      "ParallelTraceShape" .

uor-sh:SitePartitioningShape
    a               sh:NodeShape ;
    sh:targetClass  parallel:SitePartitioning ;
    rdfs:label      "SitePartitioningShape" ;
    sh:property [
        sh:path parallel:partitionComponents ;
        sh:class effect:EffectTarget ;
    ] ;
    sh:property [
        sh:path parallel:componentCount ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:positiveInteger ;
    ] .

# ── stream/ namespace (6) ────────────────────────

uor-sh:ProductiveStreamShape
    a               sh:NodeShape ;
    sh:targetClass  stream:ProductiveStream ;
    rdfs:label      "ProductiveStreamShape" ;
    sh:property [
        sh:path stream:isProductive ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] .

uor-sh:EpochShape
    a               sh:NodeShape ;
    sh:targetClass  stream:Epoch ;
    rdfs:label      "EpochShape" ;
    sh:property [
        sh:path stream:epochReduction ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class reduction:EulerReduction ;
    ] ;
    sh:property [
        sh:path stream:epochOutput ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:Datum ;
    ] ;
    sh:property [
        sh:path stream:epochContext ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class state:Context ;
    ] ;
    sh:property [
        sh:path stream:epochIndex ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] .

uor-sh:EpochBoundaryShape
    a               sh:NodeShape ;
    sh:targetClass  stream:EpochBoundary ;
    rdfs:label      "EpochBoundaryShape" ;
    sh:property [
        sh:path stream:boundaryFrom ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class stream:Epoch ;
    ] ;
    sh:property [
        sh:path stream:boundaryTo ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class stream:Epoch ;
    ] ;
    sh:property [
        sh:path stream:continuationContext ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class state:Context ;
    ] .

uor-sh:StreamPrefixShape
    a               sh:NodeShape ;
    sh:targetClass  stream:StreamPrefix ;
    rdfs:label      "StreamPrefixShape" ;
    sh:property [
        sh:path stream:prefixEpochs ;
        sh:class stream:Epoch ;
    ] ;
    sh:property [
        sh:path stream:prefixLength ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:positiveInteger ;
    ] .

uor-sh:StreamMorphismShape
    a               sh:NodeShape ;
    sh:targetClass  stream:StreamMorphism ;
    rdfs:label      "StreamMorphismShape" .

uor-sh:UnfoldShape
    a               sh:NodeShape ;
    sh:targetClass  stream:Unfold ;
    rdfs:label      "UnfoldShape" ;
    sh:property [
        sh:path stream:unfoldSeed ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class state:Context ;
    ] ;
    sh:property [
        sh:path stream:unfoldStep ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class morphism:ComputationDatum ;
    ] ;
    sh:property [
        sh:path stream:unfoldResult ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class stream:ProductiveStream ;
    ] .

# ── failure/ namespace (12) ───────────────────────

uor-sh:ComputationResultShape
    a               sh:NodeShape ;
    sh:targetClass  failure:ComputationResult ;
    rdfs:label      "ComputationResultShape" .

uor-sh:SuccessShape
    a               sh:NodeShape ;
    sh:targetClass  failure:Success ;
    rdfs:label      "SuccessShape" ;
    sh:property [
        sh:path failure:resultDatum ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:Datum ;
    ] ;
    sh:property [
        sh:path failure:resultCertificate ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class proof:ComputationCertificate ;
    ] .

uor-sh:FailureShape
    a               sh:NodeShape ;
    sh:targetClass  failure:Failure ;
    rdfs:label      "FailureShape" ;
    sh:property [
        sh:path failure:failureReason ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class failure:FailureReason ;
    ] ;
    sh:property [
        sh:path failure:failureState ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class reduction:ReductionState ;
    ] ;
    sh:property [
        sh:path failure:failureStage ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class reduction:ReductionStep ;
    ] ;
    sh:property [
        sh:path failure:recoveryStrategy ;
        sh:class failure:Recovery ;
    ] ;
    sh:property [
        sh:path failure:failureDepth ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] .

uor-sh:FailureReasonShape
    a               sh:NodeShape ;
    sh:targetClass  failure:FailureReason ;
    rdfs:label      "FailureReasonShape" .

uor-sh:GuardFailureShape
    a               sh:NodeShape ;
    sh:targetClass  failure:GuardFailure ;
    rdfs:label      "GuardFailureShape" .

uor-sh:ConstraintContradictionShape
    a               sh:NodeShape ;
    sh:targetClass  failure:ConstraintContradiction ;
    rdfs:label      "ConstraintContradictionShape" .

uor-sh:SiteExhaustionShape
    a               sh:NodeShape ;
    sh:targetClass  failure:SiteExhaustion ;
    rdfs:label      "SiteExhaustionShape" .

uor-sh:LiftObstructionFailureShape
    a               sh:NodeShape ;
    sh:targetClass  failure:LiftObstructionFailure ;
    rdfs:label      "LiftObstructionFailureShape" .

uor-sh:PartialComputationShape
    a               sh:NodeShape ;
    sh:targetClass  failure:PartialComputation ;
    rdfs:label      "PartialComputationShape" ;
    sh:property [
        sh:path failure:isTotal ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] .

uor-sh:TotalComputationShape
    a               sh:NodeShape ;
    sh:targetClass  failure:TotalComputation ;
    rdfs:label      "TotalComputationShape" .

uor-sh:RecoveryShape
    a               sh:NodeShape ;
    sh:targetClass  failure:Recovery ;
    rdfs:label      "RecoveryShape" ;
    sh:property [
        sh:path failure:recoveryEffect ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class effect:Effect ;
    ] ;
    sh:property [
        sh:path failure:recoveryTarget ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class reduction:ReductionStep ;
    ] .

uor-sh:FailurePropagationShape
    a               sh:NodeShape ;
    sh:targetClass  failure:FailurePropagation ;
    rdfs:label      "FailurePropagationShape" ;
    sh:property [
        sh:path failure:propagationRule ;
        sh:class failure:FailureReason ;
    ] .

# ── linear/ namespace (6) ────────────────────────

uor-sh:LinearSiteShape
    a               sh:NodeShape ;
    sh:targetClass  linear:LinearSite ;
    rdfs:label      "LinearSiteShape" .

uor-sh:LinearEffectShape
    a               sh:NodeShape ;
    sh:targetClass  linear:LinearEffect ;
    rdfs:label      "LinearEffectShape" ;
    sh:property [
        sh:path linear:linearTarget ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class linear:LinearSite ;
    ] .

uor-sh:LinearTraceShape
    a               sh:NodeShape ;
    sh:targetClass  linear:LinearTrace ;
    rdfs:label      "LinearTraceShape" .

uor-sh:LinearBudgetShape
    a               sh:NodeShape ;
    sh:targetClass  linear:LinearBudget ;
    rdfs:label      "LinearBudgetShape" ;
    sh:property [
        sh:path linear:budgetSites ;
        sh:class linear:LinearSite ;
    ] ;
    sh:property [
        sh:path linear:budgetContext ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class state:Context ;
    ] ;
    sh:property [
        sh:path linear:remainingCount ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] .

uor-sh:LeaseAllocationShape
    a               sh:NodeShape ;
    sh:targetClass  linear:LeaseAllocation ;
    rdfs:label      "LeaseAllocationShape" ;
    sh:property [
        sh:path linear:leaseTarget ;
        sh:class linear:LinearSite ;
    ] ;
    sh:property [
        sh:path linear:leaseSource ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class state:ContextLease ;
    ] ;
    sh:property [
        sh:path linear:leaseCardinality ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:positiveInteger ;
    ] .

uor-sh:AffineSiteShape
    a               sh:NodeShape ;
    sh:targetClass  linear:AffineSite ;
    rdfs:label      "AffineSiteShape" .

# ── recursion/ namespace (7) ─────────────────────

uor-sh:BoundedRecursionShape
    a               sh:NodeShape ;
    sh:targetClass  recursion:BoundedRecursion ;
    rdfs:label      "BoundedRecursionShape" ;
    sh:property [
        sh:path recursion:measure ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class recursion:DescentMeasure ;
    ] ;
    sh:property [
        sh:path recursion:baseCase ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class recursion:BaseCase ;
    ] ;
    sh:property [
        sh:path recursion:recursiveCase ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class recursion:RecursiveCase ;
    ] ;
    sh:property [
        sh:path recursion:basePredicate ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class predicate:Predicate ;
    ] ;
    sh:property [
        sh:path recursion:recursionBody ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class morphism:ComputationDatum ;
    ] ;
    sh:property [
        sh:path recursion:initialMeasure ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] .

uor-sh:DescentMeasureShape
    a               sh:NodeShape ;
    sh:targetClass  recursion:DescentMeasure ;
    rdfs:label      "DescentMeasureShape" ;
    sh:property [
        sh:path recursion:measureValue ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] .

uor-sh:BaseCaseShape
    a               sh:NodeShape ;
    sh:targetClass  recursion:BaseCase ;
    rdfs:label      "BaseCaseShape" .

uor-sh:RecursiveCaseShape
    a               sh:NodeShape ;
    sh:targetClass  recursion:RecursiveCase ;
    rdfs:label      "RecursiveCaseShape" .

uor-sh:RecursiveStepShape
    a               sh:NodeShape ;
    sh:targetClass  recursion:RecursiveStep ;
    rdfs:label      "RecursiveStepShape" ;
    sh:property [
        sh:path recursion:stepDecomposition ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class morphism:Transform ;
    ] ;
    sh:property [
        sh:path recursion:stepMeasurePre ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class recursion:DescentMeasure ;
    ] ;
    sh:property [
        sh:path recursion:stepMeasurePost ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class recursion:DescentMeasure ;
    ] .

uor-sh:RecursionTraceShape
    a               sh:NodeShape ;
    sh:targetClass  recursion:RecursionTrace ;
    rdfs:label      "RecursionTraceShape" .

uor-sh:StructuralRecursionShape
    a               sh:NodeShape ;
    sh:targetClass  recursion:StructuralRecursion ;
    rdfs:label      "StructuralRecursionShape" .

# ── region/ namespace (5) ────────────────────────

uor-sh:AddressRegionShape
    a               sh:NodeShape ;
    sh:targetClass  region:AddressRegion ;
    rdfs:label      "AddressRegionShape" ;
    sh:property [
        sh:path region:regionBound ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class region:RegionBound ;
    ] ;
    sh:property [
        sh:path region:localityMetric ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class region:LocalityMetric ;
    ] ;
    sh:property [
        sh:path region:regionCardinality ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] .

uor-sh:RegionBoundShape
    a               sh:NodeShape ;
    sh:targetClass  region:RegionBound ;
    rdfs:label      "RegionBoundShape" ;
    sh:property [
        sh:path region:regionLower ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class u:Element ;
    ] ;
    sh:property [
        sh:path region:regionUpper ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class u:Element ;
    ] .

uor-sh:LocalityMetricShape
    a               sh:NodeShape ;
    sh:targetClass  region:LocalityMetric ;
    rdfs:label      "LocalityMetricShape" .

uor-sh:WorkingSetShape
    a               sh:NodeShape ;
    sh:targetClass  region:WorkingSet ;
    rdfs:label      "WorkingSetShape" ;
    sh:property [
        sh:path region:workingSetRegions ;
        sh:class region:AddressRegion ;
    ] ;
    sh:property [
        sh:path region:workingSetStage ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class reduction:ReductionStep ;
    ] ;
    sh:property [
        sh:path region:workingSetType ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class type:TypeDefinition ;
    ] ;
    sh:property [
        sh:path region:workingSetSize ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] .

uor-sh:RegionAllocationShape
    a               sh:NodeShape ;
    sh:targetClass  region:RegionAllocation ;
    rdfs:label      "RegionAllocationShape" ;
    sh:property [
        sh:path region:allocationStage ;
        sh:class reduction:ReductionStep ;
    ] ;
    sh:property [
        sh:path region:allocationWorkingSet ;
        sh:class region:WorkingSet ;
    ] .

# ── boundary/ namespace (8) ──────────────────────

uor-sh:IOBoundaryShape
    a               sh:NodeShape ;
    sh:targetClass  boundary:IOBoundary ;
    rdfs:label      "IOBoundaryShape" .

uor-sh:SourceShape
    a               sh:NodeShape ;
    sh:targetClass  boundary:Source ;
    rdfs:label      "SourceShape" ;
    sh:property [
        sh:path boundary:sourceType ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class type:TypeDefinition ;
    ] ;
    sh:property [
        sh:path boundary:sourceGrounding ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class morphism:GroundingMap ;
    ] .

uor-sh:SinkShape
    a               sh:NodeShape ;
    sh:targetClass  boundary:Sink ;
    rdfs:label      "SinkShape" ;
    sh:property [
        sh:path boundary:sinkType ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class type:TypeDefinition ;
    ] ;
    sh:property [
        sh:path boundary:sinkProjection ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class morphism:ProjectionMap ;
    ] .

uor-sh:BoundaryEffectShape
    a               sh:NodeShape ;
    sh:targetClass  boundary:BoundaryEffect ;
    rdfs:label      "BoundaryEffectShape" ;
    sh:property [
        sh:path boundary:effectBoundary ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class boundary:IOBoundary ;
    ] ;
    sh:property [
        sh:path boundary:isIdempotent ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] .

uor-sh:IngestEffectShape
    a               sh:NodeShape ;
    sh:targetClass  boundary:IngestEffect ;
    rdfs:label      "IngestEffectShape" ;
    sh:property [
        sh:path boundary:ingestSource ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class boundary:Source ;
    ] .

uor-sh:EmitEffectShape
    a               sh:NodeShape ;
    sh:targetClass  boundary:EmitEffect ;
    rdfs:label      "EmitEffectShape" ;
    sh:property [
        sh:path boundary:emitSink ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class boundary:Sink ;
    ] .

uor-sh:BoundaryProtocolShape
    a               sh:NodeShape ;
    sh:targetClass  boundary:BoundaryProtocol ;
    rdfs:label      "BoundaryProtocolShape" ;
    sh:property [
        sh:path boundary:protocolType ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class type:TypeDefinition ;
    ] ;
    sh:property [
        sh:path boundary:protocolOrdering ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class type:CompositeConstraint ;
    ] .

uor-sh:BoundarySessionShape
    a               sh:NodeShape ;
    sh:targetClass  boundary:BoundarySession ;
    rdfs:label      "BoundarySessionShape" ;
    sh:property [
        sh:path boundary:sessionBoundaries ;
        sh:class boundary:IOBoundary ;
    ] ;
    sh:property [
        sh:path boundary:crossingCount ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] .

# ── conformance/ namespace (30) ───────────────────

uor-sh:ShapeShape
    a               sh:NodeShape ;
    sh:targetClass  conformance:Shape ;
    rdfs:label      "ShapeShape" ;
    sh:property [
        sh:path conformance:targetClass ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class owl:Class ;
    ] ;
    sh:property [
        sh:path conformance:requiredProperty ;
        sh:class conformance:PropertyConstraint ;
    ] .

uor-sh:PropertyConstraintShape
    a               sh:NodeShape ;
    sh:targetClass  conformance:PropertyConstraint ;
    rdfs:label      "PropertyConstraintShape" ;
    sh:property [
        sh:path conformance:constraintProperty ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class owl:Thing ;
    ] ;
    sh:property [
        sh:path conformance:constraintRange ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class owl:Class ;
    ] ;
    sh:property [
        sh:path conformance:minCount ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path conformance:maxCount ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] .

uor-sh:WittLevelShapeShape
    a               sh:NodeShape ;
    sh:targetClass  conformance:WittLevelShape ;
    rdfs:label      "WittLevelShapeShape" .

uor-sh:EffectShapeShape
    a               sh:NodeShape ;
    sh:targetClass  conformance:EffectShape ;
    rdfs:label      "EffectShapeShape" .

uor-sh:ParallelShapeShape
    a               sh:NodeShape ;
    sh:targetClass  conformance:ParallelShape ;
    rdfs:label      "ParallelShapeShape" .

uor-sh:StreamShapeShape
    a               sh:NodeShape ;
    sh:targetClass  conformance:StreamShape ;
    rdfs:label      "StreamShapeShape" .

uor-sh:DispatchShapeShape
    a               sh:NodeShape ;
    sh:targetClass  conformance:DispatchShape ;
    rdfs:label      "DispatchShapeShape" .

uor-sh:LeaseShapeShape
    a               sh:NodeShape ;
    sh:targetClass  conformance:LeaseShape ;
    rdfs:label      "LeaseShapeShape" .

uor-sh:GroundingShapeShape
    a               sh:NodeShape ;
    sh:targetClass  conformance:GroundingShape ;
    rdfs:label      "GroundingShapeShape" .

uor-sh:ValidationResultShape
    a               sh:NodeShape ;
    sh:targetClass  conformance:ValidationResult ;
    rdfs:label      "ValidationResultShape" ;
    sh:property [
        sh:path conformance:validationShape ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class conformance:Shape ;
    ] ;
    sh:property [
        sh:path conformance:validationTarget ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class owl:Thing ;
    ] ;
    sh:property [
        sh:path conformance:conforms ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] .

uor-sh:PredicateShapeShape
    a               sh:NodeShape ;
    sh:targetClass  conformance:PredicateShape ;
    rdfs:label      "PredicateShapeShape" .

uor-sh:WitnessDatumShape
    a               sh:NodeShape ;
    sh:targetClass  conformance:WitnessDatum ;
    rdfs:label      "WitnessDatumShape" ;
    sh:property [
        sh:path conformance:witnessLevel ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path conformance:witnessBytes ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:hexBinary ;
    ] .

uor-sh:GroundedCoordinateShape
    a               sh:NodeShape ;
    sh:targetClass  conformance:GroundedCoordinate ;
    rdfs:label      "GroundedCoordinateShape" ;
    sh:property [
        sh:path conformance:coordinateLevel ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:WittLevel ;
    ] .

uor-sh:GroundedTupleShape
    a               sh:NodeShape ;
    sh:targetClass  conformance:GroundedTuple ;
    rdfs:label      "GroundedTupleShape" .

uor-sh:GroundedValueMarkerShape
    a               sh:NodeShape ;
    sh:targetClass  conformance:GroundedValueMarker ;
    rdfs:label      "GroundedValueMarkerShape" .

uor-sh:ValidatedWrapperShape
    a               sh:NodeShape ;
    sh:targetClass  conformance:ValidatedWrapper ;
    rdfs:label      "ValidatedWrapperShape" ;
    sh:property [
        sh:path conformance:validatedInner ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class owl:Thing ;
    ] .

uor-sh:WitnessDerivationShape
    a               sh:NodeShape ;
    sh:targetClass  conformance:WitnessDerivation ;
    rdfs:label      "WitnessDerivationShape" .

uor-sh:WitnessSiteBudgetShape
    a               sh:NodeShape ;
    sh:targetClass  conformance:WitnessSiteBudget ;
    rdfs:label      "WitnessSiteBudgetShape" .

uor-sh:ShapeViolationReportShape
    a               sh:NodeShape ;
    sh:targetClass  conformance:ShapeViolationReport ;
    rdfs:label      "ShapeViolationReportShape" ;
    sh:property [
        sh:path conformance:shapeIri ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:string ;
    ] ;
    sh:property [
        sh:path conformance:constraintIri ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:string ;
    ] ;
    sh:property [
        sh:path conformance:propertyIri ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:string ;
    ] ;
    sh:property [
        sh:path conformance:expectedRange ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:string ;
    ] ;
    sh:property [
        sh:path conformance:violationMinCount ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path conformance:violationMaxCount ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path conformance:violationKind ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class conformance:ViolationKind ;
    ] .

uor-sh:ViolationKindShape
    a               sh:NodeShape ;
    sh:targetClass  conformance:ViolationKind ;
    rdfs:label      "ViolationKindShape" .

uor-sh:CompileUnitBuilderShape
    a               sh:NodeShape ;
    sh:targetClass  conformance:CompileUnitBuilder ;
    rdfs:label      "CompileUnitBuilderShape" ;
    sh:property [
        sh:path conformance:builderRootTerm ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:Term ;
    ] ;
    sh:property [
        sh:path conformance:builderWittLevelCeiling ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:WittLevel ;
    ] ;
    sh:property [
        sh:path conformance:builderThermodynamicBudget ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:decimal ;
    ] ;
    sh:property [
        sh:path conformance:builderTargetDomains ;
        sh:class op:VerificationDomain ;
    ] .

uor-sh:EffectDeclarationShape
    a               sh:NodeShape ;
    sh:targetClass  conformance:EffectDeclaration ;
    rdfs:label      "EffectDeclarationShape" ;
    sh:property [
        sh:path conformance:effectName ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:string ;
    ] ;
    sh:property [
        sh:path conformance:targetSites ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path conformance:budgetDelta ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:integer ;
    ] ;
    sh:property [
        sh:path conformance:commutationFlag ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] .

uor-sh:GroundingDeclarationShape
    a               sh:NodeShape ;
    sh:targetClass  conformance:GroundingDeclaration ;
    rdfs:label      "GroundingDeclarationShape" ;
    sh:property [
        sh:path conformance:groundingSourceType ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class type:TypeDefinition ;
    ] ;
    sh:property [
        sh:path conformance:ringMapping ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:string ;
    ] ;
    sh:property [
        sh:path conformance:invertibilityContract ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] .

uor-sh:DispatchDeclarationShape
    a               sh:NodeShape ;
    sh:targetClass  conformance:DispatchDeclaration ;
    rdfs:label      "DispatchDeclarationShape" ;
    sh:property [
        sh:path conformance:dispatchPredicate ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class reduction:PredicateExpression ;
    ] ;
    sh:property [
        sh:path conformance:targetResolver ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class resolver:Resolver ;
    ] ;
    sh:property [
        sh:path conformance:dispatchPriority ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] .

uor-sh:LeaseDeclarationShape
    a               sh:NodeShape ;
    sh:targetClass  conformance:LeaseDeclaration ;
    rdfs:label      "LeaseDeclarationShape" ;
    sh:property [
        sh:path conformance:linearSite ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path conformance:leaseScope ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:string ;
    ] .

uor-sh:StreamDeclarationShape
    a               sh:NodeShape ;
    sh:targetClass  conformance:StreamDeclaration ;
    rdfs:label      "StreamDeclarationShape" ;
    sh:property [
        sh:path conformance:unfoldSeed ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:Term ;
    ] ;
    sh:property [
        sh:path conformance:stepTerm ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:Term ;
    ] ;
    sh:property [
        sh:path conformance:productivityWitness ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:string ;
    ] .

uor-sh:PredicateDeclarationShape
    a               sh:NodeShape ;
    sh:targetClass  conformance:PredicateDeclaration ;
    rdfs:label      "PredicateDeclarationShape" ;
    sh:property [
        sh:path conformance:predicateInputType ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class type:TypeDefinition ;
    ] ;
    sh:property [
        sh:path conformance:evaluatorTerm ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:Term ;
    ] ;
    sh:property [
        sh:path conformance:terminationWitness ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:string ;
    ] .

uor-sh:ParallelDeclarationShape
    a               sh:NodeShape ;
    sh:targetClass  conformance:ParallelDeclaration ;
    rdfs:label      "ParallelDeclarationShape" ;
    sh:property [
        sh:path conformance:sitePartition ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class partition:Partition ;
    ] ;
    sh:property [
        sh:path conformance:disjointnessWitness ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:string ;
    ] .

uor-sh:WittLevelDeclarationShape
    a               sh:NodeShape ;
    sh:targetClass  conformance:WittLevelDeclaration ;
    rdfs:label      "WittLevelDeclarationShape" ;
    sh:property [
        sh:path conformance:declaredBitWidth ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:positiveInteger ;
    ] ;
    sh:property [
        sh:path conformance:declaredCycleSize ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path conformance:predecessorLevel ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:class schema:WittLevel ;
    ] .

uor-sh:MintingSessionShape
    a               sh:NodeShape ;
    sh:targetClass  conformance:MintingSession ;
    rdfs:label      "MintingSessionShape" ;
    sh:property [
        sh:path conformance:sessionCrossingCount ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:nonNegativeInteger ;
    ] ;
    sh:property [
        sh:path conformance:sessionIsIdempotent ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:datatype xsd:boolean ;
    ] .

