> From: Code for Libraries [mailto:[log in to unmask]] On Behalf Of > Jonathan Rochkind > Sent: Tuesday, April 14, 2009 10:21 AM > To: [log in to unmask] > Subject: Re: [CODE4LIB] resolution and identification (was Re: > [CODE4LIB] registering info: uris?) > > Over in: http://www.w3.org/2001/tag/doc/URNsAndRegistries-50-2006-08- > 17.html > > They suggest: "URI opacity 'Agents making use of URIs SHOULD NOT > attempt to infer properties of the referenced resource.'" > > I understand why that makes sense in theory, but it's entirely > impractical for me, as I discovered with the SuDoc experiment (which > turned out to be a useful experiment at least in understanding my own > requirements). If I get a URI representing (eg) a Sudoc (or an ISSN, > or an LCCN), I need to be able to tell from the URI alone that it IS a > Sudoc, AND I need to be able to extract the actual SuDoc identifier > from it. That completely violates their Opacity requirement, but it's > entirely infeasible to require me to make an individual HTTP request > for every URI I find, to figure out what it IS. Jonathan, you need to take URI opacity in context. The document is correct in suggesting that user agents should not attempt to infer properties of the referenced resource. The Architecture of the Web is also clear on this point and includes an example. Just because a resource URI ends in .html does not mean that HTML will be the representation being returned. The user agent is inferring a property by looking at the end of the URI to see if it ends in .html, e.g., that the Web Document will be returning HTML. If you really want to know for sure you need to dereference it with a HEAD request. Now having said that, URI opacity applies to user agents dealing with *any* URIs that they come across in the wild. They should not try to infer any semantics from the URI itself. However, this doesn't mean that the minter of a URI cannot create a policy decision for a group of URIs under their control that contain semantics. In your example, you made a policy decision about the URIs you were minting for SUDOCs such that the actual SUDOC identifier would appear someplace in the URI. This is perfectly fine and is the basis for REST URIs, but understand you created a specific policy statement for those URIs, and if a user agent is aware of your policy statements about the URIs you mint, then they can infer semantics from the URIs you minted. Does that break URI opacity from a user agents perspective? No. It just means that those user agents who know about your policy can infer semantics from your URIs and those that don't should not infer any semantics because they don't know what the policies are, e.g., you could be returning PDF representations when the URI ends in .html, if that was your policy, and the only way for a user agent to know that is to dereference the URI with either HEAD or GET when they don't know what the policies are. Andy.