- From: Tom Johnson <johnson.tom@gmail.com>
- Date: Mon, 9 May 2016 21:31:38 -0700
- To: Holger Knublauch <holger@topquadrant.com>
- Cc: RDF Data Shapes Working Group <public-data-shapes-wg@w3.org>
- Message-ID: <CAJeHiNErYVguNkfLOjnDt97m=TV=uE4C6PwxAhLxTGYVLdjevA@mail.gmail.com>
On Mon, May 9, 2016 at 8:18 PM, Holger Knublauch <holger@topquadrant.com> wrote: > On 10/05/2016 12:30, Tom Johnson wrote: > > > > On Mon, May 9, 2016 at 5:29 PM, Holger Knublauch < > <holger@topquadrant.com>holger@topquadrant.com> wrote: > >> >> >> On 10/05/2016 10:11, Tom Johnson wrote: >> >> Irene, you say: >> >> > "Doing more" doesn't create a problem, but, on the other hand, it is >> not required. >> >> I'm really uncertain about this. Couldn't inferring further class >> relations (e.g., by using the entailment mechanism included in the spec) >> cause different results for basically every operation in SHACL? >> >> >> Can you think of a specific example? sh:entailment would potentially >> produce additional triples. But this is the user's choice, and then the >> user may expect to see additional validation results... >> > > We seem to be in agreement that inferring additional triples will change > results. Examples seem obvious; adding a `subClassOf` statement whose > subject is any class referenced in a shape will do the trick, but that's > far from the only example. > > This seems like a problem to me because I don't see that it's clear where > triples like `subClassOf` must appear (data graph? shapes graph? any > graph?) for a resource to count as a shape, or to match various constraint > components. > > > To have an effect on sh:scopeClass and sh:class, the subClassOf triples > must be in the data graph. > Is this stated somewhere in the current spec? I haven't been able to find it, if so. Also, the question applies equally to cases where the intent is presumably that (only?) the data graph counts. For instance: which resources count as sh:Shapes? > Note that adding a `subClassOf` triple to a shapes graph to effect > validation could be considered a feature; I'm unsure whether that feature > is supported. > > > Currently the spec only looks at the data graph. > > > Additionally, `sh:entailment` seems generally under/un-defined. Can > inference effect data graphs only? or also shapes graphs? Which triples can > be considered by a reasoner and how are inferred triples used by the SHACL > semantics? > > > I have just clarified this to the sh:entailment section: > > > https://github.com/w3c/data-shapes/commit/71a9eeaff0317de0cdca6b36500412dabc922f78 > > I am unsure how many people will actually use sh:entailment, so any > feedback/requirement may help us add missing details. It is very brief > right now, indeed. > I think some clear definition is called for; otherwise, I would simply remove the feature; is there a functional difference between entailment (in this case) and providing a mechanism for the user/engine to add arbitrary triples to the data or shapes graph during pre-processing? This could be a simpler way to think of the problem. - Tom Holger > > > > Some of my other concerns about the specifics of `class` and `instance` > definitions seem to be in the process of being fixed up; from a quick > reading of the latest editor's draft, this is looking promising. > > - Tom > > >> Thanks, i >> Holger >> >> >> >> >> In lieu of a repeat of previous conversations, I'll just say: For me, as >> an implementer in waiting, this is a huge problem. On last reading, very >> little seemed unambiguously defined. >> >> - Tom >> >> On Mon, May 9, 2016 at 12:14 PM, Irene Polikoff < <irene@topquadrant.com> >> irene@topquadrant.com> wrote: >> >>> Karen, >>> >>> As I understand it, RDFS inferencing is one way to address this. However, >>> RDFS inferencing would do more than what is specified here. "Doing more² >>> doesn¹t create a problem, but, on the other hand, it is not required. >>> >>> Another way to address this is to run a query as follows: >>> >>> SELECT ?resource >>> WHERE { >>> >>> ?class rdfs:subClassOf* example:Class1 . >>> ?resource a ?class . >>> >>> } >>> >>> Running this query would not change any graphs. As an aside, RDFS >>> inferencing is also often done without modifying any graphs. Inferences >>> are calculated on the fly when users/systems query data without any >>> materialization of inferred triples. At least, this is how triple stores >>> that support RDFS inferencing typically work. >>> >>> Does your concern have to do with where the rdfs:subClassOf triples come >>> from - would they exist in the data graph, would they exist in the shapes >>> graph? They could be in either. If no subclass triples are there, then >>> the >>> first triple match simply binds ?class to example:Class1 and the query >>> result is the same as if we were only looking for nodes that are >>> connected >>> to example:Class1 via rdf:type link. >>> >>> It doesn¹t seem to be a role of SHACL to mandate where these triples >>> should be located. If they are available in either of the graphs, a SHACL >>> engine should take them into account. If they are not available, than it >>> doesn¹t take them into account. >>> >>> In our experience, users typically put the subclass triples into the >>> shapes graph. At the same time, they need flexibility to do whatever fits >>> their architecture and processes. >>> >>> >>> Irene Polikoff >>> >>> >>> On 5/9/16, 1:47 PM, "Karen Coyle" < <kcoyle@kcoyle.net>kcoyle@kcoyle.net> >>> wrote: >>> >>> >Type >>> >The types of a node are its values of rdf:type as well as the >>> >superclasses of these values. >>> > >>> >This conflates two different relationships: the relationship of a >>> >subject to a class (as defined in RDF/RDFS), defining the subject as an >>> >instance of the class; and the sub-/super-class relationships between >>> >classes. I dont' see how this can be achieved without inferencing. >>> > >>> >If we assume some pre-processing of the data graph to include the >>> >superclasses, then type is precisely as it is defined in RDF - there are >>> >just more type statements in the graph. >>> > >>> >As stated, this is quite an expansion of the meaning of type. In >>> >addition, it appears to require modifications to the data graph to >>> >include the super classes of each class (presumably up to and including >>> >rdfs:Resource). >>> > >>> >I think it would be best if SHACL defined the shape and data graphs as >>> >immutable, thus expecting that all operations read but do not modify the >>> >graphs. I thought we had come to that conclusion. >>> > >>> >kc >>> >>> >>> >>> >> >> >> -- >> -Tom Johnson >> >> >> > > > -- > -Tom Johnson > > > -- -Tom Johnson
Received on Tuesday, 10 May 2016 04:32:46 UTC