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 (1) a history table that stores previously received assertions, and (2) a snapshot table that stores currently valid assertions, maintaining a snapshot cache in memory that stores a subset of the assertions in the snapshot table, initiating a processing cycle, 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, writing a retraction tuple to the history table, writing the assertion tuple to the snapshot table; 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 (1) a history table that stores previously received assertions, and (2) a snapshot table that stores currently valid assertions; maintaining a snapshot cache in memory that stores a subset of the assertions in the snapshot table; initiating a processing cycle, which is a period of time during which the received plurality of assertions is processed; selecting an assertion for processing; generating an assertion tuple that corresponds to the selected assertion, wherein the assertion tuple includes the subject, property and object of the selected assertion, a transaction time, which is the starting time of the cycle, and a certainty value set to true, indicating that the selected 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 that indicates that a previous assertion with the same subject and property as the selected assertion is retracted, wherein the certainty value of the retraction tuple is set to false; writing the assertion tuple to the snapshot table; and writing the assertion tuple to the history table. 2. The method of claim 1 wherein the retraction tuple and the assertion tuple are sextuples that further comprise a valid time. 3. The method of claim 1 further comprising: determining that there is no assertion tuple in the snapshot cache that corresponds to the selected assertion; retrieving from the snapshot table the assertion tuple that corresponds to the selected assertion; and updating the snapshot cache by adding the retrieved assertion tuple to it. 4. The method of claim 3 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. 5. The method of claim 1 further comprising updating the snapshot cache by: identifying an assertion tuple in the snapshot cache that corresponds to the selected assertion; and replacing the values of the identified assertion tuple in the snapshot cache with the values from the generated assertion tuple. 6. The method of claim 5 further comprising enlisting the assertion tuple by adding it to a list of assertion tuples to update the snapshot cache with. 7. The method of claim 5 wherein updating the snapshot cache is performed after each of the plurality of received assertions is processed. 8. 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. 9. The method of claim 1 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. 10. The method of claim 1 further comprising: maintaining a list of triggers, wherein a trigger is a query that is performed once each cycle; and processing each trigger in the list after all of the received plurality of assertions are processed. 11. A server computer, comprising: a processor; a network interface in communication with the processor; a knowledge base that stores (1) a history table that includes previously received assertions, and (2) a snapshot table that stores currently valid 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 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 maintain a snapshot cache in memory that stores a subset of the assertions in the snapshot table; to initiate a processing cycle, which is a period of time during which the received plurality of assertions is processed; to select an assertion for processing; to generate an assertion tuple that corresponds to the selected assertion, wherein the assertion tuple includes the subject, property and object of the selected assertion, a transaction time, which is the starting time of the cycle, and a certainty value set to true, indicating that the selected 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 that indicates that a previous assertion with the same subject and property as the selected assertion is retracted, wherein the certainty value of the retraction tuple is set to false; to write the assertion tuple to the snapshot table; and to write the assertion tuple to the history table. 12. The server computer of claim 11 wherein the retraction tuple and the assertion tuple are sextuples that further comprise a valid time. 13. The server computer of claim 11 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; to retrieve from the snapshot table the assertion tuple that corresponds to the selected assertion; and to update the snapshot cache by adding the retrieved assertion tuple to it. 14. The server computer of claim 13 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. 15. The server computer of claim 11 wherein the instructions, when executed by the processor, further cause the server: to identify an assertion tuple in the snapshot cache that corresponds to the selected assertion; and to replace the values of the identified assertion tuple in the snapshot cache with the values from the generated assertion tuple. 16. The server computer of claim 15 further comprising enlisting the assertion tuple by adding it to a list of assertion tuples to update the snapshot cache with. 17. The server computer of claim 15 wherein updating the snapshot cache is performed after each of the plurality of received assertions is processed. 18. 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. 19. The server computer of claim 11 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. 20. The server computer of claim 11 wherein the instructions, when executed by the processor, further cause the server: to maintain a list of triggers, wherein a trigger is a query that is performed once each cycle; and to process each trigger in the list after all of the received plurality of assertions are processed.