- From: Peter F. Patel-Schneider <pfpschneider@gmail.com>
- Date: Thu, 14 Apr 2016 11:10:02 -0700
- To: Holger Knublauch <holger@topquadrant.com>, public-data-shapes-wg@w3.org
The text indicates that errors are counted, but the code appears to propagate them. peter On 04/10/2016 04:23 PM, Holger Knublauch wrote: > I believe the query is correct, but I have added a paragraph to make it a bit > clearer: > > Note that in the SPARQL query above, we assume that the |SUM| operation fails > if one of the values of |?s| is not a number. This mechanism is used by the > error handling, which sets |?s| to the string |'error'| whenever one of the > individual |sh:hasShape| calls fails. > > HTH > Holger > > > On 9/04/2016 7:11, RDF Data Shapes Working Group Issue Tracker wrote: >> shapes-ISSUE-146 (sh:qualifiedMinCount ): treatment of unbound results from sh:hasShape in sh:qualifiedMinCount (and elsewhere) [SHACL - Core] >> >> http://www.w3.org/2014/data-shapes/track/issues/146 >> >> Raised by: Peter Patel-Schneider >> On product: SHACL - Core >> >> It's hard to determine just what is going on in the SPARQL code, but appears that if any call to hasShape returns unbound then a validation result will be produced, which does not match the text. >> >> >> TEXTUAL DEFINITION of sh:qualifiedMinCount >> A validation result must be produced if the number of triples that have the focus node as its subject, the sh:predicate as its predicate and where validating the object against the shape specified by sh:qualifiedValueShape produces no validation results with severity sh:Violation or a failure is less than sh:qualifiedMinCount. The produced validation result must have the focus node as its sh:subject, and the sh:predicate as its sh:predicate. >> SPARQL DEFINITION of sh:qualifiedMinCount >> >> SELECT $this ($this AS ?subject) $predicate ?failure >> WHERE { >> { >> SELECT (SUM(?s) AS ?count) >> WHERE { >> { >> FILTER NOT EXISTS { $this $predicate ?value } . >> BIND (0 AS ?s) . >> } >> UNION >> { >> $this $predicate ?value . >> BIND (sh:hasShape(?value, $qualifiedValueShape, $shapesGraph) AS ?hasShape) . >> BIND (IF(bound(?hasShape), IF(?hasShape, 1, 0), 'error') AS ?s) . >> } >> } >> } >> BIND (!bound(?count) AS ?failure) . >> FILTER IF(?failure, true, ?count < $qualifiedMinCount) . >> } >> >> >> >> >> >
Received on Thursday, 14 April 2016 18:10:32 UTC