A root name is an identifier for a particular package. Software should have a root name for each of it's packages. A root name is made of four parts:
The domain name. This is comparable to XML or C++ namespaces.
The package name.
The software's full version number. This is optional.
The package number. This indicates changes in the package , not the software. For example, there's a bug in the specfile, and it was fixed, but the software did not change, then increase this number. This is like RPM's Release number. As soon as the version of the software changes, this is reset to zero, because the package spec should be considered to be a part of the software itself.
The domain name and package name are separated by a slash. The package name, software version number and package number are separated by a colon. The package number is optional, if it isn't present, a value of zero is assumed. The software version may be optional in some contexts. If it's missing, we say it's an "unversioned rootname".
For example, root names for GTK+ 2.0.1 can look like:
the main GTK+ package
development headers for GTK+ 2.0.1
devhelp plugin for the GTK+ 2.0.1 documentation
or if the package was improved:
@gtk.org/gtk:2.0.1:1