The Core package is the most fundamental of the subpackages that compose the UML Foundation package. It defines the basic abstract and concrete metamodel constructs needed for the development of object models. Abstract constructs are not instantiable and are commonly used to reify key constructs, share structure, and organize the UML metamodel. Concrete metamodel constructs are instantiable and reflect the modeling constructs used by object modelers (cf. metamodelers). Abstract constructs defined in the Core include {@link com.idsscheer.aris.common.uml.metamodel.foundation.core.IUmlModelElement ModelElement}, {@link com.idsscheer.aris.common.uml.metamodel.foundation.core.IUmlGeneralizableElement GeneralizableElement}, and {@link com.idsscheer.aris.common.uml.metamodel.foundation.core.IUmlClassifier Classifier}. Concrete constructs specified in the Core include {@link com.idsscheer.aris.common.uml.metamodel.foundation.core.IUmlClass Class}, {@link com.idsscheer.aris.common.uml.metamodel.foundation.core.IUmlAttribute Attribute}, {@link com.idsscheer.aris.common.uml.metamodel.foundation.core.IUmlOperation Operation}, and {@link com.idsscheer.aris.common.uml.metamodel.foundation.core.IUmlAssociation Association}.

The Core package specifies the core constructs required for a basic metamodel and defines an architectural backbone ('skeleton') for attaching additional language constructs such as metaclasses, metaassociations, and metaattributes. Although the Core package contains sufficient semantics to define the remainder of UML, it is not the UML meta-metamodel. It is the underlying base for the Foundation package, which in turn serves as the infrastructure for the rest of language. In other packages, the Core is extended by adding metaclasses to the backbone using generalizations and associations.