- From: Simon Steyskal <simon.steyskal@wu.ac.at>
- Date: Fri, 21 Aug 2015 12:47:51 +0200
- To: Holger Knublauch <holger@topquadrant.com>
- Cc: public-data-shapes-wg@w3.org
Hi!
I've tried it with TopBraid & your API but both don't complain when
evaluating the following:
ex:QualifiedValueShapeExampleShape
a sh:ShapeClass ;
sh:property [
sh:predicate ex:parent ;
sh:minCount 3 ;
sh:maxCount 3 ;
sh:qualifiedValueShape [
sh:property [
sh:predicate ex:gender ;
sh:hasValue ex:female ;
]
] ;
sh:qualifiedMinCount 1 ;
sh:qualifiedValueShape [
sh:property [
sh:predicate ex:gender ;
sh:hasValue ex:male;
]
] ;
sh:qualifiedMinCount 1 ;
] .
ex:test a ex:QualifiedValueShapeExampleShape ;
ex:parent [ ex:gender ex:female ] ;
ex:parent [ ex:gender ex:female ] ;
ex:parent [ ex:gender ex:female ] .
(They do however raise an error, if minCount/maxCount are violated.)
simon
---
DDipl.-Ing. Simon Steyskal
Institute for Information Business, WU Vienna
www: http://www.steyskal.info/ twitter: @simonsteys
Am 2015-08-21 12:26, schrieb Holger Knublauch:
> On 8/21/2015 17:13, RDF Data Shapes Working Group Issue Tracker wrote:
>> shapes-ISSUE-83 (multiple sh:qualifiedValueShapes): How should
>> multiple definitions of sh:qualifiedValueShape of a property
>> constraint be treated? [SHACL Spec]
>>
>> http://www.w3.org/2014/data-shapes/track/issues/83
>>
>> Raised by: Simon Steyskal
>> On product: SHACL Spec
>>
>> Hi!
>>
>> The current specification does not specify how multiple
>> sh:qualifiedValueShapes should be treated when they are used within a
>> single property constraint.
>>
>> For example, if I want to specify that there must exist exactly 3
>> values for ex:parent where at least 1 of them must be ex:female (and
>> ex:male respectively), the current specification does not prohibit me
>> from writing something like this:
>>
>> ex:QualifiedValueShapeExampleShape
>> a sh:Shape ;
>> sh:property [
>> sh:predicate ex:parent ;
>> sh:minCount 3 ;
>> sh:maxCount 3 ;
>> sh:qualifiedValueShape [
>> sh:property [
>> sh:predicate ex:gender ;
>> sh:hasValue ex:female ;
>> ]
>> ] ;
>> sh:qualifiedMinCount 1 ;
>> sh:qualifiedValueShape [
>> sh:property [
>> sh:predicate ex:gender ;
>> sh:hasValue ex:male;
>> ]
>> ] ;
>> sh:qualifiedMinCount 1 ;
>> ] .
>
> This is syntactically invalid, although I believe this was not
> explicitly stated in the text document of the spec. The Turtle file
> has sh:AbstractArgumentMaxCountConstraint with the corresponding test.
> Since it's already beer-o-clock here, could you double-check that you
> get a constraint violation when you validate the snippet above? It
> should flag the duplicate value for sh:qualifiedValueShape.
>
> Meanwhile I have added a sentence to make clear that template
> instances can at most have one value per argument predicate.
>
> To express what you want, use two different sh:property blocks
>
> ex:QualifiedValueShapeExampleShape
> a sh:Shape ;
> sh:property [
> sh:predicate ex:parent ;
> sh:minCount 3 ;
> sh:maxCount 3 ;
> sh:qualifiedValueShape [
> sh:property [
> sh:predicate ex:gender ;
> sh:hasValue ex:female ;
> ]
> ] ;
> sh:qualifiedMinCount 1 ;
> ] ;
> sh:property [
> sh:qualifiedValueShape [
> sh:property [
> sh:predicate ex:gender ;
> sh:hasValue ex:male;
> ]
> ] ;
> sh:qualifiedMinCount 1 ;
> ] .
>
>
>>
>> Of course, one way to approach that would be to use sh:AndConstraint
>> for >1 qualifiedValueShapes, but that's not explicitly mentioned in
>> the draft.
>>
>> btw. there is a typo in the code example of the draft ->
>>
>> sh:predicate [
>> sh:predicate ex:gender ;
>
> Thanks, both fixed on my current branch:
>
> https://github.com/w3c/data-shapes/commit/da1819e33f24b3a26f140bac412fe36385e6f963
>
> Holger
Received on Friday, 21 August 2015 10:48:18 UTC