Le métamodèle public de PowerAMC utilise les concepts UML standard :
Noms publics - Chaque objet du métamodèle PowerAMC a un nom et un code qui correspondent au nom public de l'objet. Le nom public d'un objet est identificateur unique de cet objet dans la bibliothèque du modèle ou dans un package (par exemple, par exemple PdCommon) visible dans le diagramme Modules du métamodèle. Les noms publics sont également utilisés dans les fichiers XML (voir Format de fichier XML de PowerAMC) ainsi que dans le langage de génération par template (GTL) de PowerAMC (voir Personnalisation de la génération à l'aide du langage de génération par template). Le nom public ne correspond pas toujours au nom de l'objet dans l'interface de PowerAMC.
Classes - Les classes sont utilisées pour représenter les métadonnées de la façon suivante
Classes abstraites : elles sont utilisées pour partager des attributs et comportements. Elles ne sont pas visibles dans l'interface PowerAMC. Les classes pouvant être instanciées héritent des classes abstraites via des liens de généralisation. Par exemple, NamedObject est une classe abstraite, elle stocke les attributs standard tels que name, code, comment, annotation et description hérités par la plupart des objets de conception PowerAMC
Classes instanciables/concrètes : elles correspondent aux objets affichés dans l'interface, elles sont dotées de leurs propres attributs tels que type ou persistance, et héritent des attributs et comportements des classes abstraites via les liens de généralisation
Attributs de classes - Les attributs sont des propriétés de classe qui peuvent être dérivées ou non. Les classes liées à d'autres classes via des liens de généralisation contiennent le plus souvent des attributs dérivés qui sont calculés à partir des attributs ou des collections de la classe parent. Les attributs non dérivés sont les attributs propres de la classe. Ces attributs sont stockés dans le modèle et enregistrés dans le fichier du modèle.
Associations - Les associations sont utilisées pour exprimer les connexions sémantiques entre des classes appelées collections. Dans la feuille de propriétés d'une association, les rôles transportent l'information relative à l'objet d'extrémité de l'association. Dans le métamodèle PowerAMC, ce rôle a le même nom qu'une collection pour l'objet courant. Les objets PowerAMC sont liés à d'autres objets via des collections.
En règle générale, les associations n'ont qu'un seul rôle, ce rôle se trouve à l'opposé de la classe qui représente une collection. Dans l'exemple suivant, Identifier a une collection appelée Attributes :
Lorsque les associations ont deux rôles, les deux collections ne peuvent pas être enregistrées dans le fichier XML, seule la collection ayant un rôle navigable sera enregistrée (voir Format de fichier XML de PowerAMC).
Composition - Expriment une association dans laquelle les enfant vivent et meurent avec les parents. Si le parent est copié, l'enfant l'est également. Par exemple, dans le package PdCommon, diagramme Option Lists, la classe NamingConvention est associée avec la classe BaseModelOptions via trois associations de composition : NameNamingConventions, CodeNamingConventions et NamingConventionsTemplate. Ces associations de composition expriment le fait que la classe NamingConvention n'existerait pas sans la classe BaseModelOptions.
Généralisations - Montrent les liens d'héritage entre une classe plus générale (le plus souvent une classe abstraite) et une classe plus spécifique (le plus souvent une classe instanciable). La classe la plus spécifique hérite des attributs de la classe plus générique, ces attributs étant appelés attributs dérivés.
Commentaires et notes sur les objets - Expliquent le rôle de l'objet dans le métamodèle. Certains détails de mise en oeuvre interne sont également disponibles dans la page
de la feuille de propriétés des classes.