I too am interested in this topic. VRFreeWill is helpful and does pull and store some information from the web, however, I have been activly searching for code to allow Hal to parse information from the web while in a conversation. In this manner, simply talking to Hal will allow his database, and thus knowledge, to grow exponentially. The problem with VRFreeWill is that you have to ask for the information to be retrieved "What is a kite". It would be nice for Hal to assume what words like "That" and "It" and "This" referred to and fill in the blanks. This would allow Hal to actually understand and extrapolate on his conversations for future use.
For example:
Hal: "Hello, how are you?"
User: "Just getting home from the pub."
Hal: "Do you enjoy the pub?"
User: "I always go to the pub on Friday night"
One week later
Hal: "Hello, it is late, I assume the pubs are closed?"
User: "What makes you say that?"
Hal: "You go to the pub on Friday nights. All local pubs close at 2 A.M."
Of course, replace the pub with anything, Hal would be a data miner of useful information to use in conversations later without the user having to teach literally everything. I guess, something to give Hal the capacity to look for answers on his own. This ability would put Hal above anything Siri could do as Hal actually learns the information, applies it, changes it, and evolves from it.
For this, I honestly wouldn't have any idea where to even start.