1. A computer-implemented method for annotating and retrieving data objects, comprising: receiving a request, from a user, to create an annotation associated with a data object selected by the user; determining based on a context of the user at least one category of information to be input regarding the selected data object; defining an annotation structure based on the at least one category of information associated with the selected data object and the context of the user, the defined annotation structure comprising one or more annotation fields; creating an interface, based on the defined annotation structure, allowing the user to populate the one or more annotation fields of the defined annotation structure; structuring the annotation based on a context of the user, and presenting the annotation on retrieval by a reader, based on a context of the reader of the annotation and as defined by the user, the presented annotation including different annotation fields than the defined annotation structure; receiving a query having conditions, the conditions including annotation search conditions and data search conditions; simultaneously searching both an annotation database and a data objects to produce a search result, the search result containing objects that satisfy both the annotation search conditions and the data search conditions; and presenting the search result to the user.