@@ -74,7 +74,7 @@ shsh:ShapeShape
74
74
sh:ignoredProperties, sh:in, sh:languageIn, sh:lessThan, sh:lessThanOrEquals, sh:maxCount, sh:maxExclusive,
75
75
sh:maxInclusive, sh:maxLength, sh:memberShape, sh:minCount, sh:minExclusive, sh:minInclusive, sh:minLength, sh:node, sh:nodeKind,
76
76
sh:not, sh:or, sh:pattern, sh:property, sh:qualifiedMaxCount, sh:qualifiedMinCount, sh:qualifiedValueShape,
77
- sh:qualifiedValueShape, sh:qualifiedValueShapesDisjoint, sh:qualifiedValueShapesDisjoint, sh:uniqueLang, sh:xone ,
77
+ sh:qualifiedValueShape, sh:qualifiedValueShapesDisjoint, sh:qualifiedValueShapesDisjoint, sh:uniqueLang, sh:xone,
78
78
sh:minListLength, sh:maxListLength, sh:uniqueMembers ;
79
79
80
80
sh:targetObjectsOf sh:memberShape ; # memberShape-node
@@ -123,14 +123,16 @@ shsh:ShapeShape
123
123
sh:maxCount 1 ; # deactivated-maxCount
124
124
sh:datatype xsd:boolean ; # deactivated-datatype
125
125
] ;
126
-
127
126
sh:property [
128
127
sh:path sh:and ;
129
- sh:node shsh:ListShape ; # and-node
128
+ sh:memberShape shsh:ShapeShape ; # and-memberShape
130
129
] ;
131
130
sh:property [
132
131
sh:path sh:class ;
133
- sh:nodeKind sh:IRI ; # class-nodeKind
132
+ sh:or (
133
+ [ sh:nodeKind sh:IRI ]
134
+ [ sh:memberShape [ sh:nodeKind sh:IRI ] ]
135
+ ) ; # class-nodeKind
134
136
] ;
135
137
sh:property [
136
138
sh:path sh:closed ;
@@ -139,16 +141,16 @@ shsh:ShapeShape
139
141
] ;
140
142
sh:property [
141
143
sh:path sh:ignoredProperties ;
142
- sh:node shsh:ListShape ; # ignoredProperties-node
143
- sh:maxCount 1 ; # multiple-parameters
144
- ] ;
145
- sh:property [
146
- sh:path ( sh:ignoredProperties [ sh:zeroOrMorePath rdf:rest ] rdf:first ) ;
147
- sh:nodeKind sh:IRI ; # ignoredProperties-members-nodeKind
144
+ sh:memberShape [ sh:nodeKind sh:IRI ] ; # languageIn-members-datatype
145
+ sh:minListLength 1 ; # languageIn-members-datatype
146
+ sh:maxCount 1 ; # multiple-parameters
148
147
] ;
149
148
sh:property [
150
149
sh:path sh:datatype ;
151
- sh:nodeKind sh:IRI ; # datatype-nodeKind
150
+ sh:or (
151
+ [ sh:nodeKind sh:IRI ]
152
+ [ sh:memberShape [ sh:nodeKind sh:IRI ] ]
153
+ ) ; # datatype-nodeKind
152
154
sh:maxCount 1 ; # datatype-maxCount
153
155
] ;
154
156
sh:property [
@@ -161,17 +163,14 @@ shsh:ShapeShape
161
163
] ;
162
164
sh:property [
163
165
sh:path sh:in ;
164
- sh:maxCount 1 ; # in-maxCount
165
- sh:node shsh:ListShape ; # in-node
166
+ sh:maxCount 1 ; # in-maxCount
167
+ sh:minListLength 1 ; # in-minListLength
166
168
] ;
167
169
sh:property [
168
170
sh:path sh:languageIn ;
169
- sh:maxCount 1 ; # languageIn-maxCount
170
- sh:node shsh:ListShape ; # languageIn-node
171
- ] ;
172
- sh:property [
173
- sh:path ( sh:languageIn [ sh:zeroOrMorePath rdf:rest ] rdf:first ) ;
174
- sh:datatype xsd:string ; # languageIn-members-datatype
171
+ sh:maxCount 1 ; # languageIn-maxCount
172
+ sh:minListLength 1 ; # languageIn-minListLength
173
+ sh:memberShape [ sh:datatype xsd:string ] ; # languageIn-members-datatype
175
174
] ;
176
175
sh:property [
177
176
sh:path sh:lessThan ;
@@ -185,7 +184,7 @@ shsh:ShapeShape
185
184
sh:path sh:maxCount ;
186
185
sh:datatype xsd:integer ; # maxCount-datatype
187
186
sh:maxCount 1 ; # maxCount-maxCount
188
- sh:minInclusive 0 ; # maxCount-minInclusive
187
+ sh:minInclusive 0 ; # maxCount-minInclusive
189
188
] ;
190
189
sh:property [
191
190
sh:path sh:maxExclusive ;
@@ -253,7 +252,7 @@ shsh:ShapeShape
253
252
] ;
254
253
sh:property [
255
254
sh:path sh:or ;
256
- sh:node shsh:ListShape ; # or-node
255
+ sh:memberShape shsh:ShapeShape ; # or-memberShape
257
256
] ;
258
257
sh:property [
259
258
sh:path sh:pattern ;
@@ -295,7 +294,7 @@ shsh:ShapeShape
295
294
] ;
296
295
sh:property [
297
296
sh:path sh:xone ;
298
- sh:node shsh:ListShape ; # xone-node
297
+ sh:memberShape shsh:ShapeShape ; # xone-memberShape
299
298
] .
300
299
301
300
shsh:NodeShapeShape
@@ -346,11 +345,7 @@ shsh:ShapesListShape
346
345
sh:targetObjectsOf sh:and ; # and-members-node
347
346
sh:targetObjectsOf sh:or ; # or-members-node
348
347
sh:targetObjectsOf sh:xone ; # xone-members-node
349
- sh:property [
350
- sh:path ( [ sh:zeroOrMorePath rdf:rest ] rdf:first ) ;
351
- sh:node shsh:ShapeShape ;
352
- ] .
353
-
348
+ sh:memberShape shsh:ShapeShape .
354
349
355
350
# A path of blank node path syntax, used to simulate recursion
356
351
_:PathPath
@@ -377,13 +372,15 @@ shsh:PathNodeShape
377
372
sh:xone ( # path-metarule
378
373
[ sh:nodeKind sh:IRI ] # 2.3.1.1: Predicate path
379
374
[ sh:nodeKind sh:BlankNode ; # 2.3.1.2: Sequence path
380
- sh:node shsh:PathListWithAtLeast2Members ;
375
+ sh:memberShape shsh:PathShape ; # sequence-memberShape
376
+ sh:minListLength 2 ; # sequence-minListLength
381
377
]
382
378
[ sh:nodeKind sh:BlankNode ; # 2.3.1.3: Alternative path
383
379
sh:closed true ;
384
380
sh:property [
385
381
sh:path sh:alternativePath ;
386
- sh:node shsh:PathListWithAtLeast2Members ;
382
+ sh:memberShape shsh:PathShape ; # alternativePath-memberShape
383
+ sh:minListLength 2 ; # alternativePath-minListLength
387
384
sh:minCount 1 ;
388
385
sh:maxCount 1 ;
389
386
]
@@ -422,14 +419,6 @@ shsh:PathNodeShape
422
419
]
423
420
) .
424
421
425
- shsh:PathListWithAtLeast2Members
426
- a sh:NodeShape ;
427
- sh:node shsh:ListShape ;
428
- sh:property [
429
- sh:path [ sh:oneOrMorePath rdf:rest ] ;
430
- sh:minCount 2 ; # 1 other list node plus rdf:nil
431
- ] .
432
-
433
422
shsh:ShapesGraphShape
434
423
a sh:NodeShape ;
435
424
sh:targetObjectsOf sh:shapesGraph ;
0 commit comments