- From: Peter F. Patel-Schneider <pfpschneider@gmail.com>
- Date: Wed, 12 Oct 2016 20:04:14 -0700
- To: "public-rdf-shapes@w3.org" <public-rdf-shapes@w3.org>
Because of the problems with EXISTS in SPARQL many ASK-defined constraint components have unusual meanings according to their SPARQL definition. For example, the data graph ex:i1 rdf:type ex:C , D ; ex:p _:b1 . validates against the shapes graph s:s1 rdf:type sh:Shape ; sh:targetClass ex:C ; sh:property [ sh:predicate ex:p ; sh:class ex:D ] . This is probably not intended behaviour. Note that this is separate from the continuing problems with pre-binding. SPARQL definition for sh:class ASK { $value rdf:type/rdfs:subClassOf* $class . } Resultant query SELECT DISTINCT $this ?value WHERE { $this $PATH ?value . FILTER NOT EXISTS { $value rdf:type/rdfs:subClassOf* $class . } } When validating ex:i1 the first BGP should (if pre-binding were fixed) result in a single mapping { (this, ex:i1), (value, _:b1) } EXISTS substitution then results in BGP(_:b1 rdf:type/rdfs:subClassOf* $class . ) which produces (again if pre-binding were fixed) a single mapping that maps _:b1 to ex:i1 so the FILTER is false. So the SELECT returns an empty result and so the data graph validates against the shapes graph.f Peter F. Patel-Schneider Nuance Communications
Received on Thursday, 13 October 2016 03:04:50 UTC