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 "Persona Attribute List"

(Names)
(Redirecting to Flat Persona vocabulary)
 
(31 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{#eclipseproject:technology.higgins|eclipse_custom_style.css}} [[Image:Higgins logo 76Wx100H.jpg|right]]
+
#REDIRECT [[Flat Persona vocabulary]]
 
+
This page lists the attributes that can be described by the PDM. This page will aid developers creating schema mapping tranformations into and out from the PDM.
+
 
+
=== TODO ===
+
* The tables are incomplete at present.
+
 
+
=== Introduction  ===
+
 
+
Since getting the world's developers to commit to a single, rich ontology will never happen, the next best thing is to define a rich, fine-grained internal ontology (as we have done in [[Persona Data Model 2.0]] (PDM)) and then define mapping rules between it an vocabularies that exist in the wild. <br>
+
 
+
We define mapping functions that get values of attributes in PDM object graphs. The inverse of these functions can ''set'' these values (although not all functions have inverse functions). One of the sub-parts of PDM is an ontology to describe these mapping functions. It is called mapping.owl and is described briefly on the main [[Persona Data Model 2.0|PDM]] page.
+
 
+
Mapping in or out of another vocabulary can be thought of as involving two steps. First a human needs to look at an attribute in some target vocabulary T classify it as some concept C. The rows in the tables on this page describe the mapping from C to entities and attribute instances in a concrete instance of the PDM model.
+
 
+
The application of mapping rules is considered to occur within what we call an "external context." Since a single person is represented in PDM as multiple p:person nodes (facets) when trying to map "given-name" we need to understand the broad, overall containing context of the interaction. Depending on the context a person might answer differently. For example if the context was a virtual world like Second Life, the person's given name is almost always not their "real world" given name. Persona nodes in PDM carry a number of "role" tags that indicate appropriateness/use in one of these overall contexts. (We're using the word context generically here, we are not referring to Higgins Contexts).
+
 
+
The external context is represented as "RP" in the tables below. The actual values of RP would be one of the instances of "External" Role pre-defined in PDM (specifically persona.owl). These include Ecommerce, Gaming, SocialNetworking, etc.
+
 
+
==== An Example: Given Name ====
+
 
+
If in vocabulary T we saw a term that we'd classify as a person's given name, then we'd first search for a row by that name in one of the tables on this page. We'd then lookup the function and arguments on that row. The function traverses a path (or in rare cases a set of paths) through a PDM graph. In the case of given name we'd find the following matching row:
+
 
+
{| cellspacing="0" cellpadding="5" border="1" class="wikitable"
+
|- style="background: none repeat scroll 0% 0% rgb(214, 222, 233); color: black;"
+
! align="left" width="30%" valign="top" | Attribute
+
! align="left" width="20%" valign="top" | Function
+
! align="left" width="10%" valign="top" | Arg1
+
! align="left" width="10%" valign="top" | Arg2
+
! align="left" width="10%" valign="top" | Arg3
+
! align="left" width="10%" valign="top" | Arg4
+
! align="left" width="10%" valign="top" | Comment
+
|-
+
| Given Name
+
| rolePathLiteral
+
| RPRole<br>
+
| v:n<br>
+
| v:given-name<br>
+
| <br>
+
| <br>
+
|}
+
 
+
The function to be applied called <code>rolePathLiteral</code>. Its name is a hint as to how it operates. This function takes three arguments (RPRole, v:n, v:given-name). The <code>rolePathLiteral</code> starts at the root of the Persona graph (the <code>RootMe</code> node) and breadth-first following <code>p:subCorrelation</code> links searches for the first p:person node that is tagged with a role that matches the role of the external context.
+
 
+
Let's assume that the value of RPRole (the external context) is "eCommerce". The <code>rolePathLiteral</code> function will start at the root RootMe node and breadth-first find the first p:Person node that has a matching role value of "eCommerce". If none are found then the first p:Person found that matches the rest of the criteria we're about to explain, will be used. In this example and in all others the role argument (usually Arg1) is used to disambiguate between multiple alternatives that otherwise match the rest of the criteria. The more role tags that match, the better the quality of the match.<br>
+
 
+
The rest of the criteria are that the person node must have a "path" (we're done with "role" we're now onto "path"), that is, a complex-valued attribute (aka link) of type <code>v:n</code> (from the vcard vocabulary). Further, it must have a simple-valued attribute of type <code>v:given-name</code>. The value of this literal attribute is the result of mapping the human concept of "given name."
+
 
+
=== Parameterization ===
+
 
+
To reduce redundancy in the following tables, we use the following parameterization scheme:
+
 
+
The <Type> may be one of:
+
* Shipping
+
* Home
+
* Shipping, Home
+
* Work
+
* Billing
+
* DayTime
+
* nil
+
 
+
And to retrieve the correct type for each of the above, set the <Role> (respectively):
+
* Recipient
+
* Home
+
* Recipient, Home
+
* Work
+
* Buyer
+
* DayTime
+
* nil
+
 
+
 
+
 
+
=== Account ===
+
Experimental, alternative format from the tables below...
+
 
+
* [http://eclipse.org/higgins/fp/accountUsername fp:accountUsername] = rolePathLiteral (RPRole, foaf:account, foaf:accountName)
+
* [http://eclipse.org/higgins/fp/accountPassword fp:accountPassword] = rolePathLiteral (RPRole, foaf:account, p:password)
+
* [http://eclipse.org/higgins/fp/accountConfirmPassword fp:accountConfirmPassword] = rolePathLiteral (RPRole, foaf:account, p:password)
+
* [http://eclipse.org/higgins/fp/accountEmail fp:accountEmail] = roleObject (RPRole, foaf:mbox)
+
* [http://eclipse.org/higgins/fp/accountEmail fp:accountConfirmEmail] = roleObject (RPRole, foaf:mbox)
+
 
+
 
+
==== Account  ====
+
 
+
{| cellspacing="0" cellpadding="5" border="1" class="wikitable"
+
|- style="background: none repeat scroll 0% 0% rgb(214, 222, 233); color: black;"
+
! align="left" width="30%" valign="top" | Attribute
+
! align="left" width="20%" valign="top" | Function
+
! align="left" width="10%" valign="top" | Arg1
+
! align="left" width="10%" valign="top" | Arg2
+
! align="left" width="10%" valign="top" | Arg3
+
! align="left" width="10%" valign="top" | Arg4
+
! align="left" width="10%" valign="top" | Comment
+
|-
+
| Account Username
+
| rolePathLiteral
+
| RPRole<br>
+
| foaf:account<br>
+
| foaf:accountName<br>
+
| <br>
+
| <br>
+
|-
+
| Account Password<br>
+
| rolePathLiteral<br>
+
| "<br>
+
| "<br>
+
| p:password<br>
+
| <br>
+
| <br>
+
|-
+
| Account Confirm Password
+
| rolePathLiteral<br>
+
| "<br>
+
| "<br>
+
| "<br>
+
| <br>
+
| <br>
+
|-
+
| Account Username Email<br>
+
| roleObject<br>
+
| "<br>
+
| foaf:mbox<br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| Account Username Email Confirm<br>
+
| roleObject<br>
+
| "<br>
+
| "<br>
+
| <br>
+
| <br>
+
| <br>
+
|}
+
 
+
=== Names ===
+
The beginnings of an alternative format from the table below:
+
* [http://eclipse.org/higgins/fp/honorificPrefix/{Type} fp:honorificPrefix<Type>] = rolePathLiteralInitial ([RPRole,{Role}], v:n, v:honorific-prefix)
+
 
+
==== Names  ====
+
 
+
{| cellspacing="0" cellpadding="5" border="1" class="wikitable"
+
|- style="background: none repeat scroll 0% 0% rgb(214, 222, 233); color: black;"
+
! align="left" width="30%" valign="top" | Attribute
+
! align="left" width="20%" valign="top" | Function
+
! align="left" width="10%" valign="top" | Arg1
+
! align="left" width="10%" valign="top" | Arg2
+
! align="left" width="10%" valign="top" | Arg3
+
! align="left" width="10%" valign="top" | Arg4
+
! align="left" width="10%" valign="top" | Comment
+
|-
+
| <Type> Honorific Prefix<br>
+
| rolePathLiteralInitial<br>
+
| RPRole, <Role>
+
| v:n<br>
+
| v:honorific-prefix<br>
+
| <br>
+
| <br>
+
|-
+
| <Type> Given Name
+
| rolePathLiteral
+
| "
+
| "<br>
+
| v:given-name<br>
+
| <br>
+
| <br>
+
|-
+
| <Type> Additional Names<br>
+
| rolePathLiteral<br>
+
| "<br>
+
| "<br>
+
| v:additional-name<br>
+
| <br>
+
| <br>
+
|-
+
| <Type> Additional Names - Initial<br>
+
| rolePathLiteralInitial<br>
+
| "<br>
+
| "<br>
+
| v:additional-name<br>
+
| <br>
+
| <br>
+
|-
+
| <Type> Family Name<br>
+
| rolePathLiteral<br>
+
| "<br>
+
| "<br>
+
| v:family-name<br>
+
| <br>
+
| <br>
+
|-
+
| <Type> Honorific Suffix<br>
+
| rolePathLiteralInitial<br>
+
| "<br>
+
| "<br>
+
| v:honorific-suffix<br>
+
| <br>
+
| <br>
+
|-
+
| <Type> Formatted Name<br>
+
| TBD<br>
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
|}
+
 
+
=== Addresses  ===
+
Note: <code>rolePathAddress()</code> is a function that concatenates: apartment + (houseNumber or houseName) + house + street
+
 
+
{| cellspacing="0" cellpadding="5" border="1" class="wikitable"
+
|- style="background: none repeat scroll 0% 0% rgb(214, 222, 233); color: black;"
+
! align="left" width="30%" valign="top" | Attribute
+
! align="left" width="20%" valign="top" | Function
+
! align="left" width="10%" valign="top" | Arg1
+
! align="left" width="10%" valign="top" | Arg2
+
! align="left" width="10%" valign="top" | Arg3
+
! align="left" width="10%" valign="top" | Arg4
+
! align="left" width="10%" valign="top" | Comment
+
|-
+
| <Type> Address<br>
+
| rolePathAddress<br>
+
| RP <Role>
+
| v:adr<br>
+
|
+
+
|
+
|-
+
| <Type> Street Address<br>
+
| rolePathLiteral
+
| RP <Role>
+
| v:adr<br>
+
| v:street-address
+
+
|
+
|-
+
| <Type> Extended Address<br>
+
| "
+
| "
+
| "
+
| v:extended-address
+
| <br>
+
| <br>
+
|-
+
| <Type> Locality
+
| "<br>
+
| "<br>
+
| "<br>
+
| v:locality<br>
+
| <br>
+
| <br>
+
|-
+
| <Type> Region<br>
+
| "<br>
+
| "<br>
+
| "<br>
+
| v:region<br>
+
| <br>
+
| <br>
+
|-
+
| <Type> Postal Code<br>
+
| "<br>
+
| "<br>
+
| "<br>
+
| v:postal-code<br>
+
| <br>
+
| <br>
+
|-
+
| <Type> 4 Digit Extension Zip<br>
+
| TBD<br>
+
| "<br>
+
| "<br>
+
| v:postal-code<br>
+
| <br>
+
| <br>
+
|-
+
| <Type> start (date)
+
| rolePathLiteral
+
| RP, <Role>
+
| v:adr
+
| v:start
+
| <br>
+
| <br>
+
|-
+
| <Type> end (date)
+
| rolePathLiteral
+
| RP, <Role>
+
| v:adr
+
| v:start
+
| <br>
+
| <br>
+
|-
+
|}
+
 
+
=== Birthday  ===
+
 
+
{| cellspacing="0" cellpadding="5" border="1" class="wikitable"
+
|- style="background: none repeat scroll 0% 0% rgb(214, 222, 233); color: black;"
+
! align="left" width="30%" valign="top" | Attribute
+
! align="left" width="20%" valign="top" | Function
+
! align="left" width="10%" valign="top" | Arg1
+
! align="left" width="10%" valign="top" | Arg2
+
! align="left" width="10%" valign="top" | Arg3
+
! align="left" width="10%" valign="top" | Arg4
+
! align="left" width="10%" valign="top" | Comment
+
|-
+
| Year of Birth<br>
+
| roleYear<br>
+
| RP<br>
+
| v:bday<br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| Buyer Year of Birth<br>
+
| roleYear<br>
+
| RP, p:Buyer<br>
+
| v:bday<br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| Month of Birth<br>
+
| roleMonth
+
| RP<br>
+
| "<br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| Day of Birth<br>
+
| roleDay<br>
+
| "<br>
+
| "<br>
+
| <br>
+
| <br>
+
| <br>
+
|}
+
 
+
=== Payment Related  ===
+
 
+
{| cellspacing="0" cellpadding="5" border="1" class="wikitable"
+
|- style="background: none repeat scroll 0% 0% rgb(214, 222, 233); color: black;"
+
! align="left" width="30%" valign="top" | Attribute
+
! align="left" width="20%" valign="top" | Function
+
! align="left" width="10%" valign="top" | Arg1
+
! align="left" width="10%" valign="top" | Arg2
+
! align="left" width="10%" valign="top" | Arg3
+
! align="left" width="10%" valign="top" | Arg4
+
! align="left" width="10%" valign="top" | Comment
+
|-
+
| Credit Card Type<br>
+
| TBD<br>
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| Credit Card Number<br>
+
| rolePathClassLiteral<br>
+
| RP, p:Buyer<br>
+
| pay:payment<br>
+
| pay:CreditCard<br>
+
| pay:ccNumber<br>
+
| <br>
+
|-
+
| Credit Card Expiration Date - Month<br>
+
| rolePathClassMonth<br>
+
| "<br>
+
| "<br>
+
| "<br>
+
| pay:ccExpiration<br>
+
| <br>
+
|-
+
| Credit Card Expiration Date - Year<br>
+
| rolePathClassYear<br>
+
| "<br>
+
| "<br>
+
| "<br>
+
| pay:ccExpiration<br>
+
| <br>
+
|-
+
| Credit Card Name<br>
+
| rolePathClassLiteral<br>
+
| "<br>
+
| "<br>
+
| "<br>
+
| pay:ccName<br>
+
| <br>
+
|-
+
| Credit Card Number<br>
+
| rolePathClassLiteral<br>
+
| RP, p:Home<br>
+
| "<br>
+
| "<br>
+
| pay:ccCID<br>
+
| <br>
+
|}
+
 
+
=== Telephone Numbers  ===
+
 
+
{| cellspacing="0" cellpadding="5" border="1" class="wikitable"
+
|- style="background: none repeat scroll 0% 0% rgb(214, 222, 233); color: black;"
+
! align="left" width="30%" valign="top" | Attribute
+
! align="left" width="20%" valign="top" | Function
+
! align="left" width="10%" valign="top" | Arg1
+
! align="left" width="10%" valign="top" | Arg2
+
! align="left" width="10%" valign="top" | Arg3
+
! align="left" width="10%" valign="top" | Arg4
+
! align="left" width="10%" valign="top" | Comment
+
|-
+
| <Type> Phone - Area Code<br>
+
| rolePathAreaCode<br>
+
| RP, <Role><br>
+
| v:tel
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| <Type> Phone Number - Less Area Code<br>
+
| rolePathSevenDigits<br>
+
| "<br>
+
| "<br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| <Type> Phone Number - First Three<br>
+
| rolePathFirstThree<br>
+
| "<br>
+
| "<br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| <Type> Phone Number - Last Four<br>
+
| rolePathLastFour<br>
+
| "<br>
+
| "<br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| <Type> Phone Number - Extension<br>
+
| rolePathExtension<br>
+
| "<br>
+
| "<br>
+
| <br>
+
| <br>
+
| <br>
+
|}
+
 
+
=== GeoLocation  ===
+
 
+
{| cellspacing="0" cellpadding="5" border="1" class="wikitable"
+
|- style="background: none repeat scroll 0% 0% rgb(214, 222, 233); color: black;"
+
! width="30%" valign="top" align="left" | Attribute
+
! width="20%" valign="top" align="left" | Function
+
! width="10%" valign="top" align="left" | Arg1
+
! width="10%" valign="top" align="left" | Arg2
+
! width="10%" valign="top" align="left" | Arg3
+
! width="10%" valign="top" align="left" | Arg4
+
! width="10%" valign="top" align="left" | Comment
+
|-
+
| Latitude
+
| rolePathLiteral<br>
+
| RP<br>
+
| geo:location<br>
+
| geo:lat<br>
+
| <br>
+
| <br>
+
|-
+
| Longitude
+
| rolePathLiteral<br>
+
| RP<br>
+
| geo:location<br>
+
| geo:long<br>
+
| <br>
+
| <br>
+
|-
+
| Altitude
+
| rolePathLiteral<br>
+
| RP<br>
+
| geo:location<br>
+
| geo:alt<br>
+
| <br>
+
| <br>
+
|}
+
 
+
=== Misc  ===
+
 
+
{| cellspacing="0" cellpadding="5" border="1" class="wikitable"
+
|- style="background: none repeat scroll 0% 0% rgb(214, 222, 233); color: black;"
+
! width="30%" valign="top" align="left" | Attribute
+
! width="20%" valign="top" align="left" | Function
+
! width="10%" valign="top" align="left" | Arg1
+
! width="10%" valign="top" align="left" | Arg2
+
! width="10%" valign="top" align="left" | Arg3
+
! width="10%" valign="top" align="left" | Arg4
+
! width="10%" valign="top" align="left" | Comment
+
|-
+
| Country<br>
+
| rolePathLiteral<br>
+
| RP<br>
+
| v:adr<br>
+
| v:country<br>
+
| <br>
+
| <br>
+
|-
+
| Gender<br>
+
| roleLiteral<br>
+
| "<br>
+
| foaf:gender<br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| Buyer Gender<br>
+
| roleLiteral<br>
+
| ", p:Buyer<br>
+
| foaf:gender<br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| Company Name<br>
+
| rolePathLiteral<br>
+
| RP, p:Work<br>
+
| v:org<br>
+
| v:organization-name<br>
+
| <br>
+
| <br>
+
|-
+
| Title<br>
+
| rolePathLiteral<br>
+
| "<br>
+
| "<br>
+
| v:title<br>
+
| <br>
+
| <br>
+
|-
+
| Timezone<br>
+
| TBD<br>
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| Employment Status<br>
+
| TBD<br>
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| Biography<br>
+
| TBD<br>
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| Language<br>
+
| TBD<br>
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
|}
+

Latest revision as of 14:43, 11 November 2010

Back to the top