Data Sharing With Alice And Bob
Alice has Azigo and a gmail account wherein at least her friend Bob is listed. Bob has not got Azigo installed.
Open Google Contacts
As shown in figure 1, Alice opens a Google Contacts context, providing her gmail username/password credentials.
If Alice does not have an entry for herself in Google, then an empty one is created. If Alice does have an entry for herself this is somehow found [I don't know enough about Google Contacts to know if this can be done automatically or if the Dashboard UI must display a list of Alice's contacts and ask her to select the one that is her [we could allow her to specify multiple entries and tag them as personas too in the future].
Merge into Meta
Since no h:correlation link exists between Alice's root entity in the meta context and the root node in the Google Contacts (GC) context, then this correlation needs to established.
This involves creating the h:correlation link as well as walking the entire graph from the root in the GC context down and merging it into either a new or an existing persona branch under the root (MetaMe) node in Alice's meta context.
The result of this generalization process is shown in figure 2 below. As you can see not only is the node representing Alice merged into the meta context but all of the other contacts that Alice has (including Bob) are merged in too. The dotted lines are foaf:knows links.
For clarity all of Alice's contacts (other than herself and Bob) have been omitted for simplicity in Figure 2 below.
In the dashboard app Alice selects the Bob persona node in her meta context. One of the operations she can perform on a persona is to share it with someone. She chooses to share this Persona node with Bob. And by Bob we mean here Bob's email address (which is an attribute of the Bob entity).
For social protocol reasons Alice will simultaneously offer to share her own contact info with Bob. (See the "Stay in Sync?" email below).
After she clicks "Share" on the Bob node in the Meta context the PAUL notices that the Bob Persona node is not in its own context, and since the minimum unit for sharing (and access control) is an entire context, it must create a new context and move the Bob node into it.
Moving the Bob node involves rewriting the link from Alice to Bob so that it points to the moved Bob (which will now have a new entityid (why? because it was a relative UDI within the meta context and now it must be addressed from the meta context using an absolute UDI)).
The new context created is a personal r-card2 (note: we've recently changed all i-cards to be context sub-classes). To create this there must be some communication with the PDS so that we end up with a new context in the PDS Client as well as on the PDS itself.
This same process is repeated for the Alice node, and results in r-card1 in both the PDS Client and the PDS.
The result of all this is shown in Figure 3.
Now that the data is in the right places the PDS client needs to add Bob to the access control list for the new contexts. Now at this point we only know Bob as his email address, so that must (for now) be his identifier.
The access control list is maintained by the PDS, so Alice's PDS Client must communicate with the PDS to add Bob to the "allow access" list of r-card1 and r-card2. We add "Bob has full read/write access to r-card2" to the r-card2 ACL. And we add "Bob has read-only access to r-card1" to the r-card1 ACL.
The last step is for <PDS Client or Dashboard ??> to arrange that an email be sent to Bob. The email contains what we call an i-link.
The i-link (URI) encodes (a) a link to an Azigo download site (b) the UDI of the Bob entity on r-card2 (c) the UDI of the Alice entity on r-card1
The text of the email says something like:
Subject: Stay in sync?
I'd like to stay in sync with you. By clicking on the link below please accept my offer to always having my latest contact/profile information. You have the option of
Click here to accept my offer. Note: If you don't already have a Higgins active client, clicking here will bring you to a Higgins download page.
I've started using Higgins to stay in sync with co-workers, friends and family. With Higgins everything stays up-to-date because everyone who uses Higgins only has to update THEIR OWN contact info--and all the changes are automatically reflected it everyone else's address book.
Since Bob's browser doesn't have the Higgins BX installed when he clicks on the i-link it just takes him to the Higgins download site.
Bob downloads and installs Azigo.
Now Bob has a meta context as shown in Figure 4
Higgins active client extracts the UDI of Alice's Bob entity on the r-card she created. The PDS client resolves this UDI and thus creates the r-card1 context in Bob's PDS Client as fetched from the PDS. The same is done for the "Alice" UDI. The result is shown in Figure 5.