Re: More questions about negation and uniqueLang

Hi!

> Could anyone share some insight into how this was meant to work? Maybe
> it was discussed while the SHACL standard was created?

The issue with your example is that sh:not expects a well-formed shape 
which [sh:uniqueLang true] isn't. In fact, 
https://www.w3.org/TR/shacl/#UniqueLangConstraintComponent says:
.) A property shape has at most one value for sh:uniqueLang.
.) Node shapes cannot have any value for sh:uniqueLang.

This works in https://shacl.org/playground/

ex:NotExampleShape
 a sh:NodeShape ;
 sh:targetClass ex:Person ;
 sh:not [
  a sh:PropertyShape ;
  sh:path ex:name ;
  sh:uniqueLang true ;
 ] .


ex:peter a ex:Person ;
ex:name "name"@en ,  "name2"@en  .

ex:peter2 a ex:Person ;
ex:name "name"@en   .

ex:peter3 a ex:Person ;
    ex:name 1   .

=>

[
 a sh:ValidationResult ;
 sh:resultSeverity sh:Violation ;
 sh:sourceConstraintComponent sh:NotConstraintComponent ;
 sh:sourceShape ex:NotExampleShape ;
 sh:focusNode ex:peter2 ;
 sh:value ex:peter2 ;
 sh:resultMessage "Value does have shape Blank node _:n1032" ;
] .
[
 a sh:ValidationResult ;
 sh:resultSeverity sh:Violation ;
 sh:sourceConstraintComponent sh:NotConstraintComponent ;
 sh:sourceShape ex:NotExampleShape ;
 sh:focusNode ex:peter3 ;
 sh:value ex:peter3 ;
 sh:resultMessage "Value does have shape Blank node _:n1032" ;
] .

br simon
---
DDipl.-Ing. Simon Steyskal
Institute for Information Business, WU Vienna

www: http://www.steyskal.info/  twitter: @simonsteys

Am 2019-05-22 10:39, schrieb Håvard Ottestad:
> Hi,
> 
> I have some more questions about negation and uniqueLang.
> 
> This is my SHACL:
> 
> 
> ex:PersonShape
>   a sh:NodeShape  ;
>   sh:targetClass foaf:Person ;
>   sh:property ex:PersonShapeProperty .
> 
> ex:PersonShapeProperty
>   sh:path foaf:name ;
>   sh:not [sh:uniqueLang true ].
> 
> 
> Essentially. Every person may not have names that are unique by their
> language tag.
> 
> Here are three examples.
> 
> ——————
> 
> ex:peter a foaf:Person ;
>   foaf:name "name"@en ,  "name2"@en  .
> 
> ——————
> 
> ex:peter a foaf:Person ;
>   foaf:name "name"@en   .
> 
> ——————
> 
> ex:peter a foaf:Person ;
>   foaf:name 1   .
> 
> ——————
> 
> 
> I would argue that at the first dataset should be valid, the second
> should be invalid and the third is somewhat undefined.
> 
> I have tested these examples against the TopBraid reference
> implementation, which doesn’t implement this functionality. It also
> doesn’t implement  sh:not [sh:minCount 1 ] og sh:not [sh:maxCount 1 ].
> Here is the kind of error message I get:
> 
> SHACL Validation Failure: No suitable validator found for constraint
> Constraint UniqueLangConstraintComponent at
> be6038563d3eba1a2f570dfa212bc4bd
> 
> Could anyone share some insight into how this was meant to work? Maybe
> it was discussed while the SHACL standard was created?
> 
> Cheers,
> Håvard

Received on Wednesday, 22 May 2019 09:42:14 UTC