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> ;
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 [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/topbraid-users/CAGUep87nmSVo5eziHPh6ExbPD1%3DD%3DWrfTNOwNtK0PBww21%3DpgA%40mail.gmail.com.