The discussion you have been having regarding sh:targetClass reminds me of a problem I am having, as follows.
I'm defining an abstract "mixin" shape, Connectable, that has various properties used by a number of target classes. I do not want to allow instantiation of Connectable, so I defined it only as a NodeShape, but not an owl:Class. (I cannot use the dash:abstract property without stepping outside strict SHACL). Then, I need other classes to have the equivalent of a sh:class constraint on properties that point to instances of all those target classes. I assume I cannot use sh:class as in the example below, since Connectable is not a class. I tried sh:node, since the documentation implies that's what I need, but I'm not getting the expected behavior. Am I misunderstanding the use of sh:node? s223:Connectable a sh:NodeShape ; ...various properties sh:targetClass s223:Device ; sh:targetClass s223:DomainSpace ; sh:targetClass s223:Sensor ; . s223:Device a owl:Class ; a sh:NodeShape ; ... . # Presumed invalid case s223:SomeOtherClass a owl:Class ; a sh:NodeShape ; sh:property [ sh:path s223:connectsFrom ; sh:class s223:Connectable ; ... #Expected valid case s223:SomeOtherClass a owl:Class ; a sh:NodeShape ; sh:property [ sh:path s223:connectsFrom ; sh:node s223:Connectable ; ... 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/CAGUep86aRz_enWzvhfMkT5pW0SvNA3XYdbdB%2BAsSXP%3DfEFAusQ%40mail.gmail.com.
