Devising a Context Selection-Based Reasoning Engine for Context-Aware Ubiquitous Computing Middleware