-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathRelationshipElementShape.ttl
More file actions
145 lines (133 loc) · 4.17 KB
/
RelationshipElementShape.ttl
File metadata and controls
145 lines (133 loc) · 4.17 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
@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 rami: <https://w3id.org/i40/rami#> .
<#RelationshipElementShape>
a sh:NodeShape ;
sh:targetClass rami:RelationshipElement ;
sh:property [
sh:path rdf:type ;
sh:minCount 1 ; # redundant
] ;
sh:property [
sh:path rami:first ;
sh:class rami:Referable ;
sh:minCount 1 ;
sh:maxCount 1 ;
sh:severity sh:Violation ;
sh:message "rami:first is taking the role of the subject."@en ;
] ;
sh:property [
sh:path rami:second ;
sh:class rami:Referable ;
sh:minCount 1 ;
sh:maxCount 1 ;
sh:severity sh:Violation ;
sh:message "rami:second in rami:RelationshipElement is taking the role of the object."@en ;
] ;
#################################
# inherits from SubmodelElement #
#################################
sh:property [
sh:path rami:idShort ;
sh:valueDatatype xsd:string ;
sh:minCount 1 ;
sh:severity sh:Violation ;
sh:message "Each submodel element must have at least one short ID with datatype xsd:string."@en ;
] ;
# sh:property [
# sh:path rami:semanticId ;
# sh:nodeKind sh:IRI ;
# sh:minCount 1 ;
# sh:severity sh:Violation ;
# sh:message "Each SubmodelElement must have at least one semanticId attribute."@en ;
# ] ;
##############################################
# rami:semanticID is specified by RDF itself #
##############################################
#############################################
# SubmodelElement inherits from Qualifiable #
#############################################
sh:property [
sh:path rami:qualifier ;
sh:minCount 0 ;
sh:constraint [
sh:nodeKind sh:URI ;
] ;
sh:severity sh:Violation ;
sh:message "rami:qualifier must be point to a proper URI."@en ;
] ;
#############################################
# SubmodelElement inherits from Referable #
#############################################
sh:property [
sh:path rami:idShort ;
sh:valueDatatype xsd:string ;
sh:minCount 0 ;
sh:maxCount 1 ;
sh:severity sh:violation ;
sh:message "..."@en ;
] ;
sh:property [
sh:path rami:category ;
sh:valueDatatype xsd:string ;
sh:minCount 0 ;
sh:maxCount 1 ;
sh:severity sh:violation ;
sh:message "..."@en ;
] ;
sh:property [
sh:path rami:description ;
sh:valueDatatype xsd:langString ;
sh:minCount 0 ;
sh:maxCount 1 ;
sh:severity sh:violation ;
sh:message "..."@en ;
] ;
sh:property [
sh:path rami:parent ;
sh:class rami:Referable ;
sh:minCount 0 ;
sh:maxCount 1 ;
sh:severity sh:violation ;
sh:message "..."@en ;
] ;
#####################################
# inherits from DataSpecification #
#####################################
sh:property [
sh:path rami:hasDataSpecification ;
sh:minCount 0 ;
sh:nodeKind sh:URI ;
sh:severity sh:Violation ;
sh:message "rami:hasDataSpecification must point to a proper URI."@en ;
] ;
sh:property [
sh:path rami:hasSubmodel ;
sh:class rami:Submodel ;
sh:minCount 0 ;
sh:message "A DataSpecification entity can have a rami:hasSubmodel relation to a rami:Submodel."@en ;
] ;
#####################################
# Submodel inherits from HasKind #
#####################################
# copied! #
#############
sh:property [
sh:path rami:hasKind ;
sh:minCount 0 ;
sh:maxCount 1 ;
sh:someOf [
sh:constraint [
sh:nodeKind sh:Type ;
] ;
sh:constraint [
sh:nodeKind rami:Instance ;
] ;
] ;
sh:severity sh:Violation ;
sh:message "rami:hasKind must be either a rami:Instance or a rami:Type ."@en ;
] .