Object Constraint Language

Object Constraint Language（OCL）は、統一モデリング言語 (UML) モデルに適用する規則を記述するための宣言型言語である。IBMが開発し、UML標準の一部となった。初期のOCLは、単なるUMLの形式仕様記述言語としての拡張であったが、その後 UMLだけでなく Object Management Group (OMG) の Meta-Object Facility (MOF) のメタモデル全般を扱うようになった。Object Constraint Language (OCL) は Meta-Object Facility などのモデルやメタモデルについて、図表の形式では表現できない制約やクエリを表現することができる正確なテキスト言語である。OCL は OMG のモデル変換に関する推奨標準 QVT 仕様の一部となっている。他の多くのモデル変換言語（ATLなど）も OCL に基づいて構築されている。
概要.
OCL の元となったのは、第二世代のオブジェクト指向分析・設計手法 Syntropy である。OCL 1.4 で制約言語の仕様が追加された。OCL 2.0 では、汎用のオブジェクト・クエリ言語の定義を含むよう拡張された。
OCL 言語の構文は以下の4つに分けられる:
OCL と UML.
OCL はUMLを補うものであり、自然言語の曖昧さを排していると同時に複雑な数学的記法を扱わなくてもよいという特徴がある。OCL は、図に基づいたモデルのためのナビゲーション言語でもある。
OCL と MOF.
OCL は、MOFのメタ要素と表明を関連付けることで MOF のモデルをより明確化する。
OCL と QVT.
モデル駆動工学やモデル駆動型アーキテクチャ (MDA) では、モデル変換の記法が重要となる。OMG はモデル変換の標準であるQVT（MOF/QVT）を定義した。GReAT、VIATRA、ATLといったモデル変換言語があるが、これらのQVT標準への対応レベルは様々である。これらの多くは OCL に基づいて構築されている。また、OCLのサポートはQVT準拠の主要な条件である。
類似技術.
ナビゲーション言語として見た場合、OCLはXPathと対比することができる。XPath が XMLツリーに対してナビゲーションを行うのに対して、OCL は MOFベースのモデルやメタモデル（つまり XMIツリー）に対してナビゲーションを行う。換言すれば、OCL と UML や MOF との関係と、XPath と XML の関係が似ているのである。モデルやメタモデルに副作用のない付加情報（制約など）を与えるモデル記述言語として見た場合、OCLと同様な役割を果たす言語として Alloy などがある。