I thought some more about #3.1... Trying to formalize it hit a few snags.
Here's what I came up with:
- All namespaces are URIs.
- We define a new URI scheme (call it 'xyzzy' for the moment).
- It is made out of two parts: language and in-language package.
For !scheme:...|type we use the namespace URI 'scheme:...'.
For !:lang:package|type we use the namespace URI 'xyzzy:lang:package'
For 'word(.word)*|type we use the namespace 'xyzzy:any:word(.word)*'
For !type we use the namespace URI 'xyzzy:any:org.yaml'.
So all the following are the same:
As you can see, all the above does is give specific defaults to a single,
consistent URI based scheme. I don't see how one can avoid the leading ':'
for !:lang:package|type without getting into ambiguities.
Now, as to the name... We could use 'yaml:'. If we use 'yaml:' we are no
obligation to cater to "universal" needs. However I see the benefit of
having a universal name for each and every data type in the world, which
works for all languages etc. 'data:' would have been a good name but its
taken. However - surprise - 'type:' is available! That's rather audacious
but hey, if we want it to be universally useful, give it the right name -
At any rate, if we go for a "universal" name, we'll have to be careful
defining it. For example it should be made very clear that
"!type:any:tld.domain" must be used for data types usable in "any"
I like the way this has shaped out... This definitely gets my vote.