1. A computer implemented method for generating a semantic network characterized in that it comprises the steps of: (a) providing an information domain; (b) representing the information domain as a data set, the data set being defined by data entities and one or more relationships between the data entities; (c) providing, by means of an agent, data representing one or more thoughts; and (d) synthesizing, or facilitating the synthesizing, by one or more computer processors, a semantic network based on one or more interactions between the data entities and the one or more thoughts.