At a high level, processing a query (or assertion) consists of applying all accessible rules (see the discussion of :rules and :srules above). Applying any rule consists simply of querying its antecedent and then (if the query of the antecedent succeeds) asserting its consequent. One important complication to this simple picture is the idea of partitions.
Intuitively, a partition is a part of the knowledge-base which is somehow internally cohesive and distinct from the rest of the knowledge-base. Operationally, a partition limits rule chaining; rule chaining is always cut off at partitional boundaries. Assertions into other partitions are queued and their forward-chaining rules are not applied until their partition is updated. Partitions are currently updated just before operations are performed in them.