Die EA-Modellstruktur folgt einfachen Regeln. Es gibt Pakete, Elemente und Diagramme. Elemente können mit Konnektoren verbunden werden. Diese Struktur ist auch aus dem Programmiermodell im EA (der EA-API) herauszulesen. Nennen wir es Programmier-Metamodell.
Halt, nicht so schnell. Im Programmiermodell sieht man, dass es im Repository eine Liste von Modellen gibt (Repository.Models). Diese Modelle sind Pakete. Ein Paket kann wiederum Elemente und Diagramme beinhalten, usw. Doch eigentlich ist es nicht möglich unter ein sogenanntes Root-Package (also dem Modell-Paket) ein Element oder Diagramm anzulegen. Unter einem Root-Package müssen sogenannte View-Packages liegen. Das sind Pakete mit einem View-Icon. View-Packages sind Pakete die im Project Browser Baum nicht beliebig verschoben werden können. Erst in einem View-Package können beliebige weitere Pakete, Elemente und Diagramme angelegt werden.
Das API-Modell zeigt, wie das EA-Modell programmatisch angesprochen werden kann. Die oben genannten Regeln werden durch die API selbst sichergestellt.
Das hier gezeigte semantische Metamodell zeigt ein Schema wie der EA aufgebaut ist und wie die einzelnen Elemente zusammenspielen. Die oben genannten impliziten Regeln, die von der API überprüft werden, sind im semantischen Metamodell explizit ausformuliert.
Das semantische Metamodell zeigt zum Beispiel, dass ein „Model“ mehrere „View Package“ Elemente beinhalten kann, diese sind „EA Package“ Elemente mit einem zusätzlichen View Icon.
Aus Sicht der API ist auch das „Model“ ein Package (siehe API Modell), semantisch gesehen ist es das aber nicht. Genauso wie das View Package zwar ein EA-Package ist, aber nur Teil eines „Model“ sein kann.
Im semantischen Metamodell wurde auch herausgearbeitet, dass ein EA-Package beliebig viele Baselines beinhalten kann und diese Baselines eigentlich XMI Dokumente sind, welche von einem Versionskontrollsystem verwaltet werden können.