There is no path in your example that could get from ?this to ?prop. A path 
specifies predicates. You do not have predicates to specify - you are finding 
out your predicates in the first WHERE statement. This is why you need to have 
2 statements in the WHERE clause and can’t boil them down to a path expression 
in a single statement.

> On Nov 24, 2020, at 12:39 PM, Steve Ray <st...@steveray.com> wrote:
> 
> I'm trying to get comfortable with using SHACL code and wean myself from 
> embedded SPARQL. However, I'm having some trouble mapping certain common 
> SPARQL patterns into the SHACL counterpart. Specifically, here's an example. 
> I'm trying to find all the values of any property that is a subPropertyOf a 
> parent property (c223:hasProperty).
> The SPARQL should (I think) be something like this:
> 
> c223:PropertiesShape
>   rdf:type sh:PropertyShape ;
>   sh:path c223:hasProperty ;
>   sh:name "PropertiesShape" ;
>   sh:values [
>       sh:sparql [
>           sh:prefixes <http://www.w3.org/2000/01/rdf-schema 
> <http://www.w3.org/2000/01/rdf-schema>> ;
>           sh:select """SELECT DISTINCT ?prop
>                              WHERE {
>                              ?property rdfs:subPropertyOf* c223:hasProperty .
>                              $this ?property ?prop .
> }""" ;
>         ] ;
>     ] ;
> .
> 
> I know the following is wrong, but not sure what sh: calls I should be using:
> 
> c223:PropertiesShape
>   rdf:type sh:PropertyShape ;
>   sh:path c223:hasProperty ;
>   sh:name "PropertiesShape" ;
>   sh:values [
>       sh:distinct [
>           sh:nodes [
>               sh:path (
>                   [
>                     sh:zeroOrMorePath rdfs:subPropertyOf ;
>                   ]
>                   c223:hasProperty
>                 ) ;
>             ] ;
>         ] ;
>     ] ;
> .
> 
> This gives me a "malformed SHACL expression", so there are definitely 
> problems.
> 
> My real question is, how does one duplicate this pattern in SHACL?:
> 
> WHERE {
>                              ?property rdfs:subPropertyOf* <parentProperty> .
>                              $this ?property ?result .
> }
> 
> 
> 
> 
> Steve
> 
> 
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "TopBraid Suite Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to topbraid-users+unsubscr...@googlegroups.com 
> <mailto:topbraid-users+unsubscr...@googlegroups.com>.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/topbraid-users/CAGUep87nmSVo5eziHPh6ExbPD1%3DD%3DWrfTNOwNtK0PBww21%3DpgA%40mail.gmail.com
>  
> <https://groups.google.com/d/msgid/topbraid-users/CAGUep87nmSVo5eziHPh6ExbPD1%3DD%3DWrfTNOwNtK0PBww21%3DpgA%40mail.gmail.com?utm_medium=email&utm_source=footer>.

-- 
You received this message because you are subscribed to the Google Groups 
"TopBraid Suite Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to topbraid-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/topbraid-users/11EA64E3-07D1-4DAF-A609-21C84A739254%40topquadrant.com.

Reply via email to