1. The term url abstraction is used in another sense in the openacs docs, as they use it to name the system of hiding the file extension in the url (/bla/message-post instead of /bla/message-post.tcl) This is used in all of openacs and it is quite cool. I'm just mentioning this to prevent (mostly my own) confusion.
2. I think it can't and shouldn't be done in a general way that works for all packages, but rather needs to be implemented in an application specific way for each package, like Tom's example for forums. There's also a running example in bugtracker.
3. Some minor remarks to Tom's example: you can also use [ad_conn path_info] instead of ad_conn urlv. And instead of ns_set put ... there is the handy rp_form_put proc (with which the deletion loop would also be obsolete I think).