- From: Holger Knublauch <holger@topquadrant.com>
- Date: Sat, 11 Jul 2015 11:48:31 +1000
- To: public-data-shapes-wg@w3.org
sh:hasShape doesn't throw a fatal error by itself, but reports
"unbound". Every SPARQL function may return no binding, and queries can
chose how to handle this, e.g.
BIND (sh:hasShape(...) AS ?hasShape) .
FILTER bound(?hasShape) .
The "fatal error" (sh:FatalError) is created by the surrounding SHACL
engine based on the results of the SELECT queries. The current
convention in my draft is that sh:FatalError is triggered if a SELECT
query returns a variable ?error = true. We can of course change this
convention - maybe ?fatalError would be a better indicator.
This is all worked out on a branch, but I am not permitted to change the
main document anymore without resolutions from the WG. You can see the
current details in the shacl-ref document, e.g. at
http://w3c.github.io/data-shapes/shacl-ref/#AbstractValueShapePropertyConstraint
You can see there that the SELECT returns ?error=true if !bound(?hasShape)
The authors of custom constraints and macros using SPARQL can use the
same mechanisms to take full control over how they want to treat
unsupported recursion.
Please confirm if this resolves your issue.
HTH
Holger
On 7/11/15 12:32 AM, RDF Data Shapes Working Group Issue Tracker wrote:
> shapes-ISSUE-73 (sh:hasShape error handling): how do recursion errors from sh:hasShape interact with SPARQL [SHACL Spec]
>
> http://www.w3.org/2014/data-shapes/track/issues/73
>
> Raised by: Peter Patel-Schneider
> On product: SHACL Spec
>
> If sh:hasShape can throw a fatal error, then there needs to be a specification of how this error interacts with the rest of SPARQL.
>
> Otherwise the results of certain shape validations can depend on, for example, the order of evaluation of constructs that SPARQL leaves open.
>
> In a macro defined as
>
> orproperties(?p,?q,?s)
>
> expanding to
>
> SELECT ?this (?this as ?subject)
> WHERE {
> ?this ?p ?pv .
> ?this ?q ?qv .
> FILTER (sh:hasShape(?pv, ?s, ?shapesGraph)
> || sh:hasShape(?qv, ?s, ?shapesGraph) ) .
> }
>
> the results of validation could depend on the order in which the two sh:hasShapes are evaluated.
>
>
>
Received on Saturday, 11 July 2015 01:49:06 UTC