h1. Users Guide

The core functionality of OCL that supports expressions over models is called the Essential OCL. This language is of very limited use by itself since there is no way in which the models can be provided.
Essential OCL is therefore extended in various ways to provide this missing context.

The "Complete OCL":#CompleteOCL provides a language for a document in which OCL complements an existing meta-model with invariants, and additional features.

"OCLinEcore":#OCLinEcore embeds OCL within the annotations of an Ecore model to enrich that model.

UML supports the use of OCL constraints as a form of OpaqueExpression, and UML tools such as Papyrus support those constraints for UML models.

The Eclipse OCL project provides four OCL languages to support these usages.

* "Essential OCL":#EssentialOCL provides the core extensible capability of specifying expressions for models.

* "Complete OCL":#CompleteOCL provides the ability to use OCL in a self-standing document to complement an existing meta-model with invariants, and additional features.

* "OCLinEcore":#OCLinEcore enables OCL to be embedded within an Ecore meta-model to add invariants for classifiers, bodies for operations and computed values for properties.

* "OCLstdlib":#OCLstdlib supports the definition of the standard and custom OCL Standard Libraries.

