- From: Peter F. Patel-Schneider <pfpschneider@gmail.com>
- Date: Sat, 24 Jan 2015 17:48:37 -0800
- To: Holger Knublauch <holger@topquadrant.com>, public-data-shapes-wg@w3.org
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
I can't tell whether this does or not, as there appears to be a missing bit
after ldom:predicate. However, I don't think that it could, as least so
far as I understand LDOM, as the class definition below appears tp require
that ex:Polentoni is asserted on some individuals, and the point of the
example is that there are no assertions involving ex:Polentoni in the input.
If LDOM does work by doing recognition, then this should be highlighted.
peter
On 01/24/2015 04:35 PM, Holger Knublauch wrote:
> ex:Polentoni a rdfs:Class ; # or ldom:Shape, or nothing ldom:constraint
> [ ldom:sparql """ ASK { FILTER NOT EXISTS { ?this ex:livesIn
> ex:NorthernItaly } }""" ldom:predicate ex: ] ; ldom:constraint [ a
> ldom:ShapeConstraint ; ldom:predicate ex:knows ; ldom:all ex:Polentoni ;
> ] .
>
> The evaluation is started using the built-in function
>
> ldom:violatesConstraints(ex:Enrico, ex:Polontoni)
>
> The function checks if the given instance fulfills all constraints for
> the given class. The implementation of ldom:all recursively calls
> ldom:violatesConstraints. (The engine needs to make sure it doesn't run
> into infinite loops, so this requires work).
>
> (This example also indicates that we should have a template for the
> owl:hasValue equivalent, so that people don't need to write the ugly
> SPARQL. I will add such a thing).
>
> Does this address your use case?
>
> Holger
>
>
>
>
> On 1/25/15, 3:18 AM, Peter F. Patel-Schneider wrote: 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
iQEcBAEBAgAGBQJUxEt1AAoJECjN6+QThfjzj3oIAMs1NKHaPf9VTh1IgIx7U8T2
0kqnYtdDZoWRKKH7LRKL4vSduNHyFzoAOSRehM4H2bapEQQUiKQfitwlyoDYaaGR
BfG60OzWjbU5ts+a3Luf61FQIDQgomJRGnFN79v3P8vMyTii3z/V4zoTpVF7VM2f
yPWXVesF7f4xIm0/YAWnVaK0KOra0wOXKHTCep2S0i+YmEI8qFYGaAP5BjzvrPsN
rgWA6uH5A2Mrn5osMylggx+lWJyvLN8n5AszzJDrCQquW+qxtGQxmNnzg0ddGxS/
SrNe8hXdFj3CdNqBz10HIKMsrG9NxunXitK/6vzKSTdcfLrTXITDjvq8Yk4V73E=
=PfJx
-----END PGP SIGNATURE-----
Received on Sunday, 25 January 2015 01:49:12 UTC