Linked.Archi

Linked.Archi ArchiMate 4.0 Element & Metamodel Shapes

SHACL Shapes

https://meta.linked.archi/archimate4/element-shapes#

v4.0 draft am4elsh: Kalin Maldzhanski Linked.Archi Modified: 2026-11-06 License

SHACL shapes for validating ArchiMate 4.0 element instances and the metamodel patterns the relationship tables cannot express: element names, self-loops and cycles of composition and aggregation, a part in one whole only, attribute values, junctions joining relationships of one type, and deep specialization chains. Which element types a relationship may connect is checked by archimate4-relationship-shapes.ttl, generated from the specification's relationship tables (Appendix B), and is not repeated here.

Contents

AccessTypeShape — target: Access

PropertyConstraintValueSeverityMessage
accessType maxCount 0 Violation

ArchiMateElementShape — target: ApplicationDomainElement

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

CompositionPartUniquenessShape

SPARQL constraint: A composed part can only belong to one whole (composition implies exclusive ownership). Violation
            SELECT $this WHERE {
                ?whole1 am4:composedOf $this .
                ?whole2 am4:composedOf $this .
                FILTER(?whole1 != ?whole2)
            }
        

DeepSpecializationChainShape

SPARQL constraint: Element has a deep specialization chain (5+ levels) — consider if this complexity is necessary. Info
            SELECT $this WHERE {
                $this am4:specializes+ ?t1 .
                ?t1 am4:specializes+ ?t2 .
                ?t2 am4:specializes+ ?t3 .
                ?t3 am4:specializes+ ?t4 .
            }
        

InfluenceStrengthShape — target: Influence

PropertyConstraintValueSeverityMessage
influenceStrength datatype string Violation
influenceStrength in 19957834bca9b0ab Violation
influenceStrength maxCount 1 Violation

JunctionTypeShape — target: AndJunction

SPARQL constraint: All relationships connected to an AndJunction must be of the same type. Violation
            SELECT $this WHERE {
                {
                    ?a ?rel1 $this .
                    ?b ?rel2 $this .
                } UNION {
                    $this ?rel1 ?a .
                    $this ?rel2 ?b .
                } UNION {
                    ?a ?rel1 $this .
                    $this ?rel2 ?b .
                }
                ?rel1 rdfs:subPropertyOf* am4:composedOf .
                FILTER NOT EXISTS {
                    ?rel2 rdfs:subPropertyOf* am4:composedOf .
                }
                FILTER(?rel1 != ?rel2)
            }
        

NoCircularAggregationShape

SPARQL constraint: Circular aggregation is not allowed. Violation
            SELECT $this WHERE { $this am4:aggregates+ $this . }
        

NoCircularCompositionShape

SPARQL constraint: Circular composition is not allowed. Violation
            SELECT $this WHERE { $this am4:composedOf+ $this . }
        

NoSelfAggregationShape

SPARQL constraint: An element cannot aggregate itself. Violation
SELECT $this WHERE { $this am4:aggregates $this . }

NoSelfCompositionShape

SPARQL constraint: An element cannot compose itself. Violation
SELECT $this WHERE { $this am4:composedOf $this . }

NoSelfSpecializationShape

SPARQL constraint: An element cannot specialize itself. Violation
SELECT $this WHERE { $this am4:specializes $this . }

OrJunctionTypeShape — target: OrJunction

SPARQL constraint: All relationships connected to an OrJunction must be of the same type. Violation
            SELECT $this WHERE {
                {
                    ?a ?rel1 $this .
                    ?b ?rel2 $this .
                } UNION {
                    $this ?rel1 ?a .
                    $this ?rel2 ?b .
                } UNION {
                    ?a ?rel1 $this .
                    $this ?rel2 ?b .
                }
                ?rel1 rdfs:subPropertyOf* am4:composedOf .
                FILTER NOT EXISTS {
                    ?rel2 rdfs:subPropertyOf* am4:composedOf .
                }
                FILTER(?rel1 != ?rel2)
            }