Logical Constraint Components with multiple SHACL lists are underspecified
Opened this issue · 1 comments
bergos commented
The specification isn't clear about what an implementation should do if a shape has multiple lists of logical constraint components of the same type. The following example could be interpreted as
- (shapeA || shapeB) && (shapeC || shapeD)
- shapeA || shapeB || shapeC || shapeD
ex:shapeRoot a sh:NodeShape;
sh:or
(ex:shapeA ex:shapeB),
(ex:shapeC ex:shapeD).
It looks like most implementations use option 2, but it should be written more clearly in the specification.
HolgerKnublauch commented
All constraints in SHACL eventually get ANDed for execution, i.e. the correct interpretation is 1. The target nodes need be A or B, and then also C or D.