The issue here is not really the computational complexity of doing
something like this but getting the semantics right. What you are
asking for is a non-monotonic extension, a statement that is being
inferred ceases to be inferred after an addition of a new statement,
and there is no straight-forward mechanism to do this as part of
reasoning.
It is better to handle this at query time as you suggest. Note that
Stardog provides a mechanism to define magic properties so the query
you show would return the expected answers as is with such an
extension. We don't have examples of writing custom property functions
in the documentation right now but we'll be adding those very soon so
you can look into writing your property functions.
Best,
Evren