7
7
8
8
<http://w3id.org/rml/lv/shapes> a owl:Ontology ;
9
9
owl:imports <http://w3id.org/rml/core/shapes> ;
10
- owl:imports <http://w3id.org/rml/io/shapes> ;
11
10
.
12
11
13
12
# rml:LogicalView
@@ -23,6 +22,7 @@ rmlsh:LogicalViewShape a sh:NodeShape ;
23
22
- at least one rml:field property, with a rml:Field as its value.
24
23
""" ;
25
24
sh:targetClass rml:LogicalView ;
25
+ sh:targetSubjectsOf rml:viewOn ;
26
26
sh:targetObjectsOf rml:parentLogicalView ;
27
27
sh:property [
28
28
sh:description """
@@ -34,14 +34,14 @@ rmlsh:LogicalViewShape a sh:NodeShape ;
34
34
sh:path rml:viewOn ;
35
35
sh:minCount 1 ;
36
36
sh:maxCount 1 ;
37
- sh:node rmlsh:LogicalSource ;
37
+ sh:node rmlsh:RMLAbstractLogicalSourceShape ;
38
38
sh:nodeKind sh:BlankNodeOrIRI ;
39
39
] , [
40
40
sh:description """
41
41
A field of the logical view.
42
42
""" ;
43
43
sh:message """
44
- At least one rml:field property must be specified for a rml:LogicalView, with a resource as its value.
44
+ At least one rml:field property must be specified for a rml:LogicalView, with either an rml:ExpressionField or an rml:IterableField its value.
45
45
""" ;
46
46
sh:path rml:field ;
47
47
sh:minCount 1 ;
@@ -130,7 +130,35 @@ rmlsh:ExpressionFieldShape a sh:NodeShape ;
130
130
rml:ExpressionField requires what an rml:ExpressionMap and rml:Field requires.
131
131
""" ;
132
132
sh:targetClass rml:ExpressionField ;
133
- sh:node rmlsh:RMLExpressionMapShape, rmlsh:Field ;
133
+ sh:node rmlsh:RMLExpressionMapShape ;
134
+ ## Not using sh:node rmlsh:Field here due to shape recursion problem https://github.com/RDFLib/pySHACL/issues/154
135
+ sh:property [
136
+ sh:description """
137
+ The name of the field.
138
+ """ ;
139
+ sh:message """
140
+ Exactly one rml:fieldName property must be specified for a rml:Field, with a string as its value.
141
+ """ ;
142
+ sh:path rml:fieldName ;
143
+ sh:minCount 1 ;
144
+ sh:maxCount 1 ;
145
+ sh:datatype xsd:string ;
146
+ sh:nodeKind sh:Literal ;
147
+ ] , [
148
+ sh:description """
149
+ A child field of the field.
150
+ """ ;
151
+ sh:message """
152
+ The value of a rml:field property for a rml:Field must be a resource.
153
+ """ ;
154
+ sh:path rml:field ;
155
+ sh:nodeKind sh:BlankNodeOrIRI ;
156
+ ## Disabled due to shape recursion. This is covered by rmlsh:FieldShape
157
+ # sh:xone (
158
+ # [ sh:node rmlsh:ExpressionFieldShape ]
159
+ # [ sh:node rmlsh:IterableFieldShape ]
160
+ # )
161
+ ]
134
162
.
135
163
136
164
rmlsh:IterableFieldShape a sh:NodeShape ;
@@ -144,21 +172,32 @@ rmlsh:IterableFieldShape a sh:NodeShape ;
144
172
Furthermore, rml:IterableField requires what an rml:Iterable and rml:Field requires.
145
173
""" ;
146
174
sh:targetClass rml:IterableField ;
147
- sh:node rmlsh:Iterable, rmlsh:Field ; # TODO requires rmlsh:Iterable to be defined in core
175
+ sh:node rmlsh:RMLIterableShape ;
176
+ ## Not using sh:node rmlsh:Field here due to shape recursion problem https://github.com/RDFLib/pySHACL/issues/154
177
+ sh:property [
178
+ sh:description """
179
+ The name of the field.
180
+ """ ;
181
+ sh:message """
182
+ Exactly one rml:fieldName property must be specified for a rml:Field, with a string as its value.
183
+ """ ;
184
+ sh:path rml:fieldName ;
185
+ sh:minCount 1 ;
186
+ sh:maxCount 1 ;
187
+ sh:datatype xsd:string ;
188
+ sh:nodeKind sh:Literal ;
189
+ ] ;
148
190
sh:property [
149
191
sh:description """
150
192
A child field of the iterable field.
151
193
""" ;
152
194
sh:message """
153
- The value of a rml:field property for a rml:Field must be a resource.
195
+ The value of a rml:field property for a rml:Field must be a resource that describes an rml:ExpressionField .
154
196
""" ;
155
197
sh:path rml:field ;
156
198
sh:minCount 1 ;
157
199
sh:nodeKind sh:BlankNodeOrIRI ;
158
- sh:xone (
159
- [ sh:node rmlsh:ExpressionFieldShape ]
160
- [ sh:node rmlsh:IterableFieldShape ]
161
- )
200
+ sh:node rmlsh:ExpressionFieldShape ;
162
201
] .
163
202
164
203
rmlsh:LogicalViewJoinShape a sh:NodeShape ;
0 commit comments