W3C home > Mailing lists > Public > public-data-shapes-wg@w3.org > March 2016

Re: SHACL syntax and metamodel complexity

From: Dimitris Kontokostas <kontokostas@informatik.uni-leipzig.de>
Date: Mon, 7 Mar 2016 17:44:21 +0200
Message-ID: <CA+u4+a0pHtXZdXWJ0yLGoyof0ZFSMLw41ULn8vJjUEYB8p696A@mail.gmail.com>
To: "Peter F. Patel-Schneider" <pfpschneider@gmail.com>
Cc: Holger Knublauch <holger@topquadrant.com>, public-data-shapes-wg <public-data-shapes-wg@w3.org>
Hi Peter,

one thing that definitely needs to change in your proposal is the names of
sh:fillers and sh:filter :) my eyes hurt when trying to distinguish between
the two.

>From a superficial look at your proposal
I find the current syntax, in particular the sh:property /
sh:inverseProperty quite intuitive to write & read for the end user while
yours is very verbose and hard to get from the first look.
if we move to sh:constraint both syntax look quite similar in terms of
complexity but yours has the advantage that is consistent.

sh:constraint in the current spec is quite overloaded and contains direct
sparql queries, nested shapes with and/or/not as well as node constraints.
>From a user point of view I would try to further simplify sh:constraint
than to complicate sh:property / sh:inverseProperty.
This could keep the metamodel complexity at high levels but then again the
metamodel is meant for the implementers and very few users.

if we want to target end-user simplicity, my high level take on
sh:constraint would be to split its responsibiities:
- node constraints could move to sh:allProperties and we end up with
something like sh:property / sh:inverseProperty / sh:allProperties ( /
sh:allInverseProperties??)
- use a different property to define sparql constraints. I would use
sh:sparqlConstraint [...] directly but if people want to reserve room for
js, sh:nativeConstraint is fine as well. This would be attached to
sh:property / sh:inverseProperty / sh:allProperties only.
- for the nested shapes with sh:and/or/not I do not have a clear idea but
nesting them with something like sh:nested would be an easy option

as a sidenote, If we keep the existential constraints only to sh:minCount /
sh:maxCount (ISSUE-129) , all metamodel definitions would be sufficiently
defined with a NodeValidationFunction (ASK query). There might be some edge
cases (Holger can probably tell them easily) where this is not sufficient
but if we can ignore those we have an opportunity for a great metamodel
simplification.

I also haven't talked about the qualified cardinality / shapes as I haven't
looked into that part much yet

Best,
Dimitris



On Sat, Mar 5, 2016 at 2:17 AM, Peter F. Patel-Schneider <
pfpschneider@gmail.com> wrote:

> On 03/03/2016 04:20 PM, Holger Knublauch wrote:
> > If you want this to be
> > seriously considered, please work out the details, including Turtle
> files etc.
>
> > Holger
>
> OK, since you asked so nicely, see the two attached files.
>
> peter
>
>


-- 
Dimitris Kontokostas
Department of Computer Science, University of Leipzig & DBpedia Association
Projects: http://dbpedia.org, http://rdfunit.aksw.org, http://
http://aligned-project.eu
Homepage:http://aksw.org/DimitrisKontokostas
Research Group: AKSW/KILT http://aksw.org/Groups/KILT
Received on Monday, 7 March 2016 15:45:18 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 19:30:30 UTC