As recently as 2002 the IETF was recommending in RFC 3406 that we should use x-
prefixes for URN namespaces we didn't want to register, e.g. urn:x-acme:foobar
. Now that the IETF has deprecated the x-
prefix in RFC 6648, how are we supposed to construct URNs for namespaces we don't intend to register?
As an aside, I note that RFC 6648 specifically mentions URNs: "In almost all application protocols that make use of protocol parameters (including ... URNs ...), the name space is not limited or constrained in any way, so there is no need to assign a block of names for private use or experimental purposes." I find this an odd thing to say, as RFC 3406 claims, "The space of URN namespaces is managed. I.e., not all syntactically correct URN namespaces (per the URN syntax definition) are valid URN namespaces."
So what is best to use for custom but unregistered URN namespaces? Can I just drop the x-
and use, for my example company Acme, a URN such as urn:acme:foobar
?
urn
in the first place? Couldn’t you use a different URI scheme? – Ministryhttp
scheme URLs are confusing to the developers less well trained on the intricacies of resource identification, etc. But it doesn't matter. I just wanna useurn
s. They were made exactly for what I want to do. The IETF says I no longer need to usex-
prefixes and that the "name space is not limited or constrained in any way". So what is recommended? That's the question, and that question would remain relevant and useful even if I later decided not to use URNs in this particular project. – Kendyl