Information is associated with a frame via slots. A slot is a mapping from a frame to a set of values. A slot is also known by a name. For example, the fact that Fred's favorite foods are potato chips and ice cream might be represented by a slot called favorite-food on the frame called fred, where that slot has the values potato-chips and ice-cream. Slots and frames share a common namespace. That is, a symbol might name both a frame and a slot, both of which denote the same entity in the world. This is because in some FRSs, slots are reified as binary relations and denoted by frames of the same name. When this is the case, each application of the slot to a frame is a specialization of the same binary relation. For example, the symbol favorite-food might be the name of a frame which stands for all of the mappings between entities like Fred and their favorite foods. However, in GFP, slots may be used polymorphically; the frame/slot relationship is described by both the slot name and the name of the frame to which the slot has been applied. There is no assumption that a slot mapping a particular frame to some values has any relationship to a slot of the same name applied to a different frame. However, good software engineering practice suggests that slots of the same name should be used to represent at least analogous relationships when applied to two similar frames. We will see that this convention is enforced by some FRSs when we describe inherited slots.
A slot value can be any Lisp object (symbol, list, number, string, etc). When the value of a slot on a frame is a symbol there is no requirement that this symbol name a frame, although this is a conventional interpretation in some applications.
Slots can be viewed as binary relations. However, in many FRSs there is no facility for supporting relations of higher arity. To accommodate these systems, the Generic Frame Protocol imposes no format for expressing higher-arity predicates.