Embodiments are directed towards a method and a computer server for receiving assertions, wherein an assertion can have a functional property such that for a given subject and a given property the object has a single value at any time, maintaining a knowledge base that includes a history table that stores previously received assertions, the method comprising selecting an assertion for processing, generating an assertion tuple that corresponds to the selected assertion, determining that the property of the selected assertion is functional; and writing the assertion tuple to the history table.
Please help me write a proper abstract based on the patent claims. CLAIM: 1. A computer-implemented method for storing data in a knowledge base, comprising: receiving a plurality of assertions wherein an assertion comprises a subject, a property and an object and wherein an assertion can have a functional property such that for a given subject and a given property the object has a single value at any time, and if a new assertion is received with the given subject and the given property and a different object value then the newly received assertion is valid and any previously received assertions are no longer valid; maintaining a knowledge base that includes a history table that stores an assertion tuple for each previously received assertion; selecting an assertion for processing; generating an assertion tuple that corresponds to the selected assertion, wherein the corresponding assertion tuple comprises the subject value, property value and object value of the corresponding assertion, a transaction time that indicates when the corresponding assertion was received, and a certainty value set to true, indicating that the corresponding assertion is true as of the transaction time; determining that the property of the selected assertion is functional; writing a retraction tuple to the history table, wherein the retraction tuple has the same subject and property values as the selected assertion and a certainty value set to false to indicate that a previous assertion with the same subject and property is retracted; and writing the assertion tuple to the history table. 2. The method of claim 1 wherein the knowledge base further includes a snapshot table that stores currently valid assertions, the method further comprising: writing the assertion tuple to the snapshot table. 3. The method of claim 2 further comprising: maintaining a snapshot cache that stores a subset of the assertions in the snapshot table; and updating the snapshot cache with the retrieved assertion tuple. 4. The method of claim 3 further comprising: determining that there is no assertion tuple in the snapshot cache that corresponds to the selected assertion, and wherein updating the snapshot cache comprises adding the generated assertion tuple to the snapshot cache. 5. The method of claim 4 wherein determining that there is no assertion tuple in the snapshot cache that corresponds to the selected assertion comprises determining that there is no assertion tuple in the snapshot cache for which the subject and property values are identical to the subject and property values of the selected assertion. 6. The method of claim 3 further comprising: identifying that there is already an assertion tuple in the snapshot cache that corresponds to the selected assertion, and wherein updating the snapshot cache comprises replacing the values of the identified assertion tuple in the snapshot cache with the values from the generated assertion tuple. 7. The method of claim 3 further comprising enlisting the assertion tuple by adding it to a list of assertion tuples to update the snapshot cache with. 8. The method of claim 7 wherein updating the snapshot cache is performed for each of the assertion tuples in the list after each of the plurality of received assertions is processed. 9. The method of claim 1 wherein the history table comprises a forward history table and a reverse history table and the order of the first three columns of the forward history table are predicate, subject, object and the order of the first three columns of the reverse history table are predicate, object, subject. 10. The method of claim 2 wherein the snapshot table comprises a snapshot table for assertions that have a functional property and a snapshot table for assertions that have a nonfunctional property and the key values for the snapshot table for assertions that have a functional property are the subject and property and the key values for the snapshot table for assertions that have a nonfunctional property are the subject, property and object. 11. A server computer, comprising: a processor; a network interface in communication with the processor; a knowledge base that includes a history table that stores an assertion tuple for each assertion received by the server, wherein an assertion comprises a subject, a property and an object and wherein an assertion can have a functional property such that for a given subject value and a given property value the object has a single value at any time, and if a new assertion is received with the given subject value and the given property value and a different object value then the newly received assertion is valid and any previously received assertions with the given subject value and the given property value are no longer valid, and a memory in communication with the processor for storing instructions, which when executed by the processor, cause the server: to receive a plurality of assertions; to select an assertion for processing; to generate an assertion tuple that corresponds to the selected assertion, wherein the corresponding assertion tuple comprises the subject value, property value and object value of the corresponding assertion, a transaction time that indicates when the corresponding assertion was received, and a certainty value set to true, indicating that the corresponding assertion is true as of the transaction time; to determine that the property of the selected assertion is functional; to write a retraction tuple to the history table, wherein the retraction tuple has the same subject and property values as the selected assertion and a certainty value set to false to indicate that a previous assertion with the same subject and property is retracted; and to write the assertion tuple to the history table. 12. The server computer of claim 11 wherein the knowledge base further includes a snapshot table that stores currently valid assertions, and wherein the instructions, when executed by the processor, further cause the server: to write the assertion tuple to the snapshot table. 13. The server computer of claim 12 wherein the instructions, when executed by the processor, further cause the server: to maintain a snapshot cache that stores a subset of the assertions in the snapshot table; and to update the snapshot cache with the retrieved assertion tuple. 14. The server computer of claim 13 wherein the instructions, when executed by the processor, further cause the server: to determine that there is no assertion tuple in the snapshot cache that corresponds to the selected assertion, and wherein updating the snapshot cache comprises adding the generated assertion tuple to the snapshot cache. 15. The server computer of claim 14 wherein determining that there is no assertion tuple in the snapshot cache that corresponds to the selected assertion comprises determining that there is no assertion tuple in the snapshot cache for which the subject and property values are identical to the subject and property values of the selected assertion. 16. The server computer of claim 13 wherein the instructions, when executed by the processor, further cause the server: to identify that there is already an assertion tuple in the snapshot cache that corresponds to the selected assertion, and wherein updating the snapshot cache comprises replacing the values of the identified assertion tuple in the snapshot cache with the values from the generated assertion tuple. 17. The server computer of claim 13 wherein the instructions, when executed by the processor, further cause the server: to enlist the assertion tuple by adding it to a list of assertion tuples to update the snapshot cache with. 18. The server computer of claim 17 wherein updating the snapshot cache is performed for each of the assertion tuples in the list after each of the plurality of received assertions is processed. 19. The server computer of claim 11 wherein the history table comprises a forward history table and a reverse history table and the order of the first three columns of the forward history table are predicate, subject, object and the order of the first three columns of the reverse history table are predicate, object, subject. 20. The server computer of claim 12 wherein the snapshot table comprises a snapshot table for assertions that have a functional property and a snapshot table for assertions that have a nonfunctional property and the key values for the snapshot table for assertions that have a functional property are the subject and property and the key values for the snapshot table for assertions that have a nonfunctional property are the subject, property and object.