Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "Form Filling"

(alice-staples context)
(root context)
Line 59: Line 59:
  
 
===root context===
 
===root context===
Context of this context:
+
Contents of this context:
 
   :RootContext_1
 
   :RootContext_1
 
       rdf:type persona:RootContext .
 
       rdf:type persona:RootContext .

Revision as of 14:04, 27 July 2010

{{#eclipseproject:technology.higgins|eclipse_custom_style.css}}
Higgins logo 76Wx100H.jpg

Introduction

This document describes how the Persona Data Model 2.0 can be used to support a Javascript form filling application (app-card) making API calls into the PDS Client of an active client. We will illustrate by walking through the following scenario rom a cold start (i.e. a clean install of a browser-integrated active client):

  1. Alice points her browser at staples.com and proceeds to try to buy a stapler. She eventually arrives at a checkout page
  2. Alice fills in the form and submits it
  3. Active client builds persona structures from what it has observed
  4. Alice points her browser at bestbuy.com and proceeds to buy a new CD
  5. Active client attempts to assist Alice in filling the form from persona data
  6. Alice edits/corrects form elements and submits it
  7. Active client builds persona structures from what it has observed

Data structures at start

Diagram

Only one context exists at this point, the root context shown here:

Alice step 1.png

n3

 :RootContext_1
     rdf:type persona:RootContext .
 
 :RootMe
     rdf:type persona:Persona .

Step 1

Alice eventually ends up at this form:

Staples.com checkout.png

The form filling Javascript will make a getExAttributes() call into the PDS Client API (of the active client) passing (among other parameters) the above form's submit URL. This causes the PDS Client to instantiate a new ProfileContext whose name is derived from the form submit URL (and Alice's id) and whose schema (ontology) is "staples.com.owl" (which in turn is based on PDM (persona.owl)). This staples.com.owl ontology includes the mapping rules to map staples-specific HTML form elements into the PDM.

Alice's staples ProfileContext is (other than the ontology definitions) empty.

Data Structures

The root context is unchanged. We now have a second context, alice-staples, a ProfileContext that has no instance data in it:

Alice step 2.png


Note: the "containedBy" links are only to illustrate that objects are contained in contexts. These links are not explicitly represented in the actual data structures, and only a selected few are shown.

Step 2

Alice fills in the form and submits it.

Step 3

The active client builds persona structures from what it has observed.

The Form Filler calls setAttributes() and records the values Alice entered. These data are mapped into the PDM by mapping rules defined by the staples.com ontology. The result is a populated ProfileContext.

Data Structures

Here are the resulting data objects. For clarity we omitted the entire "shipping" data objects and show only the "billing" objects. We also omitted the class objects shown in the diagram above.

Alice step 3c.png

The top two objects live in the root context, all below live in the alice-staples Profile Context.

root context

Contents of this context:

 :RootContext_1
     rdf:type persona:RootContext .
 
 :RootMe
     rdf:type persona:Persona ;
     persona:profileSubCorrelation
             alice-staples:Office-supplies-StaplesCheckoutFlow_1 .

alice-staples context

Contents of this context:

 :ProfileContext_1
     rdf:type p:ProfileContext .
 
 :Office-supplies-StaplesCheckoutFlow_1
     rdf:type staples:Office-supplies-StaplesCheckoutFlow ;
     p:subCorrelation
             :Contactable_1 .    
 
 :Contactable_1
     rdf:type p:Contactable ;
     p:role  p:Buyer ;
     vcard:adr :Address_1 ;
     vcard:n :Name_1 ;
     vcard:tel Voice_1 .
 
 :Address_1
     rdf:type vcard:Address ;
     rdfs:label "Address_1"^^xsd:string ;
     vcard:extended-address
             "Suite 1000"^^xsd:string ;
     vcard:locality "Peoria"^^xsd:string ;
     vcard:postal-code "61604"^^xsd:string ;
     vcard:region "IL"^^xsd:string ;
     vcard:street-address
             "123 S Main Street"^^xsd:string .
 
 :Name_1
     rdf:type vcard:Name ;
     rdfs:comment ""^^xsd:string ;
     rdfs:label "Name_1"^^xsd:string ;
     vcard:family-name "Jones"^^xsd:string ;
     vcard:given-name "Alice"^^xsd:string .
 
 :Voice_1
     rdf:type vcard:Voice ;
     rdf:value "tel:+358-555-1234567" ;
     rdfs:comment "Alice's telephone number"^^xsd:string ;
     rdfs:label "Voice_1"^^xsd:string .

Back to the top