W3C home > Mailing lists > Public > public-data-shapes-wg@w3.org > May 2016

Re: Simplification of scopes section (see also ISSUE-148)

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>
Message-ID: <96894ec2-dbc7-28b2-d9c6-11b81c1aa480@gmail.com>
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

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 19:30:33 UTC