Related question here:
Proving knowledge of a preimage of a hash without disclosing it?
Over at theoretical computer science SE:
Zero knowledge proof for value of a hash function
From the general properties of hash functions, we can not derive such a proof of knowledge. The reason for this is, hash functions are intended to destroy all meaningful structure. In most zero knowledge proofs structures with oneway-trapdoor functions and homomorphic properties are used, because then those proofs are short and elegant. Practical hash functions don't have that. On the contrary, a homomorphic property could be used to find collisions, which shouldn't be possible for hash functions.
For specfic ones, like sha 256, there are ways to get a proof of knowledge, and it is explicitly an example of Zero-Knowledge Using Garbled Circuits
or How To Prove Non-Algebraic Statements Efficiently, by Jawurek, Kerschbaum and Orandi (2013). There is an experimental evaluation as well. The experiment had a result of over 5s for sha 256.
That should cover your first question, but I am not sure what you mean with the second question. In a proof of work you usually have the following steps: 1. The client requests something, 2. the server gives the client a task, e.g. a partial preimage to a hash, 3. the client sends the solution, 4. the server grants the request.
Now, you can replace the 3. step of sending the solution with a proof of knowledge. But that doesn't really make any sense, because the task should be possible to complete within reasonable time (partial preimage, or preimage in a reduced input space), and the server has to know that it is actually solvable. So if the server actually wants to get the solution, he can just calculate it himself. A proof of knowledge only makes sense if the input has to be kept secret from the server, but if he can't find the solution within reasonable time, then this challenge is useless in a proof of work - the challenge has to be solvable within reasonable time.
edit: I have no idea what you mean with your references to the Schnorr identifiation scheme and commited verifier zero knowledge. Those elegant kind of proofs like the Schnorr signature scheme are unusable for hash functions.