You might be interested in a query expansion tool I developed called Owlet:
You can create a SPARQL query with a class expression literal used in a pattern like this:
?structure rdfs:subClassOf "ao:muscle and (ao:part_of some ao:head)"^^ow:omn .
You can pass this query to Owlet, which will use ELK to replace that triple pattern with a filter:
FILTER(?structure IN (ao:adductor_mandibulae, ao:constrictor_dorsalis))
Then you submit the expanded query to your triple store. There is a limitation that you can’t have variables in the OWL expression. It just queries the reasoner and injects the results into the filter.
It is easy to integrate into applications and with any reasoner. It works well for us, but I am not sure if anyone else has tried it, so if you try it let me know if you run into any problems.