Up Previous Next Title Page Index Contents

1.1.1 GOPPRR concepts

GOPPRR (pronounced gop-ruh) is an acronym from the words Graph-Object-Property-Port-Role-Relationship. Each of these is called a metatype. The GOPPRR metatypes may be described as follows:


A graph is a collection of objects, relationships, roles, and bindings of these to show which objects a relationship connects via which roles. A graph also maintains information about which graphs its elements explode too. Examples of graphs are WatchApplication and UML Class Diagram.


An object is an element that can be placed on its own in a graph. Examples of objects are a Button, a State, and an Action that belong to a WatchApplication or Class and Object that belong to an UML Class Diagram. All instances of objects support reuse functionality: an existing object can be reused in other graphs by using the Add Existing function.


A relationship is an explicit connection between two or more objects. Relationships attach to objects via roles. An example of a relationship is a Transition that belongs to a WatchApplication or an Inheritance and an Association that can be found from UML Class Diagram.


A role specifies how an object participates in a relationship. Examples for a Transition relationship in WatchApplication are the roles From and To, which specify how the objects at either end of the Transition participate in the relationship. Similarly, in Inheritance relationships there are two kinds of roles: Ancestors and Descendants.


A port is an optional specification of a specific part of an object to which a role can connect. Normally, roles connect directly to objects, and the semantics of the connection are provided by the role type. If you want a given role type to be able to connect to different places on an object with different semantics, you can add ports to the object’s symbol. For example, an Amplifier object might have a port for analog input, a port for digital input, and an analog output port. Roles connecting to each of these will have different semantics. Ports are defined for an object type, and all instances share those same ports.


A property is a describing or qualifying characteristic associated with the other types, such as a name, an identifier or a description.

GOPPRR for types and instances

The GOPPRR metatypes are applied on both the type and the instance level, e.g. a graph type could be WatchApplication, and an instance of that would be a particular WatchApplication, e.g. ‘Stopwatch’. Graph types contain object types, whereas graphs contain objects.

Concepts and representations

On the instance level, each of the GOPPRR concepts (apart from property) can have multiple representations, even in different representational paradigms (i.e. diagram, matrix, table). For more information about representation independence, please refer to ‘MetaEdit+ User’s Guide’ Section 6.2.2.

Up Previous Next Title Page Index Contents