example of recursive shapes

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Here is an example of recursive shapes and constraints based on them.  I
have purposefully removed typing information and domains and ranges from the
RDF graph given at the beginning.  A version of the RDF graph that is more
likely to actually occur is given at the end.  The extra information does
not change anything.


Reduced RDF Graph

ex:Enrico ex:livesIn ex:NorthernItaly .
ex:Diego ex:livesIn  ex:NorthernItaly .
ex:Alessandro ex:livesIn ex:NorthernItaly .
ex:Sergio ex:livesIn ex:NorthernItaly .
ex:John ex:livesIn ex:NorthernItaly .
ex:Maurizio ex:livesIn ex:SouthernItaly .

ex:Enrico ex:knows ex:John .
ex:John ex:knows ex:Maurizio .
ex:Diego ex:knows ex:Alessandro .
ex:Alessandro ex:knows ex:Diego .
ex:Alessandro ex:knows ex:Sergio


Shapes and Constraints (informal)

Polentoni are those who live in Northern Italy and who only know those who
are Polentoni.  Enrico is not Polentoni.  Diego is Polentoni.


Shapes and Constraints (in OWL Constraints with Closed-World Recognition)

Polentoni = (ex:livesIn : ex:NorthernItaly) & (all ex:knows Polentoni)
ex:Enrico not in Polentoni
ex:Diego in Polentoni


Shapes and Constraints (in ShExC plus OSLC controls)

<Polentoni> {
   ex:livesIn ( ex:NorthernItaly ),
   ex:knows @<Polentoni>*
}

ex:Diego oslc:instanceShape <Polentoni> .

I don't believe that this setup can require that Enrico is not Polentoni.


Natural RDF Graph

ex:Person rdf:type rdfs:Class .
ex:Region rdf:type rdfs:Class .
ex:livesIn rdf:type rdf:Property .
ex:knows rdf:type rdf:Property .
ex:livesIn rdfs:domain ex:Person .
ex:livesIn rdfs:range ex:Region .
ex:knows rdfs:domain ex:Person .
ex:knows rdfs:range ex:Person .

ex:NorthernItaly rdf:type ex:Region .
ex:SouthernItaly rdf:type ex:Region .

ex:Enrico rdf:type ex:Person .
ex:Diego rdf:type ex:Person .
ex:Alessandro rdf:type ex:Person .
ex:Sergio rdf:type ex:Person .
ex:John rdf:type ex:Person .
ex:Maurizio rdf:type ex:Person .

ex:Enrico ex:livesIn ex:NorthernItaly .
ex:Diego ex:livesIn  ex:NorthernItaly .
ex:Alessandro ex:livesIn ex:NorthernItaly .
ex:Sergio ex:livesIn ex:NorthernItaly .
ex:John ex:livesIn ex:NorthernItaly .
ex:Maurizio ex:livesIn ex:SouthernItaly .

ex:Enrico ex:knows ex:John .
ex:John ex:knows ex:Maurizio .
ex:Diego ex:knows ex:Alessandro .
ex:Alessandro ex:knows ex:Diego .
ex:Alessandro ex:knows ex:Sergio
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iQEcBAEBAgAGBQJUw9PxAAoJECjN6+QThfjzY8sH/0muw9K1qvzlYK5BUbiqKErm
gP7+lcMmwHvNUhbsUQzoiI2bvcM3VMKJSOB7E3xfflC1W3GY1JBqz2NvQzsnIpjF
Bw+axcbYcRxHG+zvoQcHuEAJUlT1n0U/iTTS/DxnzEEBhaBL2qXsB5UrQnTwpW/W
MfoFX6ZC+ZhSpuI0NL0IbrJ2Hw+f3T5f+apTfGTUvvIFfurURSVjukNPXYhKN6KQ
X/CjL4CJDYFhVPuQE9JFUyB3vSKZUCSfZKL2RNMLdu1cKh3wcUrO+qGYyCoC3JB1
lC2Am0NB0sk+Fdw1P2AO9cjuk/tURx8yF1qK3YHp+amZYvySJZ6wHCL5ijcBnyI=
=MSHG
-----END PGP SIGNATURE-----

Received on Saturday, 24 January 2015 17:19:14 UTC