After a good XDI Core editing session with Joseph tonight, we made the executive decision to adopt the dictionary definition syntax proposal discussed briefly on the last few telecons—namely, to use + syntax instead of $( ) syntax. I have updated the Graph Model Structure wiki page accordingly:
For the record, the reasons are:
- $( ) syntax was the only vestige of our former syntax that depended heavily on cross-references.
- I$( ) syntax is also the only syntax that required a prefix before a bracketing symbol (which makes it particularly complicated); all of the new bracketing symbol syntaxes we adopted do not use a prefix context symbol.
- + syntax is much simpler and can accomplish everything that $( ) syntax could.
- Leaving $( ) syntax undefined means it is available to define once we get to the XDI query language (for which I suspect it might be needed).
The rule with using + syntax for dictionary defintions is that the + symbol is BY ITSELF the dictionary definition context. Thus to define any entity or attribute, just put it in that context. Examples:
- Entity singleton: +passport Definition: ++passport
- Attribute singleton: <+tel> Definition: +<+tel>
XDI authorities can create their own personal, legal, or general dictionary namespaces spaces by prefixing their own XDI addresses with +. So, for example, if Neustar had its own definition of +<+tel>, the definition would be (using Neustar's cloud name):
+@neustar+<+tel>
Then, once Neustar had defined this, I could use an instance of a Neustar telephone number like this:
=drummond+@neustar<+tel>
Any thoughts before Joseph and I write this into XDI Core 1.0 WD01?
=Drummond