- From: Simon Steyskal <simon.steyskal@wu.ac.at>
- Date: Wed, 22 May 2019 11:41:46 +0200
- To: Håvard Ottestad <hmottestad@gmail.com>
- Cc: Public Shacl W3C <public-shacl@w3.org>
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