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: Re: Agenda: XDI TC Telecon Thursday 1-2:30PM PT 2011-03-24


First, by the term "resolution", I just mean traversing the XDI graph. I will try to stick with "traverse" from now on.

Second, let me describe the use case that the primary/secondary address proposal solves. Note that I avoided using the word "synonym" there and just called them primary and secondary addresses since that difference turns out to be crucial. (See my note on this below.)

The use case is that you have two nodes in the graph with two XRIs, and you want to say that each is a synonym for the other. Let's say the first one is =abc and the second is =!1234.

If each of them is a synonym for the other -- so they are completely logically equivalent -- then XDI software has no way of knowing which of the two addresses should be used to continue traversing the graph below either of these context nodes. For example, say you have =abc+age. If both =abc and =!1234 are synonyms for each other, i.e.


Then when XDI software sees the address =abc+age, it should be equivalent to =!1234+age.

So the problem is: which is it? Which of these two addresses should the XDI software expect to find? Both of them? Does that means Is every subcontext and/or property of every node in the graph that has a synonym logically equivalent to having that same subcontext and /orproperty on every other synonymous node in the graph?

That problem proved to be intractable in XRI 2.0 resolution -- it was very difficult for software to build such a globally redundant graph and keep it logically consistent.

The solution is canonical addressing. In canonical addressing, every context node in the graph has exactly one primary address, and zero-or-more secondary addresses. The path from a secondary address to a primary address is expressed using a relational arc with the XRI $ (mnemonic: primary = 1 = $). The path from a primary address to a secondary address is expressed using a relational arc with the XRI $$ (mnemonic: secondary = 2 = $$).

If you apply this rule to our use case, the relationship of =abc and =!1234 is now:

=abc/$/=!1234   <-- =abc has the primary address =!1234
=!1234/$$/=abc  <-- =!1234 has a secondary address =abc

Now, if XDI software sees the XDI address =abc+age, it can traverse the graph to the =abc node, see the $ relational arc (of which by definition there can be only one), and know that it MUST follow that arc before continuing traversal of any subsegment or segment beyond =abc.

So now the answer to "where is =abc+age?" is, "since =abc maps to =!1234, =abc+age maps to =!1234+age, and =!1234+age is the only place you'll find that info in the graph".

Lastly, a note about terminology. Because of the directionality of the mapping between primary and secondary addresses, I believe:
  1. It is inaccurate to continue to use the term "synonym" to describe either a primary address or a secondary address.
  2. It is no longer exactly the same semantics as rdf:sameAs.
The reasons in both cases is that the term "synonym" (and rdf:sameAs) implied full logical equivalence -- essentially a merger of the graph trees for both nodes. This is a beautiful concept, but very hard to implement (as RDF folks have found out).

So my recommendation is that we simply drop the term "synonym" at this point and only use the terms "primary address" and "secondary address" per the rules defined above.

Hope this helps,


On Mon, Mar 28, 2011 at 1:19 PM, Giovanni Bartolomeo <giovanni.bartolomeo@uniroma2.it> wrote:
Dear Drummond and All,

I have one question about the primary/secondary synonym mechanism you introduced.

You said: "The main problem it solves is adding directionality and precedence to synonyms [...] to resolve the question of where further resolution of the XDI graph should continue after a synonym is encountered".

But, as we stated that two synonyms point at the same node, once we have the synonym, then we have the node. If the synonym is an XRI cross ref to an http address, for example, then the http resolution will be used, and the node will be found. Same as for any other resolution protocol different than http which that XRI could be bound to.

So why do we need the primary/secondary synonym mechanism? And what do you mean exactly by "further resolution"?

Best Regards,

Def. Quota "Drummond Reed" <drummond.reed@xdi.org>:

Following are the minutes of the unofficial telecon of the XDI TC at:

Date:  Thursday, 24 March 2011 USA
Time:  1:00PM - 2:30PM Pacific Time (21:00-22:30 UTC)


Bill Barnhill
Joseph Boyle
Michael Schwartz
Drummond Reed
Giovanni Bartolomeo



Drummond upload a new version with two key revisions:

  - A new primary/secondary addressing pattern to solve the key issue with
  the synonym pattern that we discussed last week.

  - One key revision to the versioning pattern suggested by Bill.

Drummond explained the primary/secondary address proposal. The main problem
it solves is adding directionality and precedence to synonyms. By using
relational arcs identified with $ to identify the relation of a secondary
address to a primary address, we provide the semantics necessary to resolve
the question of where further resolution of the XDI graph should continue
after a synonym is encountered. The rule is:

  - If a context node has a $ relational arc (and it can have exactly zero
  or one $ arc), then it is a secondary address, and resolution should
  continue at the object of that arc, which is a primary address.

  - If a context node has one or more $$ relational arcs, they are
  secondary addresses for the context node, and resolution of the graph should
  continue from the original primary address.

Bill said we should add a comment about the meaning of the two top graph
segments on the "Primary and Secondary Addresses page" that specifies that
these segments are  "addresses of the root context of the graph".

# DRUMMOND will make this revision.

We also went over the revision to the versioning pattern. Drummond pointed
out that the pattern, which is simply to treat the current version in the
version tree as a reference (instead of making a duplicate copy of the
data), is the same across all the versioning examples.

Mike asked about and we went over the differences between the simple
property graph, the complex property graph, the simple subject graph, and
the complex subject graph.


Mike reported that OpenXDI is proceeding full steam. Gluu has just hired
another key programmer to work on the project who will be a dedicated
resource. OpenXDI calls will continue to be held on Fridays at 10AM PT.

The goal of OpenXDI is to produce both client code and a server, including a
way to quickly set up a cloud server. The project will also support XRI

The server will be in Java, and the client will use the Python API. Mike
would like to build the equivalent of LDAP search.

He has also commissioned a logo for the short name of the project, "OX".

Bill gave an update that he is finalizing plans on what he will be doing. He
has been looking over the Locker Project, Jeremie Miller's new open source
effort to build a personal data locker. Currently it has connectors and
apps. Apps will be coming from third-party developers. Connectors are ways
to be tapping personal data and bringing them into the store. Connectors
currently exist for most social networks.

Bill said the Locker Project has its own file system.

Joseph is also playing with the Locker Project code. He and Bill discussed
creating an XDI app for Locker that could access and manipulate the Locker
data as an XDI graph.

We discussed the philosophy of first pulling everything into JSON and then
subsequently worrying about semantics. That may be in fact be nicely
complementary to XDI since we are tackling the latter problem.


We need to produce a collection of XDI  statements representing each of the
graphs in the XDI Graph Patterns collection. This needs to happen soon so it
can be pulled into the XDI Graph Model document.

Drummond asked for volunteers to help him with this. Bill volunteered since
he's doing it anyway. Mike volunteered one of the OX developers.

We also discussed whether a flat list of XDI graph statements might not
itself be a very simple and efficient XDI serialization format (e.g., in
comparision to the JSON format) because it so easy to compress, and it is
already "pre-indexed". We agreed to discuss this further after we have
produced the XDI statement lists for each of the XDI Graph Pattern examples.


We agreed to discuss this pattern next week.


The next call is next week at the regular time.


Each of these is a candidate for the agenda for future calls.


Since versioning, as one example, involves multiple transactions that must
be commited as a group, we will need to address transactional integrity.
Specifically, we need to define how this will be handled at the protocol
level, vs. the implementation level.


Discuss the following wiki page originally posted by Giovanni:



Mike would like an example of the PDX dictionary as soon as we can do it.


Close on whether we need an additional $ word that is the equivalent
of Higgins Personal Data Model (PDM)  semantics   of h:correlation,
which is not as strong as $is.



Continue previous discussion about the use of standard RDF URIs in XDI:


Invito da parte dell'Ateneo:
Il tuo futuro e quello della Ricerca Scientifica hanno bisogno del
tuo aiuto. Dona il  5 x mille all'Universita' di Roma Tor Vergata
codice fiscale: 80213750583 http://5x1000.uniroma2.it

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