thing-described-by.org
Below: Background
| How This Site Works
| Delegation of Authority | How to Mint a URI | Optimizing | Shortening
Your
URIs | Usage
Policy
Thing-described-by.org is a 303-redirect service. It provides a
convenient mechanism for minting dereferenceable
http URIs for things that are not necessarily web resources, such as
people, cars or concepts in an ontology.
Background
Name Versus Location.
HTTP URIs -- URIs that begin with "http://" -- are increasingly used as
globally unambiguous names of things other than web pages.
For example, you could make up a URI to act as a globally unique name
for yourself, or your car,
or a particular concept in an ontology. The nice thing
about using HTTP URIs for this purpose is that the URI can double as a
document locator, so you can easily place authoritative data about that
URI where others will know to find it ("follow your nose"). For
example, if you mint
an HTTP URI to name a concept in an ontology, it is helpful to
provide a document, accessible via that URI, that tells others what
concept the URI is intended
to name.
Resource Ambiguity.
However, using the same URI both as the name of the concept and the
location of a web page describing that concept creates an ambiguity:
Does the URI name the concept or the web page describing the
concept? To avoid such ambiguity, the W3C TAG
recommends that the URI describing the concept should forward (using an HTTP 303
See Other status code) to a related URI for retrieving the
descriptive document.
URI Pairs. This means
that for each URI that you wish to use to name a concept (or other
non-information resource), you need another URI for the related
descriptive document. Thing-described-by.org makes it easy to
mint such URI pairs: after minting a URI, u, for your descriptive document,
you can create another URI for the thing your descriptive document
describes, merely by prepending "http://thing-described-by.org/?" to
your document URI. If the resulting URI is dereferenced in a
browser, thing-described-by.org will automatically redirect the request
to your document URI, per the W3C
TAG's
guidance. This 303-redirect indicates
that the URI http://thing-described-by.org/?u does not necessarily name an information resource.
Many-to-one URI mappings.
Because the resulting concept URI is derived directly from the document
URI, this results in a one-to-one mapping between concept URIs and
document URIs. However, fragment identifiers can be used in
conjunction with thing-described-by.org to cause multiple document URIs
(having the same absolute URI part but different fragment identifiers)
to be based on the same physical document. This causes multiple
concept URIs to map one-to-one to document URIs (with fragment
identifiers), which map many-to-one to a single physical document when
the document URIs are dereferenced, as illustrated below (abbreviating
thing-described-by.org as t-d-b.org):
http://t-d-b.org/?http://example.org#f1 -->
http://example.org#f1 \
+-->
http://example.org
http://t-d-b.org/?http://example.org#f2 --> http://example.org#f2 /
How This Site Works
The web server for thing-described-by.org is configured as
follows. For any
absolute URI u, any HTTP GET request on
http://thing-described-by.org/?u
will return an HTTP 303
See Other redirection to u.
Thing-described-by.org
does this without knowing anything about u. In particular, u does not need to be registered
with thing-described-by.org in advance.
If you are curious about the implementation details, or if you want to
implement your own 303-redirect service, you can look at the files that
implement this site.
Delegation of Authority
The following delegation of authority applies to all current and future
times:
- If u
is any absolute URI,
then authority for defining what resource http://thing-described-by.org/?u names is hereby delegated to the owner of u as follows:
- If dereferencing
u yields content that
explicitly specifies what resource http://thing-described-by.org/?u
names, then http://thing-described-by.org/?u
names that resource.
- If dereferencing
u yields content that
does not explicitly specify
what resource http://thing-described-by.org/?u
names, then http://thing-described-by.org/?u
names the primary subject of that content.
- If u#f
is any URI having absolute URI u and fragment identifier f,
then authority for defining what resource http://thing-described-by.org/?u#f
names is hereby delegated to the owner of u#f
as follows:
- If dereferencing
u yields content that
explicitly specifies what resource http://thing-described-by.org/?u#f
names, then http://thing-described-by.org/?u#f
names that resource.
- If dereferencing
u yields content that
does not explicitly specify
what resource http://thing-described-by.org/?u#f
names, then http://thing-described-by.org/?u#f
names the primary subject of the content specified by u#f.
How to Mint a URI Using
thing-described-by.org
Step 1: Allocate a document URI,
u, where you plan to place
authoritative information about the thing you wish to name. u must be an absolute URI.
Step 2: Prepend
"http://thing-described-by.org/?" to your document URI to create
a new URI, http://thing-described-by.org/?u , for the thing you wish to name.
Step 3: Place authoritative
information at your document URI, u, describing the meaning of your
new URI, http://thing-described-by.org/?u
. This information may be in any format that you find useful,
such as RDF or HTML.
Example
I own the domain dbooth.org and I want to create a URI as a globally
unique name for myself, David Booth.
Step 1: Create a web page on my site describing me (David Booth):
http://dbooth.org/2005/dbooth/
Step 2: Prepend "http://thing-described-by.org/?" to the URI from step
1, to create a new URI that will be used as a globally unique name for
me:
http://thing-described-by.org/?http://dbooth.org/2005/dbooth/
Step 3: In my web page from step 1, provide authoritative information
about the meaning of
the URI created in step 2 that acts as a globally unique name for
me. For
example, if the page is written in English prose, it might say
something
like:
"The
URI http://thing-described-by.org/?http://dbooth.org/2005/dbooth/
hereby
acts as a globally unique name for the natural person named David Booth
with email address dbooth@hp.com (as of 1-Jan-2005)."
Optimizing: Avoiding Unnecessary HTTP
Requests
Software that is seeking authoritative information about a URI of the
form http://thing-described-by.org/?u may be tempted to send an HTTP
GET request to thing-described-by.org.
However,
since such a request will always be redirected to u, (using HTTP 303
See Other),
the request is unnecessary and should be avoided. Software
authors are
therefore encouraged to optimize away such requests and perform the
HTTP GET directly on u.
Shortening Your URIs
If thing-described-by.org
makes your URIs too long, you can use t-d-b.org instead.
Usage Policy
This site may be used by anyone for the purpose described above, though
users are encouraged to perform the optimization
described above. It is currently owned and maintained by David
Booth, though I would be happy to transfer ownership and
maintenance to any suitable organization.
25-Apr-2010: Corrected a syntax error in the URI prefix.
Previous
instructions said to write "http://thing-described-by.org?..."
(note
the missing "/" before the "?") instead of the correct "http://thing-described-by.org/?...".
The
missing "/" would have caused an empty abs_path
(RFC 2398) or
path-absolute (RFC 3986), which is syntactically incorrect when a query
string is present. Thanks to Eric Hellman for kindly
informing me of this error.
5-Jun-2008: Changed to using redirect.pl
for doing the 303 redirects, because the apache rewriting was buggy.
Also added a way to view the files that
implement this site, fixed invalid HTML, added charset declaration and
made minor editorial changes.
30-Jul-2007: Corrected a typo.
24-Apr-2007: Expanded delegation of authority to cover URIs with
fragment identifiers, and implicit naming.
11-Apr-2007: Updated.
July 2005: Initial version.