- From: Peter F. Patel-Schneider <pfpschneider@gmail.com>
- Date: Mon, 20 Mar 2017 08:52:54 -0700
- To: public-rdf-shapes@w3.org
The definition of sibling shapes created in response to this formal objection does not have any formal problems so I withdraw it. Peter F. Patel-Schneider Nuance Communications On 02/27/2017 04:01 AM, Peter F. Patel-Schneider wrote: > This is a revised formal objection to how ISSUE-92 was closed. (I have fixed a > couple of important typos in the example shapes graph and added prefix > directives.) > > > The closure resulted in the addition of sh:qualifiedValueShapesDisjoint and > the following wording: > > TEXTUAL DEFINITION of Sibling Shapes > Let Q be a shape in shapes graph G that declares a qualified cardinality > constraint (by having a values for sh:qualifiedValueShape and at least one > of sh:qualifiedMinCount or sh:qualifiedMaxCount). If G contains a shape p > that has Q as a value of sh:property and also true as its value for > sh:qualifiedValueShapesDisjoint, then the set of sibling shapes is defined > as the set of all values of the SPARQL property path > sh:property/sh:qualifiedValueShape starting at p minus the value of > sh:qualifiedValueShape of Q itself. The set of sibling shapes is empty > otherwise. > > TEXTUAL DEFINITION of sh:qualifiedMinCount > Let C be the number of value nodes v where validating v against the shape > $qualifiedValueShape produces no validation results and where validating v > against each of the sibling shapes produces some validation results. A > failure MUST be produced if the said validations of any of the value nodes > has produced a failure. Otherwise, a validation result MUST be produced if C > is less than $qualifiedMinCount. The constraint component for > sh:qualifiedMinCount is sh:QualifiedMinCountConstraintComponent. > > > First, the definition of sibling shapes is missing context. It cannot be > the case that there is a single set of sibling shapes for the entire shapes > graph, as indicated in the definition. The definition of sibling shapes > needs to be contextualized in some way. The only suitable contextualization > appears to be to define the sibling shapes of a shape as that is the only > context that is available for the definition of sh:qualifiedMinCount. > > However, this contextualization is not adequate. The definition of sibling > shapes depends not only on the shape itself but also on shapes that refer to > the shape. This results in several sets of sibling shapes which in turn > leads to several possible meanings for a particular shape. > > > Consider the following shapes graph: > > @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . > @prefix sh: <http://www.w3.org/ns/shacl#> . > @prefix ex: <http://example.org/> . > > ex:s2 rdf:type sh:NodeShape ; > sh:targetClass ex:C1 ; > sh:qualifiedValueShapeDisjoint true ; > sh:property ex:qs1 ; > sh:property ex:qs2 . > > ex:s3 rdf:type sh:NodeShape ; > sh:targetClass ex:C1 ; > sh:qualifiedValueShapeDisjoint true ; > sh:property ex:qs1 ; > sh:property ex:qs2 ; > sh:property ex:qs3 . > > ex:qs1 rdf:type sh:PropertyShape ; > sh:path ex:p1 ; > sh:qualifiedValueShape ex:sx1 ; > sh:qualifiedMinCount 1 . > > ex:qs2 rdf:type sh:PropertyShape ; > sh:path ex:p2 ; > sh:qualifiedValueShape ex:sx2 ; > sh:qualifiedMinCount 1 . > > ex:qs3 rdf:type sh:PropertyShape ; > sh:path ex:p3 ; > sh:qualifiedValueShape ex:sx3 ; > sh:qualifiedMinCount 1 . > > ex:sx1 rdf:type sh:NodeShape ; > sh:class ex:C1 . > > ex:sx2 rdf:type sh:NodeShape ; > sh:class ex:C2 . > > ex:sx3 rdf:type sh:NodeShape ; > sh:class ex:C3 . > > The sibling shapes of ex:qs1 are either { ex:sx2 } or { ex:sx2, ex:sx3 }. > The meaning of ex:qs1 for the first set of sibling shapes is that there must > be at least one value of ex:p1 that is a SHACL instance of ex:C1 but not of > ex:C2. The meaning of ex:qs1 for the second set of sibling shapes is that > there must be at least one value of ex:p1 that is a SHACL instance of ex:C1 > but not of ex:C2 or ex:C3. These are different meanings, and there is no > way to choose between them. > > > Even if this problem is overcome, sh:qualifiedValueShapesDisjoint introduces > a non-local aspect to validation in that it is no longer possible to > determine the behaviour of a shape by examining its property values. > > > Every use of sh:qualifiedValueShapesDisjoint can be replaced with a simple > change to the shapes involved. This change eliminates the problems with > sh:qualifiedValueShapesDisjoint and makes the meaning of the shapes involved > clearer. As sh:qualifiedValueShapesDisjoint adds no expressive power to > SHACL, the problems with its definition dictate that it simply needs to be > removed. ISSUE-92 can be resolved by noting that this form of additive > behaviour can be obtained using negation and conjunction. > > Peter F. Patel-Schneider > Nuance Communications >
Received on Monday, 20 March 2017 15:53:30 UTC