- From: Holger Knublauch <holger@topquadrant.com>
- Date: Wed, 16 Mar 2016 18:54:41 +1000
- To: public-data-shapes-wg <public-data-shapes-wg@w3.org>
- Message-ID: <56E91F51.2090400@topquadrant.com>
On 16/03/2016 17:44, Dimitris Kontokostas wrote:
>
>
> On Wed, Mar 16, 2016 at 8:35 AM, Holger Knublauch
> <holger@topquadrant.com <mailto:holger@topquadrant.com>> wrote:
>
> Could you sketch how the SPARQL would look like for sh:equals,
> sh:notEquals, sh:lessThan? I see no issues with the current
> definitions, but I may be missing something. Do you have a case
> where sh:equals and sh:notEquals are not symmetric? To me,
> notEquals reports the intersection and equals reports violations
> for all values that are outside of the intersection.
>
>
> I would define sh:equals as
>
> SELECT $this ($this AS ?subject) $predicate ?object
> WHERE {
> $this $predicate ?object .
> $this $equals ?object2 .
> FILTER (?object != ?object2) .
> }
But this would iterate over all combinations, i.e. even for two
identical sets of 2 values, it would produce violations. In other words,
both properties could only ever have one value.
> similar to the existing definitions
> SELECT $this ($this AS ?subject) $predicate ?object WHERE {
> $this $predicate ?object .
> $this $lessThan ?object2 .
> FILTER (!(?object < ?object2)) .
> }
> SELECT $this ($this AS ?subject) $predicate ?object WHERE {
> $this $predicate ?object .
> $this $lessThanOrEquals ?object2 .
> FILTER (!(?object <= ?object2)) .
> }
> SELECT $this ($this AS ?subject) $predicate ?object WHERE {
> $this $predicate ?object .
> $this $notEquals ?object .
> }
> with the current definition, when a property does not exists, equals and notEquals are not symmetric since notEquals does not check for absence.
> With the suggested definition we can claim that these properties are symmetric only when we have a sh:minCount >0 on both properties
I regard these as set-operators.
sh:equals: both sets must be equal
sh:notEquals: both sets must not be equal, i.e. there are nodes outside
of either set
sh:lessThan: all values of set1 must be < all values of set2
sh:hasValue: the set must include a given value
Holger
Received on Wednesday, 16 March 2016 08:55:16 UTC