- From: Arnaud Le Hors <lehors@us.ibm.com>
- Date: Tue, 12 Apr 2016 14:28:08 -0700
- To: Holger Knublauch <holger@topquadrant.com>
- Cc: "public-data-shapes-wg@w3.org" <public-data-shapes-wg@w3.org>
- Message-Id: <201604122128.u3CLSGwQ003374@d03av05.boulder.ibm.com>
Holger, Given that there is never going to be any generally agreed upon definition of what's pedantic and what's not I don't think it's productive to make any such references. What you see as pedantic is I assume simply being precise to Peter. So let's accept we have different views on this kind of stuff without trying to cast others negatively. Thanks. -- Arnaud Le Hors - Senior Technical Staff Member, Open Web Technologies - IBM Cloud Holger Knublauch <holger@topquadrant.com> wrote on 04/10/2016 04:48:49 PM: > From: Holger Knublauch <holger@topquadrant.com> > To: "public-data-shapes-wg@w3.org" <public-data-shapes-wg@w3.org> > Date: 04/10/2016 04:50 PM > Subject: Re: ISSUE-131: Cleaned up definition of sh:hasShape > > On 9/04/2016 7:31, Peter F. Patel-Schneider wrote: > > The definition is looking better. The extraneous argument has been removed > > and its incorrect use in the examples have also been removed. > > > > However, some of the problems that I had identified remain. > > > > The section still uses the undefined notion "Value Type" in the > argument table. > > I believe there is a fine line between useful feedback and pedantic > feedback. The term "value type" is just meant in its intuitive English > meaning here. Also, the term is already used in other parameter tables, > and carries no implications whatsoever, but just to illustrate the > expected type of nodes for those parameters or function arguments. > > Anyway, I have added a sentence > > Note that the parameter tables in each of the following sections > have a column > called Value Type which indicates the expected type of the > parameter values for > documentation purposes, without enforcing any formal restrictions. > > which hopefully satisfies your concerns. > > > > > A SHACL shape that recursively refers to itself is currently syntactically > > illegal in SHACL. The definition of sh:hasShape still does not detect such > > constructs and when encountering them will sometimes return true, sometimes > > false, and sometimes "undefined". > > Re-reading the current state of ISSUE-22 I notice that we made a > mistake. Luckily the ISSUE is still open so that we can fix this. The > problem is that the current resolution even disallows "static" > recursion, even if no instance in the data graph are ever recursive. I > will argue in favor of changing this so that only run-time recursion is > detected as an error. Otherwise, it becomes impossible to model acyclic > tree structures, which are harmless but very common in practice. > > My preference is to leave the current definition unchanged until we have > clarified this. The comment about ISSUE-22 in the document allows this > flexibility. > > > > > The passing of a graph has been removed. However, the replacementis to use > > "the IRI of the current shapes graph", which may not exist. > > The shapes graph MUST have a IRI. Only the data graph may be the default > graph. I don't see how else to implement all this. > > > > > > > As well, as far as I know undefined is not a permissable return value for a > > SPARQL function. > > SPARQL functions may returns errors. I am not sure what the official > term for these errors is, but the effect is that the resulting variable > remains unbound. The SPARQL reference itself refers to > > https://www.w3.org/TR/xquery/#dt-type-error > > which also links to static errors and dynamic errors. Do you think we > should use the term "error" instead of unbound/undefined? > > > > > It is also unclear as to what counts as the production of a validation > > result. > > Earlier we state that each row of a SELECT constraint query counts as a > validation result, so this is hopefully clear (with a bit of good will). > > > > > The treatment of failures is quite complex. There is disagreement between > > text and SPARQL code on how they are to be treated in core constraint > > components. There is no discussion of what a failure means. Without some > > notion of what it supposed to be happening there is no way to determine > > whether the description of sh:hasShape is correct or even that using > > sh:hasShape can support failures. > > This should be clear: > > If a row in a SPARQL result set produces <code>true</code> as value > for the variable > <code>?failure</code> then a <span class="term">failure</span> must > be reported. > > Please suggest specific re-wording that satisfies your understanding. > > Holger > > > > > > > > On 04/07/2016 04:52 PM, Holger Knublauch wrote: > >> Peter, > >> > >> last month you raised ISSUE-131 on the sh:hasShape function. I > have tried to > >> address your concerns here: > >> > >> https://github.com/w3c/data-shapes/commit/ > e5f6a0a84f6f9cc58c07e16863c7bfa7bd7777f9 > >> > >> https://github.com/w3c/data-shapes/commit/ > d979121751c86004174ccfd26b0de1cbcd13aea9 > >> > >> > >> See > >> > >> http://w3c.github.io/data-shapes/shacl/#hasShape > >> > >> Responses inline: > >> > >>> There are several problems with this definition. > >>> > >>> First, it uses type in a way different from the rest of the document. This > >>> is not just a case where SHACL typing changed---literals never > had types in > >>> SHACL. (This is a good argument to use a qualifier wherever > SHACL typing is > >>> meant.) > >> The only use of the term "type" that I found was in "Value type". I have > >> changed them all to rdfs:Resource (one of them was sh:Shape). Is > this what you > >> are referring to? > >> > >>> Second, dependency loops are currently invalid in SHACL. The precise > >>> meaning of what is a dependency loop is is a bit uncertain, but it is > >>> certainly the case that recursively running the same shape on the same > >>> resource counts as a dependency loop. sh:hasShape needs to be defined in > >>> such a way to signal that an invalid situation has occured. > >> I have adjusted the definition so that it reports a failure > ("undefined") when > >> the function was called with the same parameters recursively. > Could you verify > >> whether this is sufficiently precise and correct now? > >> > >>> Third, some constraints need to have bindings passed through the > >>> sh:hasShape, or they cannot correctly compute validation results. However, > >>> SPARQL is silent on the variable environment available inside functions so > >>> any information has to be passed via arguments. > >> I don't see why bindings have to be passed through the function. A function > >> takes parameters and then operates on those parameters and the > current dataset > >> (which it inherits from the surrounding call). Could you clarify > where you see > >> problems? To clarify that there are no bindings involved, I changed from > >> <code>$shape</code> to <code>shape</code>. > >> > >>> Fourth, arguments to SPARQL functions are RDF terms and thus are > not graphs. > >> I clarified that shapesGraph is the IRI of a graph, not a graph by itself. > >> > >> Holger > >> > >> > >
Received on Tuesday, 12 April 2016 21:28:53 UTC