Re: type and instance and subclass in SHACL documents

I find in the `sh:scopeClass` definition[0] the following text:

For the purposes of this definition, a resource R in the data graph is said
> to be an instance of the resource X if and only if the data graph
> contains a triple R rdf:type X or the data graph contains a triple R
> rdf:type Y and Y is connected to X by a property path from Y to X in the
> data graph consisting of one or more triples whose predicate is
> rdfs:subClassOf.


Peter: in light of this text, can the specific issue with `sh:scopeClass`
be limited to the concern that this definition is not presented as
sufficiently important? I second that the use of "instance" should probably
be reconsidered; and, whatever term is used, a clearly normative exposition
of the fact that `sh:scopeClass` is defined in terms of pattern matching is
called for--and should be front and center.

Peter: that there are other occurrences of problems like this checks out,
to me. Like Karen, though, I find the style of your exposition too
rhetorical to be useful in identifying them. Would it be possible to
catalog conflicts with external semantics in a more systematic way?

- Tom

[0]https://www.w3.org/TR/shacl/#scopeClass

On Sat, Mar 12, 2016 at 1:30 PM, Peter F. Patel-Schneider <
pfpschneider@gmail.com> wrote:

> The SHACL documents talk about instance.  If this is RDFS instance, then,
> yes,
> SHACL engines would always have to treat rdfs:label as an instance of
> rdf:Property.
>
> This is why I say that the SHACL documents should be very clear every time
> that they talk about instance that it is not the common RDFS instance that
> they are talking about but some new notion particular to SHACL,
> particularly
> as SHACL uses RDFS vocabulary.
>
> SHACL instance is indeed very different from RDFS instance.
>
> peter
>
>
> On 03/12/2016 10:05 AM, Irene Polikoff wrote:
> > We need rdf:type to know if something is an instance of a class (note
> that I am saying simply 'instance' because I do not see the difference).
> >
> > If {rdfs:label rdf:type rdf:Property} triple was provided to a SHACL
> engine, then the violation would be raised.
> >
> > How else could it be known from the data graph that rdfs:label is a
> property? Or are you saying that SHACL engines should always include
> triples in RDFS vocabulary when they do their processing?
> >
> > Sent from my iPhone
> >
> >> On Mar 11, 2016, at 10:36 PM, Peter F. Patel-Schneider <
> pfpschneider@gmail.com> wrote:
> >>
> >> Using the RDFS definition of instance, rdfs:label is an instance of
> >> rdf:Property so it is in the scope of the shape and there is a
> violation.
> >> Using the SHACL definition of instance, rdfs:label is *not* an instance
> of
> >> rdf:Property so it is *not* in scope and there is *no* violation.
> >>
> >> peter
> >>
> >>
> >>> On 03/11/2016 04:50 PM, Karen Coyle wrote:
> >>> Peter, I admit that I, too, am having trouble understanding this. (And
> so it
> >>> isn't all on Peter, if anyone else "gets it" maybe they could weight
> in.) The
> >>> SHACL document uses the term "instance" 78 times. I admit I only
> looked at the
> >>> first couple of dozen of those uses. For the most part they appear to
> me to
> >>> conform to the RDFS definition of "instance" - meaning an instance of
> class.
> >>> In some cases the term is used more colloquially, but those places in
> the
> >>> document don't seem to be definitional.
> >>>
> >>> You say that it doesn't validate, but can you say what the difference
> is in
> >>> the two definitions? I still see it as having to do with the vocabulary
> >>> definition as opposed to the SHACL validation, but you didn't buy that
> when I
> >>> suggested it. If I were to use a typical OWL-based validation,
> rdfs:range
> >>> ex:label "range" would be flagged as inconsistent. The same would be
> true if I
> >>> would have
> >>>  ex:someSubject dct:type "text" .
> >>> (dct:type has a range of rdf-schema#Class)
> >>>
> >>> If this isn't the issue, I would sure like to know what is.
> >>>
> >>> Thanks,
> >>> kc
> >>>
> >>>> On 3/11/16 2:22 PM, Peter F. Patel-Schneider wrote:
> >>>> The definition of SHACL depends on "instance".  This can be read to
> mean
> >>>> "RDFS instance" or "SHACL instance".  Under the former meaning the
> data graph
> >>>> does not validate against the shape.   Under the latter meaning the
> data graph
> >>>> does validate against the shape.
> >>>>
> >>>> peter
> >>>>
> >>>>
> >>>>> On 03/11/2016 02:15 PM, Irene Polikoff wrote:
> >>>>> I don¹t understand what you mean by
> >>>>>
> >>>>> "validates against this shape under SHACL instance but not under RDFS
> >>>>> instance.²
> >>>>>
> >>>>> I am not able to parse the sentence.
> >>>>>
> >>>>> What are you doing? Taking a shape described and the graph described
> and
> >>>>> running it against SHACL engine? What execution validates and what
> >>>>> execution doesn¹t validate?
> >>>>>
> >>>>>
> >>>>>
> >>>>> Irene
> >>>>>
> >>>>>
> >>>>>
> >>>>> On 3/11/16, 5:03 PM, "Peter F. Patel-Schneider" <
> pfpschneider@gmail.com>
> >>>>> wrote:
> >>>>>
> >>>>>>> On 03/11/2016 01:01 PM, Karen Coyle wrote:
> >>>>>>>
> >>>>>>>
> >>>>>>>> On 3/11/16 11:43 AM, Peter F. Patel-Schneider wrote:
> >>>>>>>> Consider the following shape (using obvious prefix declarations)
> >>>>>>>>
> >>>>>>>> sh:propertyShape a sh:Shape ;
> >>>>>>>>   sh:scopeClass rdf:Property ;
> >>>>>>>>   sh:property [ sh:predicate rdfs:label ;
> >>>>>>>>                 sh:minCount 1 ] .
> >>>>>>>>
> >>>>>>>> The data graph (using obvious prefix declarations)
> >>>>>>>>
> >>>>>>>> rdfs:range ex:label "range" .
> >>>>>>>>
> >>>>>>>> validates against this shape under SHACL instance but not under
> RDFS
> >>>>>>>> instance.
> >>>>>>>
> >>>>>>> Isn't this a problem with every vocabulary and not just RDFS? If
> the
> >>>>>>> rules of
> >>>>>>> the vocabulary (such as domain and range) are not encoded as such
> in
> >>>>>>> SHACL
> >>>>>>> then the SHACL result can be "in violation" of the vocabulary
> >>>>>>> definition.
> >>>>>>>
> >>>>>>> Now, if that is the case then I understand that violating the
> foundation
> >>>>>>> vocabulary of RDF/RDFS may be more grave than violating a
> user-developed
> >>>>>>> vocabulary, and in some cases doing the latter may indeed be the
> >>>>>>> intention of
> >>>>>>> the SHACL definition. So do we want to build into SHACL that it
> must
> >>>>>>> follow
> >>>>>>> RDF/RDFS property and class definitions? And how feasible is that?
> >>>>>>>
> >>>>>>> kc
> >>>>>>
> >>>>>> This is only a real problem because SHACL uses "instance" in its
> >>>>>> specification, this term is also used centrally in RDFS, and SHACL
> uses
> >>>>>> RDFS
> >>>>>> vocabulary.
> >>>>>>
> >>>>>> The question then is how to read "instance" in SHACL documentation,
> i.e.,
> >>>>>> how
> >>>>>> to prevent readers of the SHACL documentation from seeing "RDFS
> instance"
> >>>>>> where "SHACL instance" is meant.
> >>>>>>
> >>>>>>
> >>>>>> peter
> >>
>
>


-- 
-Tom Johnson

Received on Saturday, 12 March 2016 22:05:41 UTC