Situation recognition is a process with the goal of identifying a priori defined situations in a flow of data and information. The purpose is to aid decision makers with focusing on relevant information by filtering out situations of interest. This is an increasingly important and non trivial problem to solve since the amount of information in various decision making situations constantly grow. Situation recognition thus addresses the information gap, i.e. the problem of finding the correct information at the correct time. Interesting situations may also evolve over time and they may consist of multiple participating objects and their actions. This makes the problem even more complex to solve. This thesis explores situation recognition and provides a conceptualization and a definition of the problem, which allow for situations of partial temporal definition to be described. The thesis then focuses on investigating how Petri nets can be used for recognising situations. Existing Petri net based approaches for recognition have some limitations when it comes to fulfilling requirements that can be put on solutions to the situation recognition problem. An extended Petri net based technique that addresses these limitations is therefore introduced. It is shown that this technique can be as efficient as a rule based techniques using the Rete algorithm with extensions for explicitly representing temporal constraints. Such techniques are known to be efficient; hence, the Petri net based technique is efficient too. The thesis also looks at the problem of learning Petri net situation templates using genetic algorithms. Results points towards complex dynamic genome representations as being more suited for learning complex concepts, since these allow for promising solutions to be found more quickly compared with classical bit string based representations. In conclusion, the extended Petri net based technique is argued to offer a viable approach for situation recognition since it: (1) can achieve good recognition performance, (2) is efficient with respect to time, (3) allows for manually constructed situation templates to be improved and (4) can be used with real world data to find real world situations.