- From: Holger Knublauch <holger@topquadrant.com>
- Date: Sat, 17 Dec 2016 13:06:49 +1000
- To: "public-data-shapes-wg@w3.org" <public-data-shapes-wg@w3.org>
I have meanwhile created a branch that implements the change described below, and the definitions are now more consistent. The branch can be compared to the base at https://github.com/w3c/data-shapes/compare/restructuring The diff looks scary on GitHub because it also includes the other restructuring that I had indicated in the meeting. The terminology is now consistently using - constraint: any condition - constraint component: parameters of a constraint - shape: a constraint that is about focus nodes - property constraint: a constraint that is about a property at a focus node and the flow of section 2 starts with the commonalities of all constraints before talking about the differences between shapes and property constraints. While doing this restructuring I mostly just moved existing text around without invalidating what was already painfully reviewed and refined before. On this branch I did make a change that should clarify the various corner cases that were previously pointed out (by Peter among others): Now, a shapes graph is ill-formed if it contains any ill-formed node. A constraint is ill-formed if it has more than one constraint type, i.e. shapes and property constraints are *disjoint*. And property constraints are now clearly identifies by incoming sh:property links. Then, the definition of validation states that if an ill-formed shapes graph is encountered, then the result is undefined and some implementations MAY produce a failure. In Peter's proposal ill-defined shapes graphs always cause failures but I believe the working group had discussed this before and concluded that this would require too much overhead from an implementation to walk through all syntax rules. I am open to changing this policy though if people feel differently now. Other changes on this branch are general improvements and clean up. I have not yet had the time to compare with the definitions from Peter's draft for potential reuse. My suggestion is to move this branch into production, but I need some feedback before doing this. @Dimitris, in case you plan any edits, I leave it to your judgement whether you want to continue on that branch to simplify merging later. I hope you agree this new structure is better than what we had before, even if only a step in the right direction. Thanks, Holger PS: I will be traveling from tomorrow onwards yet I will try to be on the Wednesday WG call, if that happens. On 16/12/2016 13:29, Holger Knublauch wrote: > One aspect where the design proposed by Dimitris is nicer is that > everything is uniformly treated as a constraint component. So not only > sh:minCount is backed by a constraint component but also sh:property > and sh:sparql. I think this would be a worthwhile way of defining them > and the cost of this change is low. I cannot think of changes this > would have for users. > > So basically, the new sh:PropertyConstraintComponent would be defined > to perform validation of the focus node against all property > constraints (the values of sh:property). All resulting validation > results would be copied into the results graph. (This is BTW different > from sh:shape, where the nested results are *not* becoming top-level > results but only values for sh:detail). > > And sh:SPARQLConstraintComponent would be defined to execute the given > SPARQL query and use the resulting validation results. > > After this change, we can simplify the definition of validation to be > about all components of the given constraint. > > How does this sound (as a belated compromise)? > > (I did not raise a formal issue yet but if there is support then we > can for example make an addendum to the resolution of ISSUE-211). > > Holger >
Received on Saturday, 17 December 2016 03:07:27 UTC