I have a hierarchy of skos:Concept
s and want to define an owl:Class
consisting of those individuals that are connected to a specific concept or one of its narrower terms through some property.
I managed to create an owl:Restriction
that works for one specific concept, but not for a hierarchy of concepts:
# Concept hierarchy
concepts:Dance a skos:Concept .
concepts:FolkDance a skos:Concept ;
skos:broaderTransitive concepts:Dance .
concepts:SquareDance a skos:Concept ;
skos:broaderTransitive concepts:FolkDance .
# owl axioms
ex:Dance rdfs:subClassOf ex:Movement ;
owl:equivalentClass [
a owl:Restriction ;
owl:onProperty ex:hasKindOfMovement ;
owl:hasValue concepts:Dance
] .
# Assertions
ex:SomeInstance ex:hasKindOfMovement concepts:Dance .
The above correctly makes ex:someInstance
an instance of ex:Dance
. But how can I make ex:anotherInstance
a member of ex:Dance
if I have the assertion
ex:anotherInstance ex:hasKindOfMovement concepts:SquareDance
? I. e. where the individual in owl:hasValue
is a transitively narrower concept than the one specified in the restriction.
This question seems similar to OWL restrictions - defining classes that only contains properties with a specific property value but I couldn't work it out from there... Any help is much appreciated.