Genericity/Variance:
A "resource" is a conceptual entity (a little like a Platonic ideal). When represented electronically, a resource may be of the kind which corresponds to only one possible bit stream representation. An example is the text version of an Internet RFC. That never changes. It will always have the same checksum.
On the other hand, a resource may be generic in that as a concept it is well specified but not so specifically specified that it can only be represented by a single bit stream. In this case, other URIs may exist which identify a resource more specifically. These other URIs identify resources too, and there is a relationship of genericity between the generic and the relatively specific resource.
As an example, successively specific resources might be
Each resource may have a URI. The authority which allocates the URI is the authority which determines to what it refers: Therefore, that authority determines to what extent that resource is generic or specific.
This model is more of an observation of a requirement than an implementation decision. Multilevel genericity clearly exists in all our current life with books and electronic documents. Adoption of this model simply follows from the rule that Web design should not arbitrarily seek to constrain life in general for its own purposes.
When we discuss electronic resources, an interesting fact is that a small number of dimensions of genericity emerge.
| Time | A resource may vary with time. For example, "The Wall Street Journal" varies with time. Each issue is a time-specific resource, which does not change with time. Most home pages on the Web change with time, in a less periodic way. |
| Language | When a document is translated, it is useful to be able to refer to it either in the generic, or to a particular specific translation. |
| Representation | A given resource may have mny ways in which it can be represented on the wire, using different Content-types (in HTTP terms). As an example, an image may be represented in PNG or JFIF format. |
The fact that there are such a small number of dimensions currently apparent sugests that Web software should handle them individually in its interface with the user, even though the architecure should handle them as a single concept."
A typical file has a MIME-type extension (e.g., html), maybe an encoding extension (e.g., gz), and of course a language extension (e.g., en) when we have different language variants of this file.
Examples:
Here some more examples of filenames together with valid and invalid hyperlinks:
| Filename | Valid hyperlink | Invalid hyperlink |
|---|---|---|
| foo.html.en | foo foo.html |
- |
| foo.en.html | foo | foo.html |
| foo.html.en.gz | foo foo.html |
foo.gz foo.html.gz |
| foo.en.html.gz | foo | foo.html foo.html.gz foo.gz |
| foo.gz.html.en | foo foo.gz foo.gz.html |
foo.html |
| foo.html.gz.en | foo foo.html foo.html.gz |
foo.gz |
Looking at the table above you will notice that it is always possible to use the name without any extensions in an hyperlink (e.g., foo). The advantage is that you can hide the actual type of a document rsp. file and can change it later, e.g., from html to shtml or cgi without changing any hyperlink references.
If you want to continue to use a MIME-type in your hyperlinks (e.g. foo.html) the language extension (including an encoding extension if there is one) must be on the right hand side of the MIME-type extension (e.g., foo.html.en)."