- From: Peter F. Patel-Schneider <pfpschneider@gmail.com>
- Date: Sun, 15 May 2016 10:37:40 -0700
- To: kcoyle@kcoyle.net, public-data-shapes-wg <public-data-shapes-wg@w3.org>
SHACL has allowed embedded shapes from the beginning. Initially it allowed the embedding to be recursive, but this is currently not allowed. One construct that allows recursive shapes is sh:valueShape. See http://w3c.github.io/data-shapes/shacl/#constraints-shape for constructs that allow for embedded shapes, and http://w3c.github.io/data-shapes/shacl/#ValueShapeConstraintComponent for details on sh:valueShape. It is possible to have something like SHACL that does not do embedding at all. SPIN works this way, I think. Filters can also be used to get some of the effects of embedding, but I don't think that they are as expressive as embedding. However, there is a difference between filters and embedding in the validation results that would be returned. Note that the validation results for ex:s1 below are for a person who has a dependent without a SSN, not for the dependent. A non-embedding filter solution would produce validation results for the dependent itself. peter On 05/15/2016 07:42 AM, Karen Coyle wrote: > > > On 5/14/16 1:08 PM, Peter F. Patel-Schneider wrote: >> One problem with having all shapes initiate validation is that embedded shapes >> would as well. >> >> So in >> >> ex:s1 rdf:type sh:Shape ; >> sh:scopeClass ex:Person ; >> sh:property [ sh:predicate ex:dependent ; >> sh:valueShape [ a sh:Shape ; >> sh:property [ sh:predicate ex:SSN ; >> sh:minCount 1 ] ] ] . >> >> the scope of the embedded shape would be all nodes in the data graph, >> resulting in validation reports for any node that does not have a value for >> ex:SSN. > > I thought that filter shapes would be used if further refinement of the scope > is needed. This appears to be using a shape for that purpose (and I don't > recall this being mentioned before). Even with a defined scope it isn't clear > to me what the scope in the embedded shape would act on as its initial input, > since the spec says that a shapes graph is compared to a data graph, but the > result of scoping \= a new data graph. ? Anyway, is embedding shapes allowed? > If so, what are the rules for how that is implemented? > > kc > >> >> If all shapes are to have scopes then there are ways around this problem. One >> would be that shapes are not embedded in other shapes. Instead there would be >> a new kind of SHACL thing that is used when the current effect of embedding >> shapes in shapes is desired. >> >> peter >> >>
Received on Sunday, 15 May 2016 17:38:09 UTC