If you are asking about a filtered display that shows only some property values (based on their type) but drops others, we have no out-of-the-box solution beside inferring a new property using sh:values rules.
So for example define a new property
sh:property [
a sh:PropertyShape ;
sh:path ex:paragraph ;
sh:values [
sh:nodes [ sh:path ex:contains ] ; # start with all
values of ex:contains
sh:filterShape [ sh:class ex:Paragraph ] ; # but only keep
those that are instances of ex:Paragraph [1]
]
]
and for display purposes mark ex:contains as dash:hidden true.
You can produce any number of other virtual "view" properties this
way, and our APIs such as GraphQL and ADS/JavaScript provide easy
access to them.
Is this on the right track or what else did you have in mind?
Holger
[1]
https://w3c.github.io/shacl/shacl-af/#node-expressions-filter-shape
--
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-user...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/topbraid-users/6491d7a1-0567-42e8-b310-e66bfcd63fd3n%40googlegroups.com.
BTW looking at your example, you seem to have two ways of attaching the children - one in a list-like sequence and one as direct property values. An alternative to that is to use reification and dash:indexed, e.g.
ext:RootClass-orderedChildren
rdf:type sh:PropertyShape ;
sh:path ext:orderedChildren ;
dash:indexed true ;
sh:class ext:Person ;
sh:name "ordered children" ;
.
and then
ex:Parent1
ex:contains ex:Child1 [[ dash:index 0 ]] ;
ex:contains ex:Child2 [[ dash:index 1 ]] ;
...
Holger