Expressing Real-Time Constraints in OCL with High-Level Temporal Logic Operators