From: "Karen Coyle" <[log in to unmask]>
> I'm very uncomfortable with using URL's as identifiers, in general,
> although I know that the practice is wide-spread. But I don't think you
> should put "http://" in front of anything that isn't supposed to go out as
> a URL across the network.
You and me both. But that's not a argument we're going to win, not anytime soon.
The fact that so many identifiers begin with "http" is a big part of the reason for my proposal.
A URL is a special-case URI. You can, by inspection,  determine if a string is a URI (it either conforms to the URI syntax or it doesn't) but you can't, by inspection, determine if a given URI is a URL. So if you put it in the <identifer> element that should be an assertion that it is an identifier, and the consumer of the record upon finding a URI in the <identifier> element should not infer that it is or is not a URL.  If he wants to know how to "locate" the resource, he should look in <location> (where he might find the identical string, and then can infer that that string is also a URL; or might find that the URL is different).
Look at In the SRW protocol we indicate what schema we want for requested records (much like the Z39.50  preferred-record-syntax). If we want MODS records we identify the MODS schema. We have assigned the identifier   and that string is passed in a protocol request to identify the MODS schema. It's just a string. It does you no good to go to that location  -- well, maybe some good, but that's coincidental, in any case it doesn't take you directly to the schema (it "identifies" but doesn't "locate" the MODS schema). We could have just as well called it   and as an identifer  it would have been fine. The reason it's a good identifier is that nobody else (besides LC) can assign a uri beginning with and that's the reason people like identifiers that begin with http, they enable unambiguous identification.
Note also in that table besides the "identifier" column there is a "schema location" column. These all differ from thier respective identifier. They don't need to. For example, we could have assigned the identifier for the MODS schema, but we chose not to (for a number of reasons -- the schema could be in many different places, etc.)  You can think of this as analogous to a namespace identifier (and in fact it is the same string we use for the MODS namespace identifier) which isn't necessarily the same as the schema location.