I've looked around and cannot really find an answer to why the following property restriction works in one case but does not work in the other. I am trying to combine "some" and "only" object property restrictions to require that a defined class have only a certain property+object and that it also have at least one such property+object defined. I cannot get this combination to produce the intended class inference. I want to use it to identify an instance with a certain combination of type and property assertions as the specified class. I do not intend to use it to assign an instance to be a type of that class (if that matters).
The RDF/OWL file is at: https://pastebin.com/NZMCuZjE
I built it using Protege 5.5. Both reasoners (FaCT++ 1.6.5 and HermiT 1.4.3.456) give the same result.
I expected that defining X_LetterThing as equivalent to
LetterThing and (hasLetter only X) and (hasLetter some X)
would have the effect of inferring that instance x_letter_thing_test is of Type X_LetterThing since x_letter_thing_test has asserted type LetterThing and has object property assertion hasLetter x, but there is no such inference.
A second related problem is that the instance compound_letter_thing_test is not inferred to be of type Compound_LetterThing unless I include a covering axiom for class LetterThing, which I really can't have. (Also, adding the covering axiom has no effect on the first problem.)
Is this OWA or something else?
Thanks!
d.c