Even this does not fully identify all the many thousands of John Smiths. An individual user can use their own namespace to say "my friend John Smith": but what if they know two?
They could say [John Smith (London)]? and [John Smith (New York)]?, but what if one moves? Full names can help: [John Maxwell Smith]? but even these are no use when two people have exactly the same name.
Solved the issue of disambiguation and literal verses object reference in one hit!
So far I can see 3 levels of ambiguity:
|XML||Words+Numbers or Numbers||Jane573461532|
|Database||Words+Numbers or Numbers||4732032845839|
Take the triple: person / name / Jane
When entered by the user they get asked: when you said "Jane" did you mean:
In each case of 1 to 3 Jane is referring to a different object but has the same display name.
If the user chooses 4 that means that it's a literal because Jane makes no references to any other items.
There should be options for using quotes to denote literal - makes no reference to any other items. But that should be user definable in their Preference area.