Does the term File Specification, AKA Spec, have a pedigree?

In using absolute_file_name/3 and user:file_search_path/2 (ref) on a regular basis was looking for some official references for File Specification but the most official document I find from Googling is

While VMS is a respectable reference, it is an isolated set of documentation from what I see and not part of a pedigree leading to a more official definition.

I was hoping for something more official or something from Wikipedia that would lead to something more official but there is no specific Wikipedia ( entry.

For the similar Uniform Resource Identifier (URI) there is

Does any one know of an official document for File Specification that applies to computers in general or is this one of those terms that has a fairly well established meaning that it never really needed an official standard?

As far as the ISO Prolog standard is concerned, a file as used by e.g., open/3 is a ground term (AFAIK). Practically every Prolog system implements this as an atom that denotes a file name as is used by the operating system, possibly with some abstraction to improve portability.

SWI-Prolog absolute_file_name/3 finds its origin in Quintus Prolog. It allows specifying search paths and using these as Path(File). In SWI-Prolog, unlike Quintus and most other systems, File in Path(File) can be a term Segment1/Segment2/…

1 Like

Looks SWI-Prolog has an URI library. URIs work slightly
different than file paths, I find for file paths:

?- directory_file_path('foo/', 'bar', X).
X = 'foo/bar'.
?- directory_file_path('foo/too', 'bar', X).
X = 'foo/too/bar'.

And for URIs, interestingly it has the same parameter
order like the JavaScript URI constructor:

?- uri_resolve('bar', 'foo/', X).
X = 'foo/bar'.
?- uri_resolve('bar', 'foo/too', X).
X = 'foo/bar'.

So the result is different. But the resolution of a consult against
a Prolog text can be viewed as uri_resolve/3 when the Prolog
text file path is used, and directory_file_path/3 when the

directory of the Prolog text file path is used. So when using
directory_file_path/3 one would need first file_directory_name/2
on the Prolog text file path. So with the file system API it

is two predicate calls, with the web URI API its only one call.