Representation And Reasoning For Complex Spatio-Temporal Problems: From Humans To Software Agents