OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

xdi message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: XDI addressing across nested contexts: a breakthrough


In working on some documentation for the upcoming XDI Retreat, I had a realization about $has$a statements that I think can help bring even more clarity to their definition.

We have said that the XDI statement +a/$has$a/+b, which we have defined as also be expressed as +a+b, represents the set of all nodes that are objects of the +a/+b relation. In other words, +a/+b is the relation that defines the set, and +a+b identifies the set of all members who have that relation.

What I realized is that from a graphing perspective, this simply means that +b is a subject inside the context +a.

When I say, "the context +a", what I mean is that every XDI subject, in addition to being INSIDE a context, can also be the root of its own context (every XDI context is an unique XRI addressing space). So if +a identifies the root of a new context nested inside its parent context, then +a+b identifies a subject +b inside that nested context.

To me this was a revelation because I always considered multi-subsegment XRIs to be addresses within a single context. In other words, +a, +a+b, and +a+b+c can all be addresses of XDI subjects within the same context. However now I'm realizing that multi-subsegment XRIs are actually XDI addresses that cross a nested XDI context!

This works across any number of nested contexts. For example, if +a+b is the address of the node +b inside the +a context, then +a+b+c is the address of the node +c inside the +b context inside the +a context, and so on.

This is very important, because it means that +a/$has$a/+b is not just equivalent to +a+b, but also equivalent to +a/+b//$ (in the old cross-context addressing syntax) and +a/+b/($) (in the proposed new cross-context addressing syntax, where nested contexts are expressed using cross-references -- a topic we have not yet discussed in detail, but of which I have become a very ardent advocate).

$ is the unique subject within a context that identifies the context itself. So, using this nested-context-as-cross-reference syntax:

+a+b <==> +a/+b/($)
+a+b+c <==> +a/+b/(+c)
+a+b+c+d <==> +a/+b/(+c/+d/($))
+a+b+c+d+e <==> +a/+b/(+c/+d/(+e))

and so on.

It works the other way around, too: it means any XDI address that crosses nested contexts can be expressed as a multi-subsegment XRI. So if =drummond has a predicate +friend whose object is a nested context, and =markus is a subject in that nested context, then this can be expressed as EITHER:

=drummond/+friend/(=markus)
OR
=drummond+friend=markus

Note that =drummond/+friend/=markus (i.e., where =markus is NOT in a nested context) can NOT be expressed as =drummond+friend=markus, because it does not identify =markus as a subject within the context of =drummond+friend, but only that =markus as an object of the predicate +friend.

I don't know about anyone else, but for me this dramatically simplifies XDI graph structure and addressing, and makes the semantics of $has$a much clearer.

=Drummond


[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]