-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathAAS-Shape.ttl
More file actions
149 lines (141 loc) · 4.47 KB
/
AAS-Shape.ttl
File metadata and controls
149 lines (141 loc) · 4.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix aas: <https://admin-shell.io/aas/2/0/> .
# author: Sebastian Bader (sebastian.bader@iais.fraunhofer.de)
# Resources:
# RAMI Ontology: https://vocol.iais.fraunhofer.de/rami/
# W3C recommendation: https://www.w3.org/TR/shacl/
# SHACL syntax checking: http://shacl.org/playground/
# SHACL Advanced Features: https://w3c.github.io/data-shapes/shacl-af/
<#AasShape>
a sh:NodeShape ;
sh:targetClass aas:AssetAdministrationShell ;
sh:property [
sh:path rdf:type ;
sh:minCount 1 ; # this statement is redundant as each instance of type ids:Rule has at least one class relation (type).
#sh:message ""@en ;
] ;
sh:constraint [
sh:nodeKind sh:URI ;
sh:message "Each AAS object must be a URI."@en ;
] ;
sh:property [
sh:path aas:derivedFrom ;
sh:class aas:AssetAdministrationShell ;
sh:minCount 0 ;
sh:maxCount 1 ;
sh:severity sh:Violation ;
sh:message "Each AAS must be derived from either exactly 1 or none other AAS."@en ;
] ;
sh:property [
sh:path aas:security ;
sh:class aas:Security ;
sh:minCount 1 ;
sh:maxCount 1 ;
sh:severity sh:Violation ;
sh:message "Each AAS must be related to exactly one Security element through the security relation."@en ;
] ;
sh:property [
sh:path aas:asset ;
sh:class aas:Asset ;
sh:minCount 1 ;
sh:maxCount 1 ;
sh:severity sh:Violation ;
sh:message "Each AAS must be related to exactly one Asset through the asset relation."@en ;
] ;
# sh:property [
# sh:path aas:hasSubmodel ;
# sh:class aas:Submodel ;
# sh:minCount 0 ;
# #sh:message ""@en ;
# ] ; #otherwise the property is redundant, because it inherits also from DataSpecification
sh:property [
sh:path aas:conceptDescription ;
sh:class aas:ConceptDescription ;
sh:minCount 0 ;
#sh:message ""@en ;
] ;
sh:property [
sh:path aas:hasView ;
sh:class aas:View ;
sh:minCount 0 ; #Perhaps sh:minCount has to be 1 (see "AAS in detail", p. 65 Figure 33)
#sh:message ""@en ;
] ;
sh:property [
sh:path aas:hasKind ;
sh:class aas:AssetKind ;
sh:minCount 1 ;
sh:maxCount 1 ;
sh:severity sh:Violation ;
sh:message "Each AAS must be either of kind instance or type."@en ;
] ;
sh:constraint [
sh:nodeKind sh:URI ;
sh:message "Each AAS object must be a URI."@en ;
] ;
# AAS inherits from Identifiable
sh:property [
sh:path aas:administration ;
sh:minCount 0 ;
sh:maxCount 1 ;
sh:class aas:AdministrativeInformation ;
sh:severity sh:Violation ;
sh:message ""@en ;
] ;
sh:property [
sh:path aas:id ;
sh:minCount 0 ;
sh:message "An identifiable entity can have a aas:id."@en ;
] ;
# Identifiable inherits from Referable
sh:property [
sh:path aas:idShort ;
sh:valueDatatype xsd:string ;
sh:minCount 0 ;
sh:maxCount 1 ;
sh:severity sh:violation ;
sh:message "..."@en ;
] ;
sh:property [
sh:path aas:category ;
sh:valueDatatype xsd:string ;
sh:minCount 0 ;
sh:maxCount 1 ;
sh:severity sh:violation ;
sh:message "..."@en ;
] ;
sh:property [
sh:path aas:description ;
sh:valueDatatype xsd:langString ;
sh:minCount 0 ;
sh:maxCount 1 ;
sh:severity sh:violation ;
sh:message "..."@en ;
] ;
sh:property [
sh:path aas:parent ;
sh:class aas:Referable ;
sh:minCount 0 ;
sh:maxCount 1 ;
sh:severity sh:violation ;
sh:message "..."@en ;
] ;
# AAS inherits from DataSpecification
sh:property [
sh:path aas:hasDataSpecification ;
sh:class aas:Reference ;
sh:minCount 0 ;
sh:nodeKind sh:IRI ; # class Reference is not part of the ontology
sh:severity sh:Violation ;
sh:message "aas:hasDataSpecification must point to a proper URI."@en ;
] ;
sh:property [
sh:path aas:hasSubmodel ;
sh:class aas:Submodel ;
sh:minCount 0 ;
sh:message "A DataSpecification entity can have a aas:hasSubmodel relation to a aas:Submodel."@en ;
] .