I have started implementing “cool” URIs against the Alex Catalogue of Electronic Texts.
As outlined in Cool URIs for the Semantic Web, “The best resource identifiers… are designed with simplicity, stability and manageability in mind…” To that end I have taken to creating generic URIs redirecting user-agents to URLs based on content negotiation — 303 URI forwarding. These URIs also provide a means to request specific types of pages. The shapes of these URIs follow, where “key” is a foreign key in my underlying (MyLibrary) database:
- http://infomotions.com/etexts/id/key – generic; redirection based on content negotiation
- http://infomotions.com/etexts/page/key – HTML; the text itself
- http://infomotions.com/etexts/data/key – RDF; data about the text
- http://infomotions.com/etexts/concordance/key – concordance; a means for textual analysis
For example, the following URIs return different versions/interfaces of Henry David Thoreau’s Walden:
This whole thing makes my life easier. No need to remember complicated URLs. All I have to remember is the shape of my URI and the foreign key. Through the process this also makes the URLs easier to type, shorten, distribute, and display.
The downside of this implementation is the need for an always-on intermediary application doing the actual work. The application, implemented as mod_perl module, is called Apache2::Alex::Dereference and available for your perusal. Another downside is the need for better, more robust RDF, but that’s for later.