Higgins XDI Harmonization
This document summarizes some of the notes and conversations that started at the European Identity Conference in Munich.
- 1 Introduction
- 1.1 Two kinds of graphs
- 1.2 CDM
- 1.3 HDM
- 1.4 PDM
- 2 PDX
Higgins speaks an XDI dialect that we'll call Higgins XDI. The XDI community is developing a dialect of XDI called PDX XDI. PDX is defined here http://wiki.oasis-open.org/xdi/PdxExample.
There is no need or reason to have Higgins XDI "standardized" and in fact over time we hope to gradually adjust the Higgins code (mostly in the Attribute Service and client components, but possibly one or two minor changes to IdAS itself) so that it is conformant with the PDX XDI dialect.
Markus had created a page very similar and related to this one here: IdAS XDI Mapping.
Two kinds of graphs
The PDM/HDM/CDM models (see Personal_Data_Store_Overview under data models) taken together define the types of graphs that will be found in production Higgins-based systems. On the other hand the XDI defines the types of graphs that will be found in XDI conformant systems. So we have two kinds of graphs with differences between them. Our goal is to ensure that these graphs can be losslessly transformed bi-directionally. Our goal is NOT to make them the same graphs. In order to make the graphs transformable we need to ensure that the semantics are equivalent between the two.
With that as background, here are the kinds of issues we need to address:
- Semantics are undefined in PDX - need to add the semantics to PDX
- Semantics are undefined in Higgins - need to add the semantics to Higgins
- Semantics are different but in a shallow or unimportant way - need to adopt one or the other
- Semantics are incompatible
- Non-issues: the semantics are equivalent and losslessly transformable back and forth
- In Higgins global URIs if resolvable, resolve to exactly one external description.
- Resolution: Non issue. XDI is the same.
- CDM allows multiple values of an attribute but XDI does not.
- Resolution: This can be mapped into a sub-context (in XDI) and back out losslessly. This is already implemented in the Attribute Service 2.0
- In PDX you can identify individual values of an attribute with a persistent identifier that won't change when the value changes (and you can have order).
- In CDM you cannot.
- BTW, perhaps IdAS needs to support ordered values.
- For privacy reasons h:correlation links are directed
- The semantics are reversible except for the issue of privilege.
h:correlationis the same as
$is. --Paul: I'm not sure I buy this. Seems to me that $is is the same as owl:sameAs not h:correlation.
- An entity in one context may be linked to entities in another context via an h:correlation link.
- This is identical in XDI
- Resolution: they are the same
- A directed relation between two entities (possibly in two different contexts) that are asserted to NOT be representing the same person, group, object or concept
Semantics: A directed relation between two entities (possibly in different contexts) for which it is unknown as to whether they represent the same (person, group, object or concept) thing or a different thing.
Other complex-valued attributes
See Higgins Data Model 2.0#Classes_and_Attributes for other complex valued attributes beyond h:correlation:
part: - same as $has
partOf: - same as $is$has
issuer: - no equivalent in PDX
member(sub-property of h:part): - no equivalent in PDX
memberOf(sub-property of h:partOf): - no equivalent in PDX
timespan: - no equivalent in PDX. BTW, XDI has timestamps which is similar
synonym: - Joseph: this corresponds to some usages of $is
start: - same as $d$first
end: - same as $d$last
The following two must be dealt with together. It appears that an examination of surrounding context (on the XDI side) is required to disambiguate.
- rdfs:type (instance to class; recommended on each instance) - in XDI is $is$a
- subclassOf (class to class) - in XDI is $is$a
- rdf:comment - no equivalent in XDI
- skos:prefLabel - no equivalent in XDI
- skos:prefSymbol - no equivalent is XDI
The following additional attributes are used to define characteristics of a specific attribute of an entity class:
- Resolution: Markus: you can tell in XDI if it is a literal valued because you'll see a $foo $is$a statement
- Resolution: - XDI $has is the inverse of rdf:domain; this should suffice
- rdfs:range: -
- skos:description: -
- skos:prefLabel: -
- skos:prefSymbol: -
- skos:example - an example value
- h:category: -
- rdfs:subPropertyOf: -
- rdfs:label: -
- rdfs:comment: -
- lots of predicates and classes designed but not yet implemented in Higgins
- In Higgins we consider XDI Link Contracts to be attributes associated with a context. If a single entity is being shared, then it would be placed in its own context and the link contract metadata attached to the context (not the entity).
- rdf:type is recommended on each entity instance
- Resolution: $is$a is the XDI equivalent to rdf:type. The attribute service can map back and forth.
- In PDM an entityId is is a URI UDI that is either absolute or relative (# fragment) by syntactic inspection.
- Resolution: Non issue. In XDI a relative XRI is (by definition) relative to the XDI within the context that contains it
Higgins represents a single person as a meta context + 0..N other contexts. XDI represents a single person as a single XDI document which can have multiple personas.
- Resolution: Attribute Service 2.0 will map between representations. [It already does this]
In PDM there is a root
h:Person node of fixed name "MetaMe". In XDI there is an "account root" i-number (globally resolvable). This would change from one PDS to another PDS.
- In Higgins we use h:correlation from the MetaMe
h:Personnode to each/all (sub-)
- In PDX $has$a is used sometimes and $is in other cases.
In PDX attributes are inherited "down" the graph. You can override an attribute on a lower Persona. If a lower Persona is shared, then the "upper" / inherited attributes would be pushed to the subscriber. Perhaps Higgins could adopt the PDX approach.
Persona Contexts, typed contexts
The set of
h:indeterminate links define a multi-entity graph explicitly. This allows software to know how to navigate and process the graph. This means that software that ONLY knows these 3 predicates can ignore all others and still walk the graph.
- PDM uses vCard [w3c 2010 member submission] except for tel URI telephone numbers. An
h:Personnode effectively "is" a vCard (we don't use explicit vCard classes). Not sure I see the point here.
- PDM includes the icard.owl vocabulary. These are a set of attributes and values that are associated with context instances. A context is a card. For personal cards the context contains the entity whose attributes/values are the claims/values of the card. For managed cards the context contains an entity whose attributes/values are the claims/values of the display token retrieved from the card's associated STS.
Other PDM attribute classes
PDM defines some attributes not found in vCard, FOAF, etc. these include notions of p:home, p:work, p:receiving, etc.. These don't exist in PDX. PDM also defines some classes not found elsewhere like PaymentMethod
This section looks at PDX and tries to find equivalent terms in CDM, HDM, or PDM.
- dateTime when this subject was created
- in HDM hasn't been defined
- dateTime when this subject was last modified
- in HDM hasn't been defined