On XDI


Drummond Reed was nice enough to give me a one-on-one tutorial on XDI (the XRI Data Interchange activity at OASIS) during Digital Identity World this week.

If you have seen any fragments of the documents and identifiers that XDI uses, I think it’s a safe bet that you’ve probably understood nothing, and moved on. (Certainly, that would be an accurate description of myself so far.) However, now that I was indoctrinated ;-) by Drummond, I suddenly realize that there is method to the madness, and in fact a rather good method with unique insights and capabilities. We can all learn a bit it seems … let me share what I think I learned. (corrections appreciated, of course)

Drummond is probably going to kill me for this let me live this time he says ;-), but here’s my top-level summary of XDI:

  • All the world’s data can be represented as a graph, which consists of nodes and directed edges that connect the nodes. [Note: that’s the same basic model that RDF uses, that UML uses, and that we use in NetMesh InfoGrid]
  • Each node has a unique identifier, which may be an XRI or a URI. [If you don’t know what XRIs are or what value they bring, just think "URI" and you’ll miss very little from your vantage point.][Again, the same basic model that we use in NetMesh InfoGrid, except that our edges also have separate identifiers, while XDI uses a construction rule for the identifiers, but that does not matter very much.]
  • The graph of nodes and edges may be distributed all over the internet, and co-authored, without any constraints or central control, by anybody. [Generally a good assumption.]
  • To traverse the graph, even across servers, you start with some node, and define what we call a "TraversalSpecification" at NetMesh: a path description that can be applied to a node, such as "look for an edge of type X and return the resulting set of nodes", or "look for a sequence of edges of types X, Y and Z and return the set of nodes that also are green". It’s rather similar to an XPath expression, although of course there is a difference in whether it applies to a tree (as XML defines) or a directed graph (as in XDI, RDF, InfoGrid or LID).
  • Here comes XDI’s key innovation: each node, and the edges originating from that node, has an associated authority that makes the assertion that a certain node exists, and how it relates to other nodes via edges. So you can say not only "Jim is the father of Jill,", but you can say "in the opinion of Joe, Jim is the father of Jill", which is a set of semantics that so far has been missing from too many distributed information systems, and in particular from too many identity systems. This is absolutely needed!
  • I’m still not convinced at all by the particular file formats and identifier syntaxes that the XRI and XDI communities are using. They seem unnecessarily unusual and different. But, as I learned this week, the underlying concepts are sound and valuable, and should not be ignored just because the surface looks a bit like Mars ;-)

Go XDI, you have a valuable contribution to make!