I have a class hierarchy like this:
Thing
- ClassA
-ClassC
-ClassD
- ClassB
-ClassC
-ClassE
Class C is a subclass of both, ClassA and ClassB while ClassD and ClassE are only subclasses of either ClassA or ClassB
Now I would like to specify a class which is equivalent to the Intersection of subclasses of ClassA and ClassB. The following doesn't work:
NamedClass a owl:Class
NamedClass owl:equivalentClass (ClassA and ClassB)
The reason is that this sort of rule would be used by the reasoner to classify individuals, i.e. is I had an individual Ind1 which is of type ClassA and ClassB, it would be classified to be also of type NamedClass. This is not (only) what I want. I want ClassC itself to be a subclass of NamedClass.
I know this is achievable using rules (e.g. SPIN) but can it be done without rules?