Re: How looks ValidationReport + according ValidationResult for sh:or based shape?

Hi Konrad,

the spec uses a rather formal language to explain what is supposed to 
happen. In this particular case it states

if|v|conforms <https://www.w3.org/TR/shacl/#dfn-conforms>to none of 
themembers <https://www.w3.org/TR/shacl/#dfn-members>of|$or|there is 
avalidation result 
<https://www.w3.org/TR/shacl/#dfn-validation-results>with|v|as|sh:value|.

The test cases document

http://w3c.github.io/data-shapes/data-shapes-test-suite/#validate-rdf-data-tests

links to example(s) of what is supposed to be produced. This one here

https://github.com/w3c/data-shapes/blob/gh-pages/data-shapes-test-suite/tests/core/node/or-001.ttl

is close to what you seek, and produces

[
       rdf:type sh:ValidationReport ;
       sh:conforms "false"^^xsd:boolean ;
       sh:result [
           rdf:type sh:ValidationResult ;
           sh:focusNode ex:InvalidRectangle1 ;
           sh:resultSeverity sh:Violation ;
           sh:sourceConstraintComponent sh:OrConstraintComponent ;
           sh:sourceShape ex:RectangleWithArea ;
           sh:value ex:InvalidRectangle1 ;
         ] ;
       sh:result [
           rdf:type sh:ValidationResult ;
           sh:focusNode ex:InvalidRectangle2 ;
           sh:resultSeverity sh:Violation ;
           sh:sourceConstraintComponent sh:OrConstraintComponent ;
           sh:sourceShape ex:RectangleWithArea ;
           sh:value ex:InvalidRectangle2 ;
         ] ;
     ] ;

So, regardless of the structure of the sh:or, it will only ever produce 
a single sh:ValidationResult, and not any "nested" ones (although 
sh:detail could be used to record these, outside of the standard behavior).

If things remain unclear, please follow up. The example you mention 
below doesn't have a data graph, so it's difficult to answer.

HTH
Holger


On 18/10/2017 18:59, Konrad Abicht wrote:
> Hello,
>
> i am currently working on a SHACL Core processor for PHP[1]. Handling 
> the ValidationReport as result of sh:or is unclear for me. The section 
> 4.6.3 of the spec[2] does not outline how the ValidationResult looks 
> like, if one, none or all shapes fail.
>
> Is there anything i missed in the specification? If not, can you 
> please give me a simple example of a ValidationReport and according 
> ValidationResults for a given sh:or?
>
>> :NodeShape
>>     rdf:type sh:NodeShape ;
>>     sh:targetClass foaf:Person ;
>>     sh:or ([
>>             sh:path foaf:firstName ;
>>             sh:minCount 1 ;
>>         ],
>>         [
>>             sh:path foaf:givenName ;
>>             sh:minCount 1 ;
>>         ]) .
>
>
> [1] - https://github.com/k00ni/shacl-php
> [2] - https://www.w3.org/TR/shacl/#OrConstraintComponent
>
> Thanks in advance!
>

Received on Thursday, 19 October 2017 00:34:29 UTC