Re: ISSUE-22: Proposal based on sh:hasShape

Holger Knublauch <holger@topquadrant.com> wrote on 06/10/2015 06:11:24 PM:

> From: Holger Knublauch <holger@topquadrant.com>
> To: RDF Data Shapes Working Group <public-data-shapes-wg@w3.org>
> Date: 06/10/2015 06:13 PM
> Subject: ISSUE-22: Proposal based on sh:hasShape
> 
> I would like to write down the solution to the recursion issue that I 
> have currently implemented in my prototype, and welcome comments whether 

> this would resolve the issue.
> 
> Recursive evaluation of shapes can only be triggered via the sh:hasShape 

> function. sh:hasShape takes three arguments:
> 
>      sh:hasShape(?focusNode, ?shape, ?shapesGraph)
> 
> Proposal: sh:hasShape must fail with a constraint violation, if it 
> encounters a recursive call involving the same combination of arguments. 


I'd like to know what makes you choose to declare this a failure. Couldn't 
we just as well decide that in this case the recursion stops there 
assuming the constraint is satisfied (for the next iteration)?
This would mean that Peter's example in ISSUE-66 would be valid:

ex:i rdf:type ex:C .
ex:i ex:p ex:i .

with the shape

exs:S rdf:type sh:Shape;
sh:classScope ex:C ; 
sh:property [ sh:predicate ex:p ;
sh:minCount 1 ; sh:maxCount 1 ;
sh:valueShape exs:S ] . 

As a user this seems quite natural to me but maybe there are other 
examples for which this wouldn't be the case. I don't know.
--
Arnaud  Le Hors - Senior Technical Staff Member, Open Web Technologies - 
IBM Software Group

> The constraint violation could have a system generated message such as 
> "Failed to evaluate constraint due to unsupported recursive use of 
> sh:hasShape" and point at the focus node that was visited twice.
> 
> This would still allow most interesting cases that involve recursion 
> between shapes, but excludes cases where the same instances are visited 
> more than once.
> 
> What am I missing?
> 
> Thanks,
> Holger
> 
> 

Received on Thursday, 11 June 2015 23:30:35 UTC