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.

Reply via email to