Each linked resource in the workspace can be specified relative to a path variable.
Each IResource has a dedicated path variable manager, accessible from IResource.getPathVariableManager(). The path variable manager allows reading, creating and changing path variables, along with resolving URIs that may be relative to a path variable, as opposed to be defined as an absolute path.
Currently, each project has a separate list of path variables, so all resources under a given project have path variable managers that contain the same list of path variables, although that could change in the future. Still variables values can be different between two path variable managers of two different resources. For example, the variable "PARENT_LOC" contains the location of the workspace parent of the current resource for which the path variable manager was created.
The default path variable list can be extended through the org.eclipse.core.resources.variablesResolvers extension point.
Because of limitations and backward compatibilities in the legacy IPathVariableManager, the path variable values cannot contain parent path lexical element (".."). Instead, the methods IPathVariableManager.convertToUserEditableFormat and IPathVariableManager.convertFromUserEditableFormat can be used to convert a path that contains the ".." element into an internal format that can be stored in the URI of a variable. The UI automatically converts user provided strings into the internal format and vice versa.