SHACL Shapes
https://meta.linked.archi/archimate4/element-shapes#
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.
SELECT $this WHERE {
$this am4:accesses ?target .
FILTER NOT EXISTS {
$this rdf:type/rdfs:subClassOf* am4:BehaviorElement .
}
}
SELECT $this WHERE {
?source am4:accesses $this .
FILTER NOT EXISTS {
$this rdf:type/rdfs:subClassOf* am4:PassiveStructureElement .
}
}
| Property | Constraint | Value | Severity | Message |
|---|---|---|---|---|
accessType |
datatype | string | Violation | |
accessType |
in | 7f942e52a74ead5a |
Violation | |
accessType |
maxCount | 1 |
Violation |
| Property | Constraint | Value | Severity | Message |
|---|---|---|---|---|
prefLabel |
datatype | langString | Violation | |
prefLabel |
minCount | 1 |
Violation |
SELECT $this WHERE {
$this am4:assignedTo ?target .
FILTER NOT EXISTS {
$this rdf:type/rdfs:subClassOf* am4:ActiveStructureElement .
}
}
SELECT $this WHERE {
?source am4:assignedTo $this .
FILTER NOT EXISTS {
$this rdf:type/rdfs:subClassOf* am4:BehaviorElement .
}
}
SELECT $this WHERE {
?whole1 am4:composedOf $this .
?whole2 am4:composedOf $this .
FILTER(?whole1 != ?whole2)
}
SELECT $this WHERE {
$this am4:specializes+ ?t1 .
?t1 am4:specializes+ ?t2 .
?t2 am4:specializes+ ?t3 .
?t3 am4:specializes+ ?t4 .
}
SELECT $this WHERE {
$this am4:flowsTo ?target .
FILTER NOT EXISTS {
$this rdf:type/rdfs:subClassOf* am4:BehaviorElement .
}
}
SELECT $this WHERE {
?source am4:flowsTo $this .
FILTER NOT EXISTS {
$this rdf:type/rdfs:subClassOf* am4:BehaviorElement .
}
}
| Property | Constraint | Value | Severity | Message |
|---|---|---|---|---|
influenceStrength |
datatype | string | Violation | |
influenceStrength |
in | 7f942e52a74ead5f |
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* am4:composedOf .
FILTER NOT EXISTS {
?rel2 rdfs:subPropertyOf* am4:composedOf .
}
FILTER(?rel1 != ?rel2)
}
SELECT $this WHERE {
$this am4:flowsTo ?target .
$this rdf:type/rdfs:subClassOf* am4:MotivationElement .
}
SELECT $this WHERE {
$this am4:triggers ?target .
$this rdf:type/rdfs:subClassOf* am4:MotivationElement .
}
SELECT $this WHERE { $this am4:aggregates+ $this . }
SELECT $this WHERE { $this am4:composedOf+ $this . }
SELECT $this WHERE { $this am4:aggregates $this . }
SELECT $this WHERE { $this am4:composedOf $this . }
SELECT $this WHERE { $this am4: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* am4:composedOf .
FILTER NOT EXISTS {
?rel2 rdfs:subPropertyOf* am4:composedOf .
}
FILTER(?rel1 != ?rel2)
}
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 .
}
}
SELECT $this WHERE {
$this am4:triggers ?target .
FILTER NOT EXISTS {
$this rdf:type/rdfs:subClassOf* am4:BehaviorElement .
}
}
SELECT $this WHERE {
?source am4:triggers $this .
FILTER NOT EXISTS {
$this rdf:type/rdfs:subClassOf* am4:BehaviorElement .
}
}