Skip to main content

Notice: This Wiki is now read only and edits are no longer possible. Please see: for the plan.

Jump to: navigation, search

Data Sharing With Alice And Bob



This document describes a use case wherein Alice offers to enter into a data sharing relationship with Bob.

A cursory knowledge of the concept of a Attribute Data Service 2.0 and of the Persona Data Model 2.0 (PDM 2.0) is assumed. Although not mentioned explicitly the graph of objects being shared are described in the PDM 2.0 model.


Alice wishes to grant access to one of her contexts to her friend Bob. In accepting this invite, Bob will grant access to Alice to an equivalent context owned by Bob.

Initial Condition

Alice has:

  • An account on a Higgins-based ADS
  • A Higgins-based PDS
  • A share-able context, call it context-A1
  • A sharing_inbox contex, which is read/writeable by Alice, and appendable by all.
  • Bob's email address

Bob has:

  • No ADS account
  • No PDS
  • An email address

Alice Initiates Sharing

  • Alice opens her sharable context in her PDS, call it context-A1.
  • Alice clicks the "share via email" button, and enter's Bob's email address.
  • The PDS system does the following:
    • Generates a GUID for this invitation, call it GUID-1
    • Makes the following entries in the sharing_inbox context:
      • GUID-1, invited_to, context-A1
      • GUID-1, invited_timestamp, {timestamp}
      • GUID-1, invited_method, email
      • GUID-1, identified_by,
    • Sends an email message to Bob that contains an invitation message, and a link back to the PDS that embeds these pieces of data:
      • Alice's user ID
      • The URI to the context that Alice shared
      • The URI to the template for the context that Alice shared
      • The invitation GUID-1

Bob Clicks the Link

  • Bob retrieves the email message
  • Bob clicks the link
  • The link opens the PDS to a page that offers Login or Create Account, and saves the GUID-1 in a session variable.
  • Bob creates an account.
  • Bob sees some UI that asks if he want to accept sharing of Alice's context, and in turn, share his equivalent context.
  • The PDS creates a context for Bob using the template URI from the link, call it Context-B1.
  • The PDS grants read-access to Alice to Context-B1 (since it knows her root ID).
  • Creates a pointer form Context-B1 to Context-A1.
  • Bob's PDS creates a GUID-2 for the reciprocal invitation to Alice, and creates the following statements in Alice's sharing_inbox context:
    • GUID-1, accepted_by, bob
    • GUID-1, accepted_timestamp, {timestamp}
    • GUID-2, invited_to, Context-B1
    • GUID-2, invited_timestamp, {timestamp}
    • GUID-2, invited_method, internal
    • GUID-2, identified_by, alice
  • Bob's PDS creates the following statements in Bob's sharing_inbox context:
    • GUID-2, invited_to, Context-B1
    • GUID-2, invited_timestamp, {timestamp}
    • GUID-2, invited_method, internal
    • GUID-2, identified_by, alice

Alice finalizes the sharing

Alice's PDS reads Alice's sharing_inbox and does the following:

  • Creates an ACL entry in Context-A1 granting read-access to {bob's user ID}
  • Creates a pointer from Context-A1 to Context-B1
  • Write the following entries into Bob's sharing_inbox context:
    • GUID-2, accepted_by, alice
    • GUID-2, accepted_timestamp, {timestamp}

Back to the top