A computer-implemented method for predictive decision-making, comprising: receiving a first set of rules (410; 510); receiving first data from data sources, including a streaming data module, and static data module, the first data including dynamic and static data comprising spatial, temporal and contextual elements; identifying each rule of the first set for which the received first data is a candidate; for the identified rules for which the received first data is a candidate, indexing the received first data in memory by its temporal, spatial or contextual elements as a function of said identified rules; receiving second data from the data sources, the second data including dynamic and static data comprising spatial, temporal and contextual elements; synchronizing the data sources by defining a rule including a time window field based on latency of updating spatial elements of received data; using the time window to add a buffer zone track in the spatial index based on the first received data and identifying an event as satisfying a rule using the buffer zone track; identifying each rule of the first set for which the received second data is a candidate; for the identified rules for which the received second data is a candidate, indexing the received second data in memory by its temporal, spatial or contextual elements as a function of said identified rules; and identifying an event as satisfying an identified rule in memory using the indexed first and second data; wherein depending on the elements of the received data, the same received data are indexed differently, i.e. spatially, temporarily or contextually, by its spatial, temporal and contextual elements, as a function of the identified rules. receiving a first set of rules (410; 510); receiving first data from data sources, including a streaming data module, and static data module, the first data including dynamic and static data comprising spatial, temporal and contextual elements; identifying each rule of the first set for which the received first data is a candidate; for the identified rules for which the received first data is a candidate, indexing the received first data in memory by its temporal, spatial or contextual elements as a function of said identified rules; receiving second data from the data sources, the second data including dynamic and static data comprising spatial, temporal and contextual elements; synchronizing the data sources by defining a rule including a time window field based on latency of updating spatial elements of received data; using the time window to add a buffer zone track in the spatial index based on the first received data and identifying an event as satisfying a rule using the buffer zone track; identifying each rule of the first set for which the received second data is a candidate; for the identified rules for which the received second data is a candidate, indexing the received second data in memory by its temporal, spatial or contextual elements as a function of said identified rules; and identifying an event as satisfying an identified rule in memory using the indexed first and second data; wherein depending on the elements of the received data, the same received data are indexed differently, i.e. spatially, temporarily or contextually, by its spatial, temporal and contextual elements, as a function of the identified rules.