- From: Peter F. Patel-Schneider <pfpschneider@gmail.com>
- Date: Tue, 18 Apr 2017 07:02:36 -0700
- To: Holger Knublauch <holger@topquadrant.com>, "public-rdf-sha." <public-rdf-shapes@w3.org>
It is entirely possible that implementations will want to evaluate constraints in an optimized fashion. This opens up the possibility that different implementations will evaluate constraints different numbers of times. For example, a SHACL implementation might want to translate the shape in the shared test into something like the following SPARQL query: SELECT DISTINCT ?focus ?value ... WHERE { { { ex:i ex:p ?focus . } UNION { ex:i ex:q ?focus . } } ?focus ex:r ?value . FILTER NOT EXISTS { ?value rdf:type/rdfs:subClassOf* ex:C . } BIND ... } This then produces only one validation result for any node. As this variation is allowable, the SHACL test methodology should check for it. Peter F. Patel-Schneider Nuance Communications On 04/17/2017 06:31 PM, Holger Knublauch wrote: > Hi Peter, > > thanks for the updates. I had to make a further correction to one of your > files, which did not parse as valid Turtle. Meanwhile I have re-run my tests > and updated the results, showing two failures: > > 1) On the shared property shape test - we had discussed this topic before - > and my interpretation remains that the report should contain the result twice. > I have added a corresponding test case for that variation. Moving forward I > see the following options: > > a) The spec is clear > - that only one have to be produced (in which case variation 2 is removed) > - that two results have to be produced (in which case variation 1 is removed) > b) The spec leaves the interpretation open (in which case we should not have a > test case at all) > c) The spec has an error and we need to make adjustments > > I have no strong opinion either way and don't believe this scenario will > happen often in practice. > > 2) The pre-binding question is probably beyond what most people here > understand so I have contacted Andy for his input. > > I will put both topics on the agenda for the upcoming WG meeting. > > Holger > > > On 17/04/2017 23:36, Peter F. Patel-Schneider wrote: >> On 04/16/2017 05:55 PM, Holger Knublauch wrote: >>> Hi Peter, >>> >>> thanks for submitting 3 new test cases [1]. I made a couple of syntactic >>> corrections which you can track on github. Among the more critical changes >>> were: >>> >>> - the sh:value of the values.ttl test is ex:i, not 5, because the query does >>> not return ?value and in that case the engine reverts to using the value node >>> (which is the focus node in this case), see [2] >> Yes, I forgot to set value. Thanks for the fix, and the fix to >> sh:sourceConstraint. >> >> I added another test where both $this and ?value are set from one VALUES >> construct. >> >>> - I have deactivated the bind.ttl test case [3] because it is unclear what it >>> is supposed to demonstrate. My current Jena-based engine returns no violation >>> there, while your test seems to expect one violation. Could you explain the >>> motivation for the test and the reason for your expected result? >> This is a complex example. >> >> The empty BGP at the start of the query is removed because of the >> simplification step 18.2.2.8 so $this is not bound at the beginning of the >> query. The SELECT * WHERE { } does not bind $this because $this is not >> in-scope in it, even though $this has a value from the empty BGP in it. >> Because $this does not have a value the BIND leaves ?that unbound. Because >> ?that is unbound, the BGP matches against the triple ex:j a ex:bad in the >> data graph. As there is a solution there is a violation of the shape. >> >> I modified the test to use ?value instead of ?that and to return ?value to >> better utilize the behaviour of pre-binding. >> >>> - I have deactivated the shared.ttl test case [4] because it does not reflect >>> the SHACL spec. The given validation result expects that the sh:node >>> constraint is producing a violation with sh:ClassConstraintComponent as >>> sourceConstraintComponent. However, the validation of sh:node (as explained in >>> [5]) produces results with sh:NodeConstraintComponent as results. In other >>> words, the results only report on conformance of the sh:node, and do not >>> "walk" into it. Please feel free to submit an update to that test. >> Yes, I was incorrectly thinking that sh:node constraints also reported their >> component violations, not just an overall violation. I have modified the >> test to demonstrate the shared violation. >> >>> Regards, >>> Holger >>> >>> >>> [1] >>> >> https://github.com/w3c/data-shapes/pull/50/files/f857d2014900854ea1a0cf2ad498c9d0ae03cc0b..de60116e88470f51320e2442cce8698d7a44c6c8 >> >>> [2] https://www.w3.org/TR/shacl/#sparql-constraints-variables >>> [3] >>> >> https://github.com/w3c/data-shapes/tree/gh-pages/data-shapes-test-suite/tests/sparql/pre-binding >> >>> [4] >>> >> https://github.com/w3c/data-shapes/tree/gh-pages/data-shapes-test-suite/tests/core/validation-reports >> >>> [5] https://www.w3.org/TR/shacl/#NodeConstraintComponent >>> >> >> peter > >
Received on Tuesday, 18 April 2017 14:03:53 UTC