- From: Holger Knublauch <holger@topquadrant.com>
- Date: Tue, 22 Nov 2016 15:45:33 +1000
- To: public-rdf-shapes@w3.org
- Message-ID: <d4847986-beed-1564-c19b-16d2edf62164@topquadrant.com>
I have extended this to explicitly enumerate the shape-expecting parameters https://github.com/w3c/data-shapes/commit/ee37c585cc9bb1900c8d690d811b2141a3c4c7cc Holger On 22/11/2016 9:11, Dimitris Kontokostas wrote: > Thank you for your feedback Peter, > > I updated the recursive shapes definition with your suggestions. > https://github.com/w3c/data-shapes/commit/1583bd6db8e1b08ecf1b3f747f7245486f4288cd > > Best, > Dimitris > > On Mon, Nov 21, 2016 at 3:58 PM, Peter F. Patel-Schneider > <pfpschneider@gmail.com <mailto:pfpschneider@gmail.com>> wrote: > > It does appear that now the only way for the validation of one > shape to > initiate validation of another shape is via the about six constraint > components that take shapes as parameter values. This means no > more filter > shapes. It also means that there is no way that SPARQL-based > SHACL constructs > can initiate processing of another shape. This further means that > the core > SHACL constructs provide facilities that cannot be obtained > through the SPARQL > extension. > > In this considerably-changed SHACL the wording appears to be > getting close to > the intent of recursive shapes, i.e., that a recursive shape > points back to > itself via a chain of triples whose predicates are each > sh:property or one of > the shape-expecting constraint parameters. However, I do not > think that the > wording is yet adequate. Something along the following lines is > required: > > "A shape *directly uses* another shape when that other shape is > the value of a > shape-expecting constraint parameter of the shape itself or one of the > property constraints of the shape. The *uses* relationship > between shapes is > the transitive closure of the directly uses relationship. A shape is > *recursive* if it uses itself." > > The handling of recursive shapes is also problematic as it appears > that a > SHACL processor is supposed to do something useful with recursive > shapes. The > wording should be expanded to allow SHACL processors to refuse to > do anything > with recursive shapes, i.e., by producing some sort of error > during syntactic > checking of shapes. > > > Another problem with the current wording is that it permits > parameters like > sh:minCount to contribute to recursive shape determination. > > peter > > > On 11/21/2016 02:10 AM, Dimitris Kontokostas wrote: > > Dear Peter, > > > > Could you please check if you have further comments on the > definition of > > recursive shapes? > > http://w3c.github.io/data-shapes/shacl/#shapes-recursion > <http://w3c.github.io/data-shapes/shacl/#shapes-recursion> > > > > Best regards, > > Dimitris > > > > On Tue, Sep 27, 2016 at 1:51 PM, Peter F. Patel-Schneider > > <pfpschneider@gmail.com <mailto:pfpschneider@gmail.com> > <mailto:pfpschneider@gmail.com <mailto:pfpschneider@gmail.com>>> > wrote: > > > > I don't think that that the new wording is adequate. > > > > "A recursive shape is a shape thar refers to itself directly > or transitively > > via shape-based constraint components (i.e. sh:shape), > logical constraint > > components (i.e. sh:or), filter shapes (sh:filterShape) or > the sh:hasShape > > SPARQL function as defined in appendix A. The handling of > recursive shapes is > > not defined in SHACL and is left to SHACL processor > implementations." > > > > s:s1 doesn't refer to itself. Instead, the validation of > s:s1 on ex:foo5 ends > > up having the determination of whether a violation should be > reported > > depending on whether a violation should be reported, even > though there is no > > path from s:s1 back to itself in the shapes graph. > Different wording is > > needed to describe this newly-detected problem with sh:hasShape. > > > > The wording also continues to not distinguish between > > > > ex:sr rdf:type sh:Shape ; > > sh:class ex:c ; > > sh:property [ rdf:type sh:ProperyConstraint; > > sh:predicate ex:p ; sh:shape ex:sr ] . > > > > and > > > > ex:sr rdf:type sh:Shape ; > > ex:class ex:c ; > > rdfs:seeAlso [ rdf:type sh:ProperyConstraint; > > sh:predicate ex:p ; sh:shape ex:sr ] . > > > > > > > > There needs to be a better definition of what counts as a > recursive shape in > > SHACL. > > > > > > Peter F. Patel-Schneider > > Nuance Communications > > > > > > > > > > On 09/27/2016 12:44 AM, Dimitris Kontokostas wrote: > > > As with other types of recursion, this is also unspecified > in the spec > > > > > > I placed the sh:hasShape function in the recursive shape list > > > > > > https://github.com/w3c/data-shapes/commit/52396ff9014e055a6332c28516ac0574fb3c3211 > <https://github.com/w3c/data-shapes/commit/52396ff9014e055a6332c28516ac0574fb3c3211> > > > <https://github.com/w3c/data-shapes/commit/52396ff9014e055a6332c28516ac0574fb3c3211 > <https://github.com/w3c/data-shapes/commit/52396ff9014e055a6332c28516ac0574fb3c3211>> > > > > > > On Mon, Sep 26, 2016 at 10:01 PM, Peter F. Patel-Schneider > > > <pfpschneider@gmail.com <mailto:pfpschneider@gmail.com> > <mailto:pfpschneider@gmail.com <mailto:pfpschneider@gmail.com>> > > <mailto:pfpschneider@gmail.com > <mailto:pfpschneider@gmail.com> <mailto:pfpschneider@gmail.com > <mailto:pfpschneider@gmail.com>>>> wrote: > > > > > > What happens here? Why? Is what happens reasonable? > > > > > > > > > Data graph > > > > > > @prefix rdf: > <http://www.w3.org/1999/02/22-rdf-syntax-ns# > <http://www.w3.org/1999/02/22-rdf-syntax-ns#> > > <http://www.w3.org/1999/02/22-rdf-syntax-ns# > <http://www.w3.org/1999/02/22-rdf-syntax-ns#>> > > > <http://www.w3.org/1999/02/22-rdf-syntax-ns# > <http://www.w3.org/1999/02/22-rdf-syntax-ns#> > > <http://www.w3.org/1999/02/22-rdf-syntax-ns# > <http://www.w3.org/1999/02/22-rdf-syntax-ns#>>>> . > > > @prefix sh: <http://www.w3.org/ns/shacl#> . > > > @prefix ex: <http://example.org/ex/> . > > > @prefix s: <http://example.org/s/> . > > > > > > ex:foo1 rdf:type ex:foo ; > > > rdf:type ex:bar ; > > > s:shape s:bar . > > > > > > ex:foo2 rdf:type ex:foo ; > > > rdf:type ex:baz ; > > > s:shape s:bar . > > > > > > ex:foo3 rdf:type ex:foo ; > > > rdf:type ex:baz ; > > > s:shape s:baz . > > > > > > ex:foo4 rdf:type ex:foo ; > > > rdf:type ex:baz ; > > > s:shape s:s0 . > > > > > > ex:foo5 rdf:type ex:foo ; > > > rdf:type ex:baz ; > > > s:shape s:s1 . > > > > > > ex:foon1 rdf:type ex:foon ; > > > rdf:type ex:baz ; > > > s:shape s:s2 . > > > > > > > > > > > > Shapes graph > > > > > > @prefix rdf: > <http://www.w3.org/1999/02/22-rdf-syntax-ns# > <http://www.w3.org/1999/02/22-rdf-syntax-ns#> > > <http://www.w3.org/1999/02/22-rdf-syntax-ns# > <http://www.w3.org/1999/02/22-rdf-syntax-ns#>> > > > <http://www.w3.org/1999/02/22-rdf-syntax-ns# > <http://www.w3.org/1999/02/22-rdf-syntax-ns#> > > <http://www.w3.org/1999/02/22-rdf-syntax-ns# > <http://www.w3.org/1999/02/22-rdf-syntax-ns#>>>> . > > > @prefix sh: <http://www.w3.org/ns/shacl#> . > > > @prefix ex: <http://example.org/ex/> . > > > @prefix s: <http://example.org/s/> . > > > > > > s:s1 rdf:type sh:Shape ; > > > sh:targetClass ex:foo ; > > > sh:sparql [ > > > sh:select > > > """SELECT $this WHERE { > > > $this s:shape ?shape ; > > > BIND (sh:hasShape($this,?shape,$shapesGraph) > AS ?hasShape) > > > BIND (!bound(?hasShape) AS ?failure ) > > > FILTER (?failure || !?hasShape) }""" ] . > > > > > > s:bar sh:class ex:bar . > > > > > > s:baz sh:class ex:baz . > > > > > > s:s2 rdf:type sh:Shape ; > > > sh:targetClass ex:foon ; > > > sh:sparql [ > > > sh:select > > > """SELECT $this WHERE { > > > $this s:shape ?shape ; > > > BIND (sh:hasShape($this,?shape,$shapesGraph) > AS ?hasShape) > > > BIND (!bound(?hasShape) AS ?failure ) > > > FILTER (?failure || ?hasShape) }""" ] . > > > > > > > > > Peter F. Patel-Schneider > > > Nuance Communications > > > > > > > > > > > > > > > -- > > > Dimitris Kontokostas > > > Department of Computer Science, University of Leipzig & > DBpedia Association > > > Projects: http://dbpedia.org, http://rdfunit.aksw.org, > http://aligned-project.eu > > > Homepage: http://aksw.org/DimitrisKontokostas > <http://aksw.org/DimitrisKontokostas> > <http://aksw.org/DimitrisKontokostas > <http://aksw.org/DimitrisKontokostas>> > > > Research Group: AKSW/KILT http://aksw.org/Groups/KILT > > > > > > > > > > > > > -- > > Dimitris Kontokostas > > Department of Computer Science, University of Leipzig & DBpedia > Association > > Projects: http://dbpedia.org, http://rdfunit.aksw.org, > http://aligned-project.eu > > Homepage: http://aksw.org/DimitrisKontokostas > <http://aksw.org/DimitrisKontokostas> > > Research Group: AKSW/KILT http://aksw.org/Groups/KILT > > > > > > > -- > Dimitris Kontokostas > Department of Computer Science, University of Leipzig & DBpedia > Association > Projects: http://dbpedia.org, http://rdfunit.aksw.org, > http://aligned-project.eu > Homepage: http://aksw.org/DimitrisKontokostas > Research Group: AKSW/KILT http://aksw.org/Groups/KILT >
Received on Tuesday, 22 November 2016 05:46:10 UTC