Re: shapes-ISSUE-129 (existential constraints): Existential constraints should be consistent [SHACL - Core]

Are the minCount and maxCount constraints really existential ? The 
maxCount constraint has a "universal" aspect, as it requires that there 
do not exist nodes satisfying the property beyond the maxCount allowed 
ones.
I think that the minCount and maxCount constraint are counting 
constraints and should be considered apart.

While trying to formalize SHACL, I identified 5 kinds of constraints, 
and the sh:hasValue constraint that enters in none of the five categories.

- universal constraints

sh:class
sh:classIn
sh:datatype
sh:datatypeIn
sh:directType
sh:in
sh:xxxLength
sh:xxxXclusive
sh:nodeKind
sh:pattern

- counting constraints

sh:xxxCount
sh:qualifiedXxxCount

- complex constraints on the value

sh:valueShape
sh:qualifiedValueShape

- "second order constraints" : these require to quantify on the set of 
values, and inspect all the elements of a set; this is not a first-order 
quantification (unlike the universal constraints), and is not captured 
by counting (counting is a kind of simple extension of first-order 
quantification)

sh:equals
sh:lessThan
sh:lessaThanOrEquals
sh:notEquals
sh:uniqueLang

- unclassified

sh:hasValue

The sh:hasValue constraint is different from the others. It also 
requires second order quantification, but different from the previous 
ones. Moreover, I was wondering whether it can be expressed as a 
qualified cardinality (qualified min count >= 1).

As Dimitris, I tend to think that having one constraint that is 
different from all others can be confusing for users.

Iovka



Le 08/03/2016 10:03, Dimitris Kontokostas a écrit :
> My take on existential constraints is if the sparql definitions 
> contains "WHERE { $this $predicate ?object . ... }" or not
> if it does it means that the constraint is applied on existing values 
> and does not require the value to exist.
>
> Using this definition the list is different
> non-existential constraints:
> - sh:class, sh:classIn, sh:datatype, sh:datatypeIn, sh:directType
> - sh:max/min/In/Exclusive, sh:maxLength, sh:minLength
> - sh:nodeKind
> - sh:in
> - sh:valueShape
> - sh:closed
> - sh:uniqueLang
> - sh:notEquals, sh:lessThan, sh:lessThanOrEquals
>
>
> existential ones:
> - sh:minCount, sh:maxCount
> - sh:qualified*
> - sh:hasValue
> - sh:equals (sorry, I didn't catch equals before)
>
> I didn't mean to include sh:and/or/not as they are different than the 
> other core constraints
>
> I suggested to limit them to - sh:minCount, sh:maxCount (and 
> sh:qualified* of course) but if we don't we should keep them consistent
> sh:hasValue should be consistent with sh:in
> sh:equals should be consistent with sh:notEquals, sh:lessThan, 
> sh:lessThanOrEquals
>
>
> On Tue, Mar 8, 2016 at 12:48 AM, Holger Knublauch 
> <holger@topquadrant.com <mailto:holger@topquadrant.com>> wrote:
>
>     Many constraint types indeed apply to "all values" only:
>     - sh:class, sh:classIn, sh:datatype, sh:datatypeIn, sh:directType
>     - sh:max/min/In/Exclusive, sh:maxLength, sh:minLength
>     - sh:nodeKind
>     - sh:in
>     - sh:valueShape
>
>     These are handled by NodeValidationFunctions in the current draft.
>
>     Other constraint types are more heterogeneous, and calling them
>     "existential" is IMHO an over-simplification:
>     - sh:and, sh:or, sh:not
>     - sh:closed
>     - sh:equals, sh:notEquals, sh:lessThan, sh:lessThanOrEquals
>     - sh:minCount, sh:maxCount
>     - sh:qualifiedXY
>     - sh:uniqueLang
>     - sh:hasValue
>
>     Just looking at sh:equals for example, the query is something like
>
>
>             SELECT $this ($this AS ?subject) $predicate ?object
>             WHERE {
>                 {
>                     $this $predicate ?object .
>                     FILTER NOT EXISTS {
>                         $this $equals ?object .
>                     }
>                 }
>                 UNION
>                 {
>                     $this $equals ?object .
>                     FILTER NOT EXISTS {
>                         $this $predicate ?object .
>                     }
>                 }
>             }
>
>     i.e. the system will produce violations if the "other" property
>     has a value that isn't present but also vice-versa. It may even
>     fire a violation if there is no value at all, but the other
>     property has values.
>
>     Coming up with an artificial limitation is likely going to hurt
>     extensions that we cannot anticipate yet, so I believe we must
>     treat them as "arbitrary" constraint types that may do anything
>     they like.
>
>     I also have seen many use cases of sh:hasValue, esp in
>     filterShapes, so i would be against dropping that.
>
>     Holger
>
>
>
>
>     On 7/03/2016 20:49, RDF Data Shapes Working Group Issue Tracker wrote:
>
>         shapes-ISSUE-129 (existential constraints): Existential
>         constraints should be consistent [SHACL - Core]
>
>         http://www.w3.org/2014/data-shapes/track/issues/129
>
>         Raised by: Dimitris Kontokostas
>         On product: SHACL - Core
>
>         The current core spec defines three existential constraints:
>         sh:minCount, sh:maxCount and sh:hasValue.
>         sh:hasValue requires for a value to exist and match the one
>         supplied in the shape definition.
>
>         This is not consistent with sh:in which is a variation of
>         sh:hasValue and probably not easy for users to understand the
>         different of sh:hasValue and other constraints e.g.
>         sh:minLength, sh:class, etc
>
>         I suggest we restrict the core existential constraints to
>         sh:minCount and sh:maxCount only. The rest of the constraints
>         will apply only when there is a value.
>
>
>
>
>
>
>
>
> -- 
> Dimitris Kontokostas
> Department of Computer Science, University of Leipzig & DBpedia 
> Association
> Projects: http://dbpedia.org, http://rdfunit.aksw.org, 
> http://http://aligned-project.eu <http://aligned-project.eu/>
> Homepage:http://aksw.org/DimitrisKontokostas
> Research Group: AKSW/KILT http://aksw.org/Groups/KILT
>


-- 
Iovka Boneva
Associate professor (MdC) Université de Lille
http://www.cristal.univ-lille.fr/~boneva/
+33 6 95 75 70 25

Received on Tuesday, 15 March 2016 14:03:24 UTC