What is a name?
A name is a sequence of name components. The sequence represents the path from the naming context to a named object. That is, since a naming context can be named in another naming context, the name can have multiple components. Each component identifies another naming context. When a client resolves a name and at a naming context, the naming context resolves the first name component to a naming context and passes the remaining part of the name to it. Finally, when there are no more name components to resolve, the resulting object reference is returned.
A name component is a structure with two fields: an identifier and a kind. Both fields are strings.