on constraints (ISSUE-65)

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

This is a follow-up to the discussion on the teleconference today.


In my view there are two different (but related) things:

1/ The sort of constraints (scoped constraints?) that occur in shapes that
have a scope (either an explicit scope as in the SPIN-related proposals or
an implicit universal scope as in the various versions of ShEx).  These
constraints work off a focus node, which is a node in the graph being
validated.  A shape that requires all people to have a single string name
has a constraint of this kind, perhaps written as
  [ sh:predicate foaf:name ; sh:valueType xsd:string ]
It is not possible to evaluate this constraint without a focus node.

2/ The sort of constraints (unscoped constraints) that occur in shapes that
enforce properties of the graph as a whole.  (If scope expressions are
allowed then this sort of constraint is likely to be quite unusual and
natural examples are hard to come up with.)  These constraints do not use a
focus node, and there may be no focus node to provide for them.  A shape
that requires the graph to have exactly two triples in it would have a
constraint of this kind, perhaps written as
  SELECT ?no WHERE {
    { SELECT (COUNT(*) as ?no) WHERE {?a ?b ?c .} }
    FILTER ( ?no != 2 )
  }
This constraint has no use for a filter node.

The two kinds of constraints look and act quite differently so I think that
they need to be different kinds of things in SHACL, whether or not they are
both called different kinds of constraints.

Alternatively, it might be possible to simply not have the second kind of
constraint at all, but then there should be a determination that nothing
important has been lost.


peter
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iQEcBAEBCAAGBQJVcLh1AAoJECjN6+QThfjzHloIAKs3DljFP1WPv5dGMem19Bjs
Dn4NDwUU7zYETTFnQkCGaNXKDzwNtR6Cvru6BjE2k3zYPAeBk0CQMco2GwcB7NAG
bhrbdfbApCm8CMSBlMPrQSpqtMkXfntAUHdetM/xtIfT/UiYZjsweeT2tXurltaW
MG8UIzn6WIbj8e7xT8VmRgvXiyfwPGg/oF+2b69ConBUmrTFqg0Vbvt+7Xg/qDOB
zA/pm9oCCtDyCTfATx1NV6hXI/d8u0ldQ16Q1oIsu4nhpZh+W0EZBcyoA4qAKShZ
N5AIo5c3/fckClHqXRVcDXBOb32f5tFX21dzsBqDXzDK6scDOWkjeeT9/8+rkbw=
=k2z6
-----END PGP SIGNATURE-----

Received on Thursday, 4 June 2015 20:44:08 UTC