W3C home > Mailing lists > Public > public-rdf-shapes@w3.org > February 2017

Re: Review of SHACL document (2)

From: Holger Knublauch <holger@topquadrant.com>
Date: Tue, 21 Feb 2017 11:56:00 +1000
To: public-rdf-shapes@w3.org
Message-ID: <9e44ad75-94d9-2b41-362d-496379b40110@topquadrant.com>

On 20/02/2017 23:15, Olivier Corby wrote:
> Hi,
> Some more comments on the SHACL document.
> Regards,
> Olivier
> 1.6 Relationship between SHACL and SPARQL
> SPARQL variables using the $ marker represent external bindings that 
> are pre-bound or, in the case of $PATH, substituted in the SPARQL 
> query before execution.
> The distinction between pre-bound and substituded is not clear.
> Is $PATH limited to predicate or does it accept property path ?
> In this latter case, what is substituted to $PATH ?

This is explained in section 6.3:

prior to execution substitute the variable|PATH|where it appears in 
thepredicate <#dfn-predicate>position of atriple pattern 
<https://www.w3.org/TR/sparql11-query/#QSynTriples>with a valid SPARQL 
surface syntax string of theSHACL property path 
<#dfn-shacl-property-path>specified via|sh:path|at theproperty shape 

I have added a cross-reference from 1.6 to 6.3 to help future readers 
find this easier.

> 4.7.3 sh:qualifiedValueShape, sh:qualifiedMinCount, sh:qualifiedMaxCount
> There is no definition for sh:qualifiedValueShapesDisjoint

I remember you had raised this before and you had suggested to add


If I am adding the statements you propose, it is quite possible that 
someone else will find issues with that statement or find it unclear. I 
am at this stage very hesitant to add any content that is redundant and 
in particular prone to logic errors or misunderstanding. I believe the 
property is already sufficiently defined, similar to how other 
properties are defined: by the textual definitions and syntax rules. Do 
you believe your statement adds any normative content that isn't already 
in the document?

(As a meta comment, we do have a pretty strict deadline of having to 
reach CR status by end of March. I need to balance all comments on 
whether they may stir up new issues. Unless absolutely essential, I 
would rather not make such changes. I hope it is in the best interest of 
everyone to give the WG a realistic path to reaching this goal, even if 
this means not getting the 100% perfect document from anyone's 
individual point of view).

> 5.1 An Example SPARQL-based Constraint
> The following example illustrates a similar scenario as above, but 
> with a property shape.
>     sh:path ex:germanLabel ;
>     $this $PATH ?value .
> What happens when the value of sh:path is a property path that is not 
> a predicate ?

See 6.3 as quoted above - it inserts valid SPARQL surface syntax.

> SELECT-based Validators
> First one has to guess that there is a relation between 
> ex:LanguageConstraintComponentUsingSELECT
> and ex:LanguageExampleShape because the former uses sh:parameter 
> [sh:path ex:lang] and the latter uses sh:property [ex:lang "de"].
> This is not very explicit.

Do you have specific suggestions on how to make this clearer?

> What happens if there are several such sh:ConstraintComponent with 
> sh:parameter [sh:path ex:lang] ?
> Do we apply all of them ?


> Second, I find unclear to use sh:path in the sh:parameter statement 
> because 1) sh:path is usually used to specify a path in the target RDF 
> grapĥ (not in a shape)

We are using sh:path because sh:Parameter is a subclass of 
sh:PropertyShape. This has the nice side effect that the definitions of 
constraint components can more easily be used for checking the syntax of 
shapes and may use any other constraint parameter there too, e.g. 
sh:nodeKind. Each parameter declaration may therefore also be used as a 

> and 2) the SPARQL query in the sh:propertyValidator use a $PATH 
> variable that does not relate to this occurrence of sh:path.

That's correct. I don't see what to do about this though. Since you have 
gone through the efforts of trying to implement this, maybe you have 
specific suggestions on how this can be better explained. Again, we are 
very late in the process, so I am forced to try to avoid making any 
substantial changes to how this machinery works.

> Third, it is not specified whether  sh:datatype and sh:minLength in 
> the sh:parameter act as a constraint that must be verified by ex:lang 
> or as a condition that must  evaluate to true on ex:lang in order to 
> select and apply the sh:ConstraintComponent.

This is the topic of syntax checking, see above and in parallel email 
threads of this mailing list. There is currently no mandatory need to 
use these constraints but at least they do provide the infrastructure 
for those implementations that use SHACL to perform syntax checking 
(like TopBraid, see dash.ttl and tosh.ttl).

Received on Tuesday, 21 February 2017 01:57:07 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 17:02:48 UTC