1. A method comprising: receiving by one or more text processors, text from one or more text sources; converting, by the one or more text processors, the text into a plurality of intermediate logical statements that abstract over the syntactic form of information in the text; converting, by the one or more text processors using a semantic model, each intermediate logical statement into a semantic representation that equates intermediate logical statements having equivalent meanings such that the semantic model comprises a plurality of frames, each frame representing a relation or event and comprising one or more variables serving roles in the relation or event and each frame comprising one or more equivalent patterns, each pattern having a form of an intermediate logical statement including at least one variable and comprising a definition of a logical form that corresponds to a plurality of logically equivalent grammatical forms; sending, by one or more text processors, the semantic representation to a semantic database configured to store the semantic representation; receiving a query from a computing device; converting the query, by one or more query processors, connected to the semantic database into one or more semantic subqueries; matching, by the semantic database, each semantic subquery to stored semantic representations and joining results as appropriate to determine one or more answers to the query; sending, by the one or more query processors, the one or more answers to the computing device from which the query was received.