Abstract: A semantic database is generated to provide answers to questions by users. Text processors can receive text from text sources, and can convert the text into intermediate logical statements. The text processors can then convert these statements into unambiguous semantic representations. A semantic database connected to the text processors can store the semantic representations. Query processors connected to the semantic database can receive a question from a computing device operated by a user, and can convert the question into intermediate logical subqueries. The query processors can then use a disambiguation table to generate unambiguous semantic subqueries from these intermediate logical subqueries. Using the semantic database, the query processors can match each semantic subquery to the stored semantic representation, and join results of the matching as appropriate, to determine one or more answers to the question. The query processors can send the one or more answers to the computing device.