- From: Peter F. Patel-Schneider <pfpschneider@gmail.com>
- Date: Sun, 15 May 2016 15:54:45 -0700
- To: Irene Polikoff <irene@topquadrant.com>, kcoyle@kcoyle.net, public-data-shapes-wg <public-data-shapes-wg@w3.org>
In RDF there is not going to be any difference between embedded and referenced shapes. I used "embedded" to emphasize that even blank node shapes that are only referenced from one other shape are considered when looking for shapes with scopes. peter On 05/15/2016 01:25 PM, Irene Polikoff wrote: > Is this only about ³embedded" shapes or also about any referenced shape? I > thought the latter. > > For example, the section 1.3 example with Issues and Users. UserShape has > no scope and it is not evaluated against any nodes. However, IssueShape > has a scope and it says that the objects of reportedBy must confirm to the > UserShape. As a result, objects of the triples with subjects that are > validated against the IssueShape and reportedBy predicates get validated > against the UserShape. > > > Irene > > > On 5/15/16, 1:37 PM, "Peter F. Patel-Schneider" <pfpschneider@gmail.com> > wrote: > >> 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 22:55:14 UTC