Die Wertebereiche von Constraint-Variablen werden durch die Klasse Domain repräsentiert. Die Klasse ist nicht abstrakt, d.h. vollständig implementiert, und kann für beliebige Wertebereiche genutzt werden, da eine entsprechende Kapselung der enthaltenen Elemente vorgesehen wurde (siehe Abbildung 7.4).
Aus Gründen der Vereinfachung beim Instantiieren bzw. beim Zugriff auf diese Klasse wurden Unterklassen von Domain erzeugt, die einen erleichterten Zugriff mit den jeweils entsprechenden Elementen der Domäne erlauben (numerische/symbolische finite Domänen, infinite Intervalldomänen). Sollen weitere Domänen unterstützt werden, ist das YACS-Framework an dieser Stelle durch weitere Unterklassen erweiterbar.
Instanzen der Klasse Domain bzw. deren Unterklassen müssen sich wie Instanzen der Klasse Expression vollständig duplizieren lassen, da sie Teil einer Variable sind (vgl. Abschnitt 7.5.1). Die Klasse Domain verfügt daher ebenfalls über eine cloneDeep()-Methode.
Belegt werden die Wertebereiche mit Instanzen von Spezialisierungen der abstrakten Oberklasse DomainElement, mit denen sich Elemente aus unterschiedlichen Domänen kapseln lassen.