# Fully qualified name

In computer programming, a fully qualified name is an unambiguous name that specifies which object, function, or variable a call refers to without regard to the context of the call.[citation needed] In a hierarchical structure, a name is fully qualified when it "is complete in the sense that it includes (a) all names in the hierarchic sequence above the given element and (b) the name of the given element itself."[1]

## Programming

Fully qualified names explicitly refer to namespaces that would otherwise be implicit because of the scope of the call.[2] While always done to eliminate ambiguity, this can mean different things dependent on context.

Commonly encountered applications of the notion have been given their own names, such as the fully qualified domain name and the fully qualified file name.

### Examples

To distinguish a fully qualified name from a regular name, C++, Tcl, Perl and Ruby use two colons (::), and Java uses dots (.), as does Visual Basic .NET.[3] and C#.[4] In Java, ActionScript,[5] and other object-oriented languages the use of the dot is known as "dot syntax".[6] Other examples include:

• As an example of a relational database, in Microsoft SQL Server the fully qualified name of an object is the one that specifies all four parts: `server_name.[database_name].[schema_name].object_name`.[7]

• In Perl, a fully qualified scalar (`\$scalar`) that is in the package `package2` would be referred to as `\$package2::scalar`[8]

• In Ruby, the fully qualified name of a class is the name of such class with all its parent modules, as Vehicles::Cars::Factory would be the fully qualified name of Factory class within Cars module within Vehicles module.

• In COBOL, a fully qualified data item name can be created by suffixing a potentially ambiguous identifier with an `IN` (or `OF`) phrase. For example, multiple data item records might contain a member item named `ACCOUNT-ID`, so specifying `ACCOUNT-ID IN CUSTOMER` serves to disambiguate a specific `ACCOUNT-ID` data item, specifically, the one that is a member of the parent `CUSTOMER` data item. Multiple clauses may be necessary to fully disambiguate a given identifier, for example, `ACCOUNT-ID IN CUSTOMER IN LAST-TRANSACTION`. This syntax is equivalent to the "dotted" notation employed in many object-oriented programming languages, but with the identifiers specified in reverse order.

## Filenames and paths

The term fully qualified file name means a file on a computer whose exact name is completely specified such that it is unambiguous and cannot be mistaken for any other file on that computer system.[9] It is somewhat equivalent on the Internet to a URL specifying the full name of the computer and the entire name of a particular document as a file. The alternative is an unqualified file name or a partially qualified file name.

• On Unix-style systems, DOS, and Microsoft Windows, the name "sample" refers to a file in the current directory named "sample". If the current directory is changed, then the file referred to by the name "sample" is different. If you start the filename with "/" indicating the root directory as in "/Users/Name/sample", then on Unix this is a fully qualified file name. So, for example, instead of referring to `./foo/bar/baz.sh` in `/home/user/quz`, which uses a relative pathname, the fully qualified name would be `/home/user/quz/foo/bar/baz.sh`.[10] In DOS, the name is still relative to the root directory of the current disk, so to get a fully qualified file name, the file name must be prefixed with the drive letter and a colon, as in "C:\Users\Name\sample", where "C:" specifies the "C" drive.
• Also on the above systems, some programs such as the command-line shell will search a path for a file. Inserting a leading (back)slash, as in "./name", will stop the searching of the path. This is a partially qualified name, but not a fully qualified name as it still depends on the current directory. A fully qualified name, because it contains (back)slashes, will always stop a path search.
• On the mainframe operating system MUSIC/SP, if one asks for the file name "X", one is making an unqualified reference either to the file X in the user's library, or to the file X in the common library if the user does not have a file named X and one does exist in the common library. If, however, one were to refer to "*COM:X" one is using a fully qualified file name reference to the file X in the common library even if they have a different file named X in their library. Similarly, a reference to "*USR:X" would mean the file in their own library, and "MA45:X" would be a fully qualified file name referring to the specific file X in the library of user MA45.
• On the RSTS/E operating system on the PDP-11 minicomputer, specifying a file "X.X" would refer to a file in one's own directory. Referring to "\$X.X" would be referring to the file "[1,2]X.X" but to fully qualify the file name, one would have to indicate the device, so "SY:[46,145]MYFILE.TXT", "SY:\$X.X", or "SY:[1,2]X.X" (the last two examples meaning the same thing) would be a fully qualified file name under RSTS/E.
• On the UNIVAC Series 90 mainframe operating system VS/9, specifying a file "X" could mean either the file X in the account of that user, or could mean the file X in the library of the system manager, \$TSOS. However, specifying "\$S0103.X" would be a fully qualified file name.
• This term can also include the case where one prefixes a fully qualified file name with a specific computer name as a prefix to a file name (where the particular system permits referencing a file on another system), so long as the exact name is unambiguous.

### Path names

Fully qualified path name (FQPN) is the full path of a resource, directory or file, stored in a computer. It is composed by the full path to the resource and its syntax depends on the operating system. In Unix-like operating systems it is represented in the following form: `/root/path-to/file[OR]directory`, while in DOS and Microsoft Windows it is represented in the following form: `[Drive]:\path-to\file.ext[OR]directory`. FQPN is also used in Networking and takes the following form: `\root\FQDN\path-to\file.ext[OR]directory`, where `/root/` is the root directory, the first or top-most directory in a hierarchy, and, in this case, the rooted tree; `FQDN` is the fully qualified domain name or node. It is also used in bootstrapping, computer programming and in computer science referencing.

## References

1. ^ Weik, Martin H. (2000). Computer Science and Communications Dictionary. Volume 1. Springer. p. 662. ISBN 978-0-7923-8425-0.
2. ^ Hejlsberg, Anders; Torgersen, Mads; Wiltamuth, Scott (29 October 2010). The C# Programming Language (Covering C# 4.0). Addison-Wesley Professional. p. 190. ISBN 978-0-13-248172-4. Retrieved 28 October 2011.
3. ^ Vick, Paul (2004). The Visual Basic .NET programming language. Addison-Wesley Professional. p. 160. ISBN 978-0-321-16951-8.
4. ^ Mayo, Joe. ": C# Tutorial Lesson 06 - Namespaces". C# Station. Archived from the original on 2015-01-06. Retrieved 2011-10-27.
5. ^ "ActionScript 3 fundamentals: Packages". Adobe Systems Incorporated. Retrieved 2011-10-27.
6. ^ "Object Oriented Programming - JavaScript Programming Fundamentals - DHTML". Lanoie.com. Retrieved 2011-10-27.
7. ^ "Using Identifiers As Object Names". msdn.microsoft.com. Retrieved 2011-10-27.
8. ^ "mod_perl: Perl Reference". perl.apache.org. Retrieved 2011-10-23.
9. ^ "Naming Files, Paths, and Namespaces". msdn.microsoft.com. Retrieved 2017-06-16.
10. ^ Kochan, Stephen G.; Wood, Patrick H. (2003). UNIX Shell programming. Sams Publishing. p. 11. ISBN 978-0-672-32490-1. Retrieved 28 October 2011.
11. ^ Lowe, Doug (8 February 2011). Networking For Dummies. For Dummies. p. 80. ISBN 978-1-118-05100-9. Retrieved 28 October 2011.