Re: proposal for SHACL based on SPARQL

I am not seeing too much of an issue with implementing closed shapes in 
SPARQL, assuming that we can access the shape definitions at runtime - 
it boils down to FILTER NOT EXISTS. In my local version I just added a 
template


sh:ClosedShapeConstraint
     a sh:ConstraintTemplate ;
     rdfs:subClassOf sh:LocalTemplateConstraint ;
     rdfs:label "Closed shape constraint" ;
     rdfs:comment "Triggers an error for each triple of the focus node 
that has a predicate that is not explicitly enumerated using sh:property 
in the surrounding shape." ;
     sh:labelTemplate "Closed shape" ;
     sh:message "Invalid triple for closed shape" ;
     sh:sparql """
         SELECT ?this (?this AS ?subject) ?predicate ?object
         WHERE {
             ?this ?predicate ?object .
             FILTER (?predicate != rdf:type && ?predicate != sh:nodeShape) .
             FILTER NOT EXISTS {
                 GRAPH ?shapesGraph {
                     ?currentShape sh:property/sh:predicate ?predicate .
                 }
             }
         }
         """ ;
.

sh:ClosedShape
     a sh:ClosedShapeConstraint ;
     rdfs:label "Closed shape" ;
     rdfs:comment "A singleton instance of sh:ClosedShapeConstraint that 
can be shared between multiple shape definitions." ;
.

assuming that the definition of "closed" is that all predicates must be 
mentioned as sh:property/sh:predicate in the current shape, plus 
rdf:type and sh:nodeShape. An example test case is


ex:MyClass
     a rdfs:Class ;
     rdfs:subClassOf rdfs:Resource ;
     sh:property [
         sh:predicate ex:value ;
     ] ;
     sh:constraint sh:ClosedShape ;
.

ex:ValidInstance1
     a ex:MyClass ;
     sh:nodeShape ex:MyClass ;
     ex:value "A" ;
.

ex:InvalidInstance1
     a ex:MyClass ;
     ex:value "A" ;
     ex:value2 "A" ;
.

Note that the SPARQL query above assumes the presence of two pre-bound 
variables ?shapesGraph and ?currentShape that are passed into the query 
by the engine. Open questions would be should this also honor 
inheritance/extension and sh:inverseProperty. I would not be in favor of 
having closed shapes as a flag to the engine - I think this should be 
driven by the shape definitions themselves.

Holger


On 4/23/2015 7:00, Peter F. Patel-Schneider wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA256
>
> OK.  I'll list them right at that spot in addition to the other places that
> they are listed.
>
> peter
>
> PS:  They turn out to be recursive shapes and closed shapes.  Hmm, neither
> of these are actually accepted requirements yet, so I'll change the wording
> as well.
>
> On 04/22/2015 01:33 PM, Ted Thibodeau Jr wrote:
>> On Apr 17, 2015, at 03:23 AM, Peter F. Patel-Schneider
>> <pfpschneider@gmail.com> wrote:
>>
>>> I light of
>>>
>>> http://www.w3.org/2015/04/16-shapes-minutes.html#resolution03
>>> RESOLUTION: All proposals to be considered should be in decent shape by
>>> the end of the month (30 April) or will be dropped
>>>
>>> I updated my proposal for a SHACL based on SPARQL at
>>> https://www.w3.org/2014/data-shapes/wiki/Shacl-sparql
>>>
>>>
>>> I welcome questions and suggestions for improvement.
>>>
>>> peter
>>
>> "Several SHACL accepted requirements cannot be handled in SPARQL and so
>> are not in this proposal for SHACL."
>>
>> Enumerating these would make informed consideration of this proposal much
>> less challenging.
>>
>> Thanks,
>>
>> Ted
>>
>>
>>
>> -- A: Yes.
>> http://www.idallen.com/topposting.html | Q: Are you sure? | | A: Because
>> it reverses the logical flow of conversation. | | | Q: Why is top posting
>> frowned upon?
>>
>> Ted Thibodeau, Jr.           //               voice +1-781-273-0900 x32
>> Senior Support & Evangelism  //        mailto:tthibodeau@openlinksw.com
>> //              http://twitter.com/TallTed OpenLink Software, Inc.
>> //              http://www.openlinksw.com/ 10 Burlington Mall Road, Suite
>> 265, Burlington MA 01803 Weblog   -- http://www.openlinksw.com/blogs/
>> LinkedIn -- http://www.linkedin.com/company/openlink-software/ Twitter
>> -- http://twitter.com/OpenLink Google+  --
>> http://plus.google.com/100570109519069333827/ Facebook --
>> http://www.facebook.com/OpenLinkSoftware Universal Data Access,
>> Integration, and Management Technology Providers
>>
>>
>>
>>
>>
>>
>>
>>
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v2
>
> iQEcBAEBCAAGBQJVOAvnAAoJECjN6+QThfjzp2UH/3Nyb9e8DcsNzpUfDhkX02aI
> vlJKqjCXG6hR4J3pjS5fTOg6sejru4iw7/O4bv33pbwHM5G3Z3cMJqIa5S42wpeQ
> 2Kq8Gi9VAtAtOkAHumCa/ZkaM052bcMXaVYgu0IOZJK/lne9BHxxb/FLBNLWFnJr
> v/Jizl4ksqZkcAK0XYr2xNuyoeZHD1UlOYqsG7TUBsMwByD8PkyqSe4FMssRFzCT
> xQwGGHqdfxNrc6wqupd1KxSzv411QrA0r2dpUVjYl3+kPIWiCGWQu+aGJYmoLygK
> xNn0j3MugWwWSSEW+wFaTTTs9p+KMXfMhKu7TJtW/24u944O8N6AVFgh+h0chC0=
> =VS/F
> -----END PGP SIGNATURE-----
>

Received on Thursday, 23 April 2015 01:13:01 UTC