- From: Peter F. Patel-Schneider <pfpschneider@gmail.com>
- Date: Sun, 23 Apr 2017 15:43:57 -0700
- To: Irene Polikoff <irene@topquadrant.com>
- Cc: Dimitris Kontokostas <jimkont@gmail.com>, "public-rdf-sha." <public-rdf-shapes@w3.org>
On 04/23/2017 03:17 PM, Irene Polikoff wrote: > Peter, > > Please see answers below > >> On Apr 23, 2017, at 12:33 PM, Peter F. Patel-Schneider >> <pfpschneider@gmail.com <mailto:pfpschneider@gmail.com>> wrote: >> >> >> On 04/22/2017 04:58 PM, Irene Polikoff wrote: >>> See below >>>> On Apr 22, 2017, at 7:30 PM, Peter F. Patel-Schneider >> <pfpschneider@gmail.com <mailto:pfpschneider@gmail.com>> wrote: >>>> >>>> There are several new pieces of information that I have brought up recently. >>>> >>>> The purported remedy is incomplete. >>> >>> This is not new information. SHACL-SHACL is not designed to perform all >>> validity checks. It performs many useful checks and, as a result, makes it >>> possible to detect many, but not all problems. So, it is not a remedy in the >>> sense of fully addressing your original objection. >> >> It is new information to me. SHACL-SHACL only appeared at CR. > > Yes, SHACL-SHACL only appeared at CR. We are very interested in hearing about > any bugs in it. > > However, as I said in the previous e-mail, by its nature SHACL-SHACL can not > detect all issues. The limitations of SHACL-SHACL are well understood and > there is no need to report that it can’t detect a certain issue e.g., the fact > that the value of sh:pattern is not a valid regular expressions. That is, > unless you can propose an additional shape for SHACL-SHACL that could detect > an issue that is currently undetected. > > Note that SHACL-SHACL implements constraints that need to be checked for every > shapes graph - whether it is was designed to be used with a SHACL Core > processor or with a SHACL-SPARQL processor. This does not align with wording in the SHACL document: "The following shapes graph is intended to enforce many of the syntactic constraints related to SHACL Core in this specification." It turns out that SHACL-SHACL does check at least one thing that is not in SHACL Core - it makes a node with a value for sh:shacl a shape. > It is possible to create a > separate extension to be used for the shapes graphs that are designed to use > only with SHACL Core processors. This extension could add a check to, for > example, detect the presence of sh:sparql values. >>>> There are interoperability problems on well-formed shapes graphs between SHACL >>>> Core and SHACL-SPARQL implementations. >>> >>> Yes, but this is by-design. SHACL-SPARQL implementations do more than >>> SHACL Core implementations >> >> So I'm reporting a problem with the design. > > There is nothing new in the design, so I am not sure what you are reporting. > SHACL-SPARQL has always been defined as an extension. The problem with the design is that SHACL Core and SHACL-SPARQL processors can silently report different violations. >>>> There are interoperability problems on well-formed shapes graphs between >>>> different SHACL Core implementations. >>> >>> Please provide an example >> >> sh:ex a sh:NodeShape ; >> sh:class ex:C ; >> sh:node sh:ex . > > If you are reporting that handling recursive shapes is left to implementations > and, thus, different SHACL Core processors can produce different results, this > is certainly not new. It has been already discussed at length and you > participated in the discussions. > > The working group thinks that there is an opportunity to specify a subset of > recursive shapes for which there could be a defined behavior. This has been > identified as a topic for the future community or working group to take on. > > If you have additional potential topics for future work, you can send them and > we will record them on this > page https://www.w3.org/2014/data-shapes/wiki/Postponed. If you do so, please > identify them in the heading of your e-mail - e.g., “Proposed addition to > postponed features:<…>" >> >>>> The new syntax rules increase the probability of creating ill-formed shapes >>>> graphs. >>> >>> There have been no new syntax rules since CR. So, I am not sure what you >>> are referring to. >> >> I am referring to the syntax rules that were introduced between the last two >> version of SHACL. > > If you are referring to the syntax rules that prohibited certain constraint > components for the node shapes, this is not new. You have already filed a > formal objection regarding it, which was overruled. There were new syntax rules added at CR time, which I had not responded to. > The WG understands that you have a strong opinion on this matter and disagree > with some of the decisions made. Nevertheless, these decisions have been made > and we must move on. > > The WG has new items to address and complete within the deadlines. We > appreciate your interest in SHACL and your contributions, but returning to > topics that have been already discussed and decided is not helpful. It puts an > unnecessary burden on the WG to write a response to you simply to say that it > is not a new topic. This takes away from the bandwidth we have to work on the > new or outstanding issues. Please support us in staying focused and bring up > only new issues. Is the working group then not going to examine the newly reported or new interoperability problems? Peter F. Patel-Schneider Nuance Communications >>>> On 04/22/2017 04:18 PM, Irene Polikoff wrote: >>>>> Peter, >>>>> >>>>> Merits aside, there is a strong procedural reason for not adding such >> requirement. As you know, the working group charter is coming to the end. W3C >> has a morrotorium on publishing new versions that is starting now and will >> last for at least a week, may be more. Then, after a document with a new >> requirement is published, the implementers would need to comply, etc. All of >> this pushes the timescale. >>>>> >>>>> Further, you brought up the topic of checking validity of the shapes graph >> many times in the past, even raising a formal objection prior to the CR. I >> don’t believe you are providing any new information now. >>>>> >>>>> Irene >>>>> >>>>>> On Apr 22, 2017, at 3:58 PM, Peter F. Patel-Schneider >> <pfpschneider@gmail.com <mailto:pfpschneider@gmail.com>> wrote: >>>>>> >>>>>> There is a very simple test to ensure that are not SHACL-SPARQL >>>>>> constructs in >>>>>> a shapes graph. Just look for sh:sparql values in shapes and SHACL >>>>>> instances >>>>>> of sh:ConstraintComponent. If there are none then the only effective >>>>>> constructs in the shapes graph are in SHACL Core. >>>>>> >>>>>> Of course there are cases where a SHACL Core processor would otherwise >> produce >>>>>> the same results as a SHACL-SPARQL processor on a shapes graph, but I don't >>>>>> think that that is what is needed here. >>>>>> >>>>>> As far as future versions of SHACL are concerned I don't see how there >>>>>> is any >>>>>> way to ensure that a SHACL Core processor (or a SHACL-SPARQL processor) for >>>>>> the current version of SHACL does the right thing for future versions of >>>>>> SHACL. Future versions of SHACL could be written so that changes to >>>>>> SHACL-SPARQL did not require changes to SHACL Core implementations, of >> course. >>>>>> An easy way to achieve this under my proposal would be to have the future >>>>>> version of SHACL-SPARQL only make changes that are only effective if >> there are >>>>>> SHACL instances of sh:ConstraintComponent in the shapes graph. >>>>>> >>>>>> >>>>>> My proposal eliminates an important source of silent interoperability >> failures >>>>>> between SHACL Core and SHACL-SPARQL implementations. It is much like C >>>>>> compilers complaining if they see C++ syntax, even if that syntax would not >>>>>> change the behaviour of the program. >>>>>> >>>>>> My proposal is extremely simple to implement and its run-time costs are >>>>>> minimal. I see no reason not to add it to SHACL. >>>>>> >>>>>> >>>>>> Peter F. Patel-Schneider >>>>>> Nuance Communications >>>>>> >>>>>> >>>>>> On 04/21/2017 10:45 PM, Dimitris Kontokostas wrote: >>>>>>> Hi Peter, >>>>>>> >>>>>>> Although I agree that interoperability is important, I don't think it is >>>>>>> realistic to require shacl core processor to be able to detect shacl sparql >>>>>>> constructs without implementing (part of) shacl sparql. >>>>>>> >>>>>>> For example, a constraint component could be defined but never used in a >>>>>>> shapes graph. >>>>>>> >>>>>>> Also, what about deactivated shapes, shapes that are never reached in a >>>>>>> validation or ill formed constructs? >>>>>>> >>>>>>> This easily becomes more complex than identifying two graph patterns >>>>>>> >>>>>>> In addition, it is not future proof. What if we later define shacl >> sparql+ or >>>>>>> another variant? Will all preexisting shacl core implementations break >> for not >>>>>>> detecting the new constructs? >>>>>>> >>>>>>> An informative note about interoperability would helpful but conformance >>>>>>> criteria are hard to define imho. >>>>>>> >>>>>>> Best, >>>>>>> Dimitris >>>>>>> >>>>>>> Typed by thumb. Please forgive brevity, errors. >>>>>>> >>>>>>> On Apr 22, 2017 4:09 AM, "Peter F. Patel-Schneider" >>>>>>> <pfpschneider@gmail.com <mailto:pfpschneider@gmail.com> >>>>>>> <mailto:pfpschneider@gmail.com>> wrote: >>>>>>> >>>>>>> Note that SHACL implementations that ignore SHACL-SPARQL constructs can >>>>>>> produce more violations than even a SHACL implementation that is in >> complete >>>>>>> compliance with all the SHACL constructs. There are very simple examples >>>>>>> that demonstrate this, such as >>>>>>> >>>>>>> ex:s1 a sh:NodeShape ; >>>>>>> sh:targetNode ex:i ; >>>>>>> sh:not [ sh:sparql "SELECT $this WHERE { }" ] . >>>>>>> >>>>>>> peter >>>>>>> >>>>>>> >>>>>>> On 04/21/2017 04:03 PM, Irene Polikoff wrote: >>>>>>>> Peter, >>>>>>>> >>>>>>>> We will discuss this at the next WG meeting. >>>>>>>> >>>>>>>> >>>>>>>>> On Apr 21, 2017, at 5:30 PM, Peter F. Patel-Schneider >>>>>>> <pfpschneider@gmail.com <mailto:pfpschneider@gmail.com> >>>>>>> <mailto:pfpschneider@gmail.com>> wrote: >>>>>>>>> >>>>>>>>> The situation with respect to RDFS/OWL is quite different from that for >>>>>>> SHACL. >>>>>>>>> For starters, RDFS and OWL are two different recommendations, so there >>>>>>> is some >>>>>>>>> expectation that there might be differences between them. On the other >>>>>>> hand >>>>>>>>> SHACL is one recommendation so there should be an expectation of >>>>>>>>> interoperability between different SHACL implementations, even between >>>>>>> SHACL >>>>>>>>> Core and SHACL-SPARQL. >>>>>>>>> >>>>>>>>> Further, there is a useful interoperability between RDFS and OWL - RDFS >>>>>>>>> entailment is sound with respect to OWL entailment (subject to some >>>>>>> annoying >>>>>>>>> caveats). The same can't be said for SHACL Core versus SHACL-SPARQL In >>>>>>>>> general the violations reported by SHACL Core implementations will be >>>>>>>>> different from those reported by SHACL-SPARQL implementations - some >>>>>>>>> violations will be reported only by SHACL Core implementations and other >>>>>>>>> violations will be reported only by SHACL-SPARQL implementations. These >>>>>>>>> differences may only arise long after deployment. >>>>>>>>> >>>>>>>>> Fortunately there is a simple change that alleviates much of this >>>>>>>>> interoperability problem. Just require that SHACL implementations at >> least >>>>>>>>> have a mode where they signal when they see constructs that they do not >>>>>>>>> handle. This is already a requirement for sh:entailment so it is not >> as if >>>>>>>>> requirements for signalling unhandled constructs is alien to SHACL. >>>>>>> With this >>>>>>>>> simple change users can ensure that they will be quickly notified if >>>>>>> there is >>>>>>>>> a chance of interoperability failures. >>>>>>>>> >>>>>>>>> A sound method for detecting the potential use of SHACL-SPARQL >> construct in >>>>>>>>> shapes is very simple - it is not necessary to process SPARQL-based >>>>>>> constraint >>>>>>>>> components to find their parameters. All that is needed is to check >>>>>>> for the >>>>>>>>> absence of sh:sparql constructs in shapes and the absence of SHACL >>>>>>> instances >>>>>>>>> of sh:ConstraintComponent in the shapes graph. This easy method will >>>>>>> produce >>>>>>>>> a signal in cases where a SHACL-based constraint component is present but >>>>>>>>> unused - certainly not a significant problem and probably not a problem >>>>>>> at all. >>>>>>>>> >>>>>>>>> So there is a very easy method to make SHACL Core and SHACL-SPARQL >>>>>>>>> implementations much more interoperable. Given that one of the tenets >>>>>>> of W3C >>>>>>>>> recommendations is interoperability this method needs to be required >>>>>>> for SHACL >>>>>>>>> implementations. >>>>>>>>> >>>>>>>>> Peter F. Patel-Schneider >>>>>>>>> Nuance Communications >>>>>>>>> >>>>>>>>> >>>>>>>>> On 04/21/2017 12:47 PM, Irene Polikoff wrote: >>>>>>>>>> I don’t think I follow. >>>>>>>>>> >>>>>>>>>> Two SHACL Core processors will not produce different results. They >>>>>>> will both only understand SHACL Core and produce results for the shapes >>>>>>> “inside” SHACL Core. >>>>>>>>>> >>>>>>>>>> SHACL SPARQL constructs are valid RDF, but SHACL Core processors do >>>>>>> not understand or interpret their semantics. >>>>>>>>>> >>>>>>>>>> Similarly, to how an RDFS inference engine will ignore OWL >>>>>>> restrictions - they don’t mean anything special to it. And an OWL >>>>>>> inferencing engine that only supports one profile (let’s say OWL RL) will >>>>>>> not be signaling that there are some axioms which meaning it didn’t >> interpret. >>>>>>>>>> >>>>>>>>>>> On Apr 21, 2017, at 3:03 PM, Peter F. Patel-Schneider >>>>>>> <pfpschneider@gmail.com <mailto:pfpschneider@gmail.com> >>>>>>> <mailto:pfpschneider@gmail.com>> wrote: >>>>>>>>>>> >>>>>>>>>>> It is important for interoperability that SHACL Core >>>>>>>>>>> implementations are >>>>>>>>>>> required to *not* silently produce different results on valid shapes >>>>>>> graphs. >>>>>>>>>>> Instead they must be required to signal that they have been given a >>>>>>> shapes >>>>>>>>>>> graph that they do not completely handle. >>>>>>>>>>> >>>>>>>>>>> peter >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> On 04/21/2017 12:01 PM, Irene Polikoff wrote: >>>>>>>>>>>> But, of course, SHACL Core and SHACL-SPARQL implementations will >>>>>>> produce different results. This is by design. >>>>>>>>>>>> >>>>>>>>>>>> SHACL Core processors do not support SHACL-SPARQL. By definition, a >>>>>>> SHACL Core and a SHACL SPARQL processors are only interoperable for a >>>>>>> subset of SHACL which is SHACL Core and sh:sparql is not in SHACL Core. >>>>>>>>>>>> >>>>>>>>>>>>> On Apr 21, 2017, at 2:43 PM, Peter F. Patel-Schneider >>>>>>> <pfpschneider@gmail.com <mailto:pfpschneider@gmail.com> >>>>>>> <mailto:pfpschneider@gmail.com>> wrote: >>>>>>>>>>>>> >>>>>>>>>>>>> A SHACL implementation that silently ignores sh:sparql constructs >>>>>>> produces an >>>>>>>>>>>>> interoperability nightmare. >>>>>>>>>>>>> >>>>>>>>>>>>> For example, such an implementation will produce no violations for >>>>>>> the shape >>>>>>>>>>>>> ex:sparql a sh:NodeShape ; >>>>>>>>>>>>> sh:targetNode ex:i ; >>>>>>>>>>>>> sh:sparql "SELECT ?this WHERE { }" . >>>>>>>>>>>>> A SHACL-SPARQL implementation will instead produce a violation. >>>>>>>>>>>>> >>>>>>>>>>>>> peter >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> On 04/21/2017 03:39 AM, Irene Polikoff wrote: >>>>>>>>>>>>>> Peter, >>>>>>>>>>>>>> >>>>>>>>>>>>>> If your implementation is SHACL Core only, how could SHACL-SPARQL >>>>>>> constructs affect it? It would seem to me that the values in the sh:spraql >>>>>>> triples would be no different to it than values in the ex:foo (or any user >>>>>>> defined predicate) triples. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Sent from my iPhone >>>>>>>>>>>>>> >>>>>>>>>>>>>>> On Apr 21, 2017, at 12:45 AM, Peter F. Patel-Schneider >>>>>>> <pfpschneider@gmail.com <mailto:pfpschneider@gmail.com> >>>>>>> <mailto:pfpschneider@gmail.com>> wrote: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> My alt-SHACL implementation does complete syntax checking, >>>>>>> signalling whenever >>>>>>>>>>>>>>> in encounters a shape or path or list that is not correctly >>>>>>> formed. My >>>>>>>>>>>>>>> implementation has a strict mode that signals whenever the >>>>>>> putative shapes >>>>>>>>>>>>>>> graph contains anything that violates any of the SHACL Core >>>>>>> syntax rules or >>>>>>>>>>>>>>> contains a recursive shape or contains SHACL-SPARQL constructs >>>>>>> that could >>>>>>>>>>>>>>> affect validation. To test this checking I had put together an >>>>>>> RDF graph >>>>>>>>>>>>>>> containing a comprehensive set of constructs that need to be >> checked. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> I just updated this graph, and the associated checking code, to >>>>>>> incorporate >>>>>>>>>>>>>>> the numerous additional syntax rules that were added when the >>>>>>> SHACL document >>>>>>>>>>>>>>> became a candidate recommendation. I include the graph here. >>>>>>> It can be >>>>>>>>>>>>>>> turned into a comprehensive set of syntax test cases for SHACL >>>>>>> Core by just >>>>>>>>>>>>>>> separating it into small graphs each containing one of the test >>>>>>> shapes. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> The amount of code required to do complete syntax checking was >>>>>>> quite modest. >>>>>>>>>>>>>>> Running my implementation over the graph was helpful in finding >>>>>>> bugs such as >>>>>>>>>>>>>>> incorrect recursion checks in the path code. I strongly >>>>>>> recommend that every >>>>>>>>>>>>>>> SHACL implementation be run on every shape in this graph. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Peter F. Patel-Schneider >>>>>>>>>>>>>>> Nuance Communications >>>>>>>>>>>>>>> <syntax.ttl> >>>>>>>>>>>> >>>>>>>>>> >>>>>>>> >>>>>>> >>>>> >>> >
Received on Sunday, 23 April 2017 22:44:35 UTC