Our experience is that it is ridiculously hard to add a semantic layer later. It's better to try and stratify your datastreams into what you can capture into a data model, and what you can't ... and do both. That way you limit the amount of material you are trying to categorise, and you have something you can build automatic tools around. It's a classic 80-20 problem. Don't try and solve it all! (I think I'm agreeing with Cameron's last post!)