This (interesting) design may work technically, but it can be very slow
because it will traverse all rdf:type triples everywhere and use a
rather complex algorithm with nested (qualified) shapes. A better
solution would indeed start with exactly the instances of one of those
classes. The
Hi David
Your solution (as generated) needs quite some code in case of more than two
items and also in a distributed way.
We hoped to cover it with more generic template code…
Wrt shacl AF: if we can do it in shacl core (being a recommendation) that would
be preferred. Furthermore I would not
I don’t like creating a separate instance to control disjointedness as it’s not
immediately visible in the relevant class form. The NodeShape being proposed
has the same issue.
I usually use a pattern like this:
unnamed:Thing_1
rdf:type owl:Class ;
rdfs:subClassOf owl:Thing ;
(we were looking for an approach not needing rdfs-entailment)
sml:AllDisjointClasses_1
a owl:AllDisjointClasses ;
owl:members (
sml:PhysicalObject
sml:InformationObject
sml:Activity
sml:Event
sml:State
) ;
.
In shacl (?):
sml:DisjointClassesShape_1 a