- 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