1. A knowledge base system comprising: memory which stores a knowledge base and a knowledge base management system which includes instructions for at least one of adding relations to the knowledge base and querying the knowledge base, the knowledge base comprising: a relations table and a plurality of linked tables, a first of the linked tables comprising a predicate table, the relations table including slots which, for each of a plurality of rows of the relations table, respectively store a relation identifier, a predicate identifier, and first and second arguments of a respective relation; wherein each predicate identifier in the respective predicate identifier slot is composed of: a first part which encodes a key for a respective entry in the predicate table, a second part which encodes a first argument type for the first of the arguments stored in the respective row of the relations table, and a third part which encodes a second argument type for the second of the arguments stored in the respective row of the relations table; wherein the first and second argument types are selected from a predefined set of argument types, one of the argument types in the set being associated with a second of the linked tables, another of the argument types in the set being associated with a third of the linked tables or with the predicate table, one of the first and second arguments in a row of the relations table serving as a key to an entry in the second linked table when the respective part of the predicate identifier for that row encodes the associated argument type for the second linked table and serving as a key to an entry in the third linked table or the predicate table when the respective part of the predicate identifier for that row encodes the associated argument type for the third linked table or the predicate table; and a processor which executes the instructions.