1. A method of transforming natural language expression into formal language representation comprising the steps of: partially parsing one or more natural language expressions; associating one or more formal expressions with each parsed fragment; selecting an appropriate subset of said formal expressions for user review; converting said subset into suitable form for presentation to a user, wherein said suitable form comprises a plurality of natural language paraphrases; presenting said suitable form to a user wherein the user selects, rejects, adds to, logically connects, and otherwise manipulates members of said subset resulting in a plurality of formal expressions, wherein the step of presenting said suitable form to a user wherein the user selects, rejects, adds to, logically connects, and otherwise manipulates members of said subset comprises the step of presenting said plurality of natural language paraphrases to the user wherein the user indicates that certain placeholder variables within said natural language paraphrases represent the same entity and should be unified; combining the resulting plurality of formal expressions into a single formal representation; and compiling said single formal expression into one or more expressions suitable for querying a knowledge store.