The ClosedWorldAssumption holds that anything that cannot be shown to be true is false; no explicit declaration of falsehood is needed. Consequently, any query (which terminates) will either return true or false; there is no possibility of "unknown".
Technically, one can ask the system to prove that something is Unknown, or to prove that something is Known, so long as there is a means to represent such a query. It is not a violation of the ClosedWorldAssumption to have facts of the sort Known(X) and Unknown(Y), or even axioms like Forall X: (SomePredicate(X)-> Unknown(OtherPredicate(X))), Forall X: X<->Known(X), etc. The ClosedWorldAssumption does not enforce restrictions on the sort of logic used. However, it cannot answer 'unknown' directly; to make use of such, you'd need to craft your queries correctly -- ask Known(P), or Known(Unknown(P)).
The real difficulty with the ClosedWorldAssumption is that you cannot add information. Everything is known a priori. One cannot assert "oh, yeah! X is known!" without creating a new world and adding this fact to that world, along with all the other facts except the one that said: Unknown(X), which would need to be removed. (If this is done regularly, one would be wise to utilize ModalLogic?, where reasoning over worlds can happen). This is less a problem with the OpenWorldAssumption, where 'unknown' isn't expressed as a fact in the database, but rather as the absence of a fact. --db