Re: ISSUE-139: uniform descriptions and implementations of constraint components

On 9/06/2016 14:40, Karen Coyle wrote:
> sh:scopeClass <foaf:Person> and sh:scopeNode <foaf:Person> appear to 
> identify the same focus node(s) in the data graph.

sh:scopeNode means "the (class) node itself".
sh:scopeClass means "all SHACL instances of the class".

So they do not identify the same focus nodes.

Holger



>
> ***shape1***
> ex:MyShape
>     a sh:Shape ;
>     sh:scopeNode foaf:Person ;
>     sh:inverseProperty [
>         sh:predicate rdf:type ;
>         sh:maxCount 2 ;
>     ] .
>
> ***shape2***
> ex:PersonShape
>     a sh:Shape ;
>     sh:scopeClass ex:Person .
>
> ***data graph***
>
> ex:Alice a ex:Person .
> ex:Bob a ex:Person .
> ex:NewYork a ex:Place .
>
> Where does the spec address the reason for this?
>
> kc
>
> On 6/7/16 10:09 PM, Holger Knublauch wrote:
>>
>>
>> On 8/06/2016 14:57, Karen Coyle wrote:
>>>
>>>
>>> On 6/7/16 7:38 PM, Holger Knublauch wrote:
>>>> Yes and SHACL should implement the same policy, because sh:maxCount 
>>>> also
>>>> only makes sense for predicate-based constraints and not node
>>>> constraints.
>>>
>>> Does this then rule out a constraint like "n things of type x"? For
>>> example, if you want to limit the number of foaf:Person nodes?
>>
>> No. To express "A graph must have at most 2 instances of foaf:Person"
>> you would write
>>
>> ex:MyShape
>>     a sh:Shape ;
>>     sh:scopeNode foaf:Person ;
>>     sh:inverseProperty [
>>         sh:predicate rdf:type ;
>>         sh:maxCount 2 ;
>>     ] .
>>
>> In other words "there must be at most 2 triples that have foaf:Person as
>> object and rdf:type as predicate".
>>
>> Peter's suggested use of sh:maxCount at node constraints would mean
>>
>> "Verify that the set of value nodes is not larger than two. Oh, and
>> regardless of the actual data, I already know that this set of value
>> nodes has size 1, because it always consists of the focus node only. So
>> actually I only need to test whether the value of sh:maxCount > 0."
>>
>> which is a rather useless construct. You have just confirmed that
>> misusing sh:maxCount as node constraints will likely confuse users.
>>
>> Is this difference clearer now, or what else could I clarify?
>>
>> Thanks,
>> Holger
>>
>>
>>
>

Received on Thursday, 9 June 2016 04:45:29 UTC