OCL 2.0 (Object Constraint Language 2.0) es un lenguaje para la descripción formal de expresiones en los modelos UML.
Sus expresiones pueden representar invariantes, precondiciones, postcondiciones, inicializaciones, guardias, reglas de derivación, así como consultas a objetos para determinar sus condiciones de estado.
Este lenguaje no causa efectos laterales, de manera que la verificación de una condición, que se presupone una operación instantánea, nunca altera los objetos del modelo.
El tipo OCLAny es el supertipo de los tipos de base String, Boolean, Real y su subtipo Integer.
Aunque se trata de un lenguaje de especificación ya adoptado para UML 2.0, falta todavía definir los detalles de su utilización en los diferentes artefactos que conformarán la notación UML 2.0.