Graphically, object types are depicted as named ellipses (solid for entity types, and dotted for value
types). As in logic, a predicate is a proposition with object-holes in it. In ORM, a predicate is treated as an
ordered set of one or more roles, each of which is depicted as a box, which may optionally be named. A
fact type is formed by applying a predicate to the object types that play its roles. Fact types in ORM must
be given one or more readings. The arity of a predicate is its number of roles. For discussion purposes, each
fact type may be populated by entries in a sample fact table that includes one column for each role of the
fact type.
The ORM model in Figure 6 includes three object types (Movie, Person and Sex) and five fact types:
Movie is banned; Movie is based on Movie; Movie was directed by Person; Movie was reviewed by Person; Person is of Sex.
Inverse readings are supplied for two associations: Person directed Movie; Person reviewed Movie. One role is
named (“director”). Simple identification schemes may be abbreviated in parentheses. For example, Movie(Nr)
abbreviates the injective (1:1 into) association Movie has MovieNr. For simplicity, we assume that persons in
this domain may be identified by name. In this example, all fact types are unary or binary. We could add
Movie was released in Country in Year as a ternary fact type.