- From: Peter F. Patel-Schneider <pfpschneider@gmail.com>
- Date: Wed, 15 Feb 2017 07:27:42 -0800
- To: "public-rdf-shapes@w3.org" <public-rdf-shapes@w3.org>
The recent addition of sh:qualifiedValueShapesDisjoint adds several negative aspects to SHACL. The definition of how sh:qualifiedValueShapesDisjoint works involves the term "parent", which is not defined. This is yet another example of sloppy definition in the SHACL document. It used to be that it was possible to determine whether a focus node conformed to a shape by just looking at the information in the shapes graph reachable by following links in a forward direction. With this change links have to be followed in a reverse direction as well. The addition does not add any expressive power as it can be easily captured by using slighly more complex shapes as the values of sh:qualifiedValueShape. What happens when an involved shape is used in several shapes, as in: ex:S1 a sh:Shape ; sh:targetClass ex:C1 ; sh:qualifiedValueShapesDisjoint true ; sh:property [ sh:path ex:p1 ; sh:qualifiedValueShape [ sh:class ex:C2 ] ; sh:qualifiedMinCount 1 ; sh:qualifiedMaxCount 1 ; ] ; sh:property ex:S2 . ex:S2 sh:path ex:p1 ; sh:qualifiedValueShape [ sh:class ex:C3 ] ; sh:qualifiedMinCount 1 ; sh:qualifiedMaxCount 1 . ex:S3 a sh:Shape ; sh:property ex:s2 . It seems to me that ex:S3 checks for exactly one ex:p1 value that is a SHACL instance of ex:C3 and not a SHACL instance of ex:C2. As this construct has problems and doesn't add any new capabilities there is no reason to retain it. Peter F. Patel-Schneider Nuance Communications
Received on Wednesday, 15 February 2017 15:28:17 UTC