SHACL Shapes
https://meta.linked.archi/archimate3/element-shapes#
SHACL shapes for validating ArchiMate 3.2 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, the direction of serving between layers (a warning), a gap associated with plateaus, attribute values, junctions joining relationships of one type, and deep specialization chains. Which element types a relationship may connect is checked by archimate3.2-relationship-shapes.ttl, generated from the specification's relationship tables (Appendix B), and is not repeated here.
| Property | Constraint | Value | Severity | Message |
|---|---|---|---|---|
accessType |
maxCount | 0 |
Violation |
| Property | Constraint | Value | Severity | Message |
|---|---|---|---|---|
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 |
SELECT $this WHERE {
?whole1 am:composedOf $this .
?whole2 am:composedOf $this .
FILTER(?whole1 != ?whole2)
}
SELECT $this WHERE {
$this am:specializes+ ?t1 .
?t1 am:specializes+ ?t2 .
?t2 am:specializes+ ?t3 .
?t3 am:specializes+ ?t4 .
}
SELECT $this WHERE {
FILTER NOT EXISTS {
{
$this am:associatedWith ?plateau .
?plateau a am:Plateau .
} UNION {
?plateau am:associatedWith $this .
?plateau a am:Plateau .
}
}
}
| Property | Constraint | Value | Severity | Message |
|---|---|---|---|---|
influenceStrength |
datatype | string | Violation | |
influenceStrength |
in | 19957834bcaaf2bb |
Violation | |
influenceStrength |
maxCount | 1 |
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* am:composedOf .
FILTER NOT EXISTS {
?rel2 rdfs:subPropertyOf* am:composedOf .
}
FILTER(?rel1 != ?rel2)
}
SELECT $this WHERE { $this am:aggregates+ $this . }
SELECT $this WHERE { $this am:composedOf+ $this . }
SELECT $this WHERE { $this am:aggregates $this . }
SELECT $this WHERE { $this am:composedOf $this . }
SELECT $this WHERE { $this am:specializes $this . }
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* am:composedOf .
FILTER NOT EXISTS {
?rel2 rdfs:subPropertyOf* am:composedOf .
}
FILTER(?rel1 != ?rel2)
}
SELECT $this ?target WHERE {
$this am:serves ?target .
{
$this rdf:type/rdfs:subClassOf* am:BusinessLayerElement .
?target rdf:type/rdfs:subClassOf* am:ApplicationLayerElement .
} UNION {
$this rdf:type/rdfs:subClassOf* am:BusinessLayerElement .
?target rdf:type/rdfs:subClassOf* am:TechnologyLayerElement .
} UNION {
$this rdf:type/rdfs:subClassOf* am:ApplicationLayerElement .
?target rdf:type/rdfs:subClassOf* am:TechnologyLayerElement .
}
}