- From: Tom Johnson <johnson.tom@gmail.com>
- Date: Sat, 12 Mar 2016 14:04:34 -0800
- To: "Peter F. Patel-Schneider" <pfpschneider@gmail.com>
- Cc: Irene Polikoff <irene@topquadrant.com>, Karen Coyle <kcoyle@kcoyle.net>, RDF Data Shapes Working Group <public-data-shapes-wg@w3.org>
- Message-ID: <CAJeHiNEp0M3Y9hU65HOM2pAdHxTNCytFFJA47Cs4BCmyAvb33w@mail.gmail.com>
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