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

It isn't a question of switching them. I find that the examples do not 
show the difference between class-defined nodes and predicate-defined 
node that uses rdf:type as the predicate. Since all rdf:type/s must be 
explicitly defined, these are either the same, or they are different, 
and if they are different, that needs to be made clear.

kc

On 6/9/16 9:26 AM, Irene Polikoff wrote:
> Examples in the spec would not have the same result if scopeNode and
> scopeClass were switched. They look pretty clear to me as they all
> identify what focus nodes would be selected.
>
> May be the following will help:
>
> Let¹s say there is a graph like so:
>
> ex:Person rdfs:label ŒPerson¹.
> ex:Person rdfs:label ŒHuman Being¹.
> ex:Alice rdf:type ex:Person.
> ex:Alice rdfs:label ŒAlice¹.
> ex:Alice rdfs:label ŒAlice Jones¹.
> ex:Bob rdf:type ex:Person.
> ex:Joe rdf:type ex:Person.
> ex:Joe rdfs;label ŒJoe¹.
>
> And a shape
>
> ex:Shape1
>      a sh:Shape ;
>      sh:scopeNode ex:Person ;
>      sh:property [
>          sh:predicate rdfs:label ;
>          sh:maxCount 1 ;
>      ] .
>
>
> The node in focus is ex:Person and there will be a violation because it
> has two labels. No other nodes are in focus, no other violations.
>
> If there was a different shape
>
> ex:Shape2
> a sh:Shape ;
> sh:scopeClass ex:Person ;
> sh:property [
> sh:predicate rdfs:label ;
> sh:maxCount 1 ;
> ] .
>
>
> Then, three nodes are in scope - ex:Alice, ex:Bob and ex:Joe. There will
> be one violation for ex:Alice.
>
> Lets look at the shape Holger has below. This shape demonstrates, among
> other things, that the validation can look at triples with the focus nodes
> as objects by using sh:inverseProperty
>
> ex:MyShape
>      a sh:Shape ;
>      sh:scopeNode ex:Person ;
>      sh:inverseProperty [
>          sh:predicate rdf:type ;
>          sh:maxCount 2 ;
>      ] .
>
> The focus node is ex:Person and there will be a violation since there are
> three triples that follow the {?x rdf:type ex:Person} pattern.
>
>
> Irene
>
>
>
> On 6/9/16, 1:33 AM, "Karen Coyle" <kcoyle@kcoyle.net> wrote:
>
>> Holger, that still doesn't explain what the difference is. What is the
>> quality of a SHACL class that is different to a triple with a predicate
>> of rdf:type? Are you saying that scopeClass implies/allows subclass
>> relationships to be included? If so, that must be said in the
>> specification, and it should be illustrated in the examples. As it is,
>> the examples given would have the same result using either predicate.
>>
>> Also, the section that introduces scopeNode does not say that it applies
>> only to the subject of a triple. If that is the case, then it needs to
>> specify that.
>>
>> kc
>>
>> On 6/8/16 9:44 PM, Holger Knublauch wrote:
>>>
>>> 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
>>>>>
>>>>>
>>>>>
>>>>
>>>
>>>
>>>
>>
>> --
>> Karen Coyle
>> kcoyle@kcoyle.net http://kcoyle.net
>> m: 1-510-435-8234
>> skype: kcoylenet/+1-510-984-3600
>>
>
>
>

-- 
Karen Coyle
kcoyle@kcoyle.net http://kcoyle.net
m: 1-510-435-8234
skype: kcoylenet/+1-510-984-3600

Received on Friday, 10 June 2016 04:09:08 UTC