Linked.Archi ArchiMate 4.0 Element & Metamodel Shapes
type: Ontology
imports: core#
imports: core-shapes#
license: http://creativecommons.org/licenses/by/4.0/
preferred namespace prefix: am4elsh
creator: Kalin Maldzhanski
description: SHACL shapes for validating ArchiMate 4.0 element instances and metamodel patterns. Adapted from 3.2 shapes for the domain-based structure of 4.0. Draft — needs validation against the ArchiMate 4.0 relationship validity matrix.
created: 2026-04-19
modified: 2026-04-29
publisher: Linked.Archi
publisher: linked.archi
status: draft
version IRI: 4.0#
version info: 4.0
declare:
  prefix: am4
  namespace: https://meta.linked.archi/archimate4/onto#
declare:
  prefix: arch
  namespace: https://meta.linked.archi/core#
declare:
  prefix: rdf
  namespace: http://www.w3.org/1999/02/22-rdf-syntax-ns#
declare:
  prefix: rdfs
  namespace: http://www.w3.org/2000/01/rdf-schema#

ArchiMateElementShape
type: NodeShape
target class: Element
property:
  path: prefLabel
  min count: 1
  datatype: langString
  message: Every ArchiMate element instance must have at least one skos:prefLabel.

NoSelfCompositionShape
type: NodeShape
target subjects of: composedOf
sparql:
  prefixes: Linked.Archi ArchiMate 4.0 Element & Metamodel Shapes
  message: An element cannot compose itself.
  select: SELECT $this WHERE { $this am4:composedOf $this . }

NoSelfAggregationShape
type: NodeShape
target subjects of: aggregates
sparql:
  prefixes: Linked.Archi ArchiMate 4.0 Element & Metamodel Shapes
  message: An element cannot aggregate itself.
  select: SELECT $this WHERE { $this am4:aggregates $this . }

NoSelfSpecializationShape
type: NodeShape
target subjects of: specializes
sparql:
  prefixes: Linked.Archi ArchiMate 4.0 Element & Metamodel Shapes
  message: An element cannot specialize itself.
  select: SELECT $this WHERE { $this am4:specializes $this . }

SpecializationSameTypeShape
type: NodeShape
target subjects of: specializes
sparql:
  prefixes: Linked.Archi ArchiMate 4.0 Element & Metamodel Shapes
  message: Specialization must connect elements of the same ArchiMate type.
  select: SELECT $this ?target WHERE { $this am4:specializes ?target . $this rdf:type ?sourceType . ?target rdf:type ?targetType . ?sourceType rdfs:subClassOf* arch:Element . ?targetType rdfs:subClassOf* arch:Element . FILTER NOT EXISTS { $this rdf:type ?commonType . ?target rdf:type ?commonType . ?commonType rdfs:subClassOf* arch:Element . } }

AccessTypeShape
type: NodeShape
target class: Access
property:
  path: accessType
  max count: 1
  datatype: string
  in: Read
  in: Write
  in: ReadWrite
  in: Access
  message: accessType must be one of: Read, Write, ReadWrite, Access.

InfluenceStrengthShape
type: NodeShape
target class: Influence
property:
  path: influenceStrength
  max count: 1
  datatype: string
  in: +
  in: ++
  in: -
  in: --
  message: influenceStrength must be one of: +, ++, -, --.

MotivationNoTriggeringShape
type: NodeShape
target subjects of: triggers
sparql:
  prefixes: Linked.Archi ArchiMate 4.0 Element & Metamodel Shapes
  message: Motivation elements cannot participate in triggering relationships.
  select: SELECT $this WHERE { $this am4:triggers ?target . $this rdf:type/rdfs:subClassOf* am4:MotivationElement . }

MotivationNoFlowShape
type: NodeShape
target subjects of: flowsTo
sparql:
  prefixes: Linked.Archi ArchiMate 4.0 Element & Metamodel Shapes
  message: Motivation elements cannot participate in flow relationships.
  select: SELECT $this WHERE { $this am4:flowsTo ?target . $this rdf:type/rdfs:subClassOf* am4:MotivationElement . }