Person.identifier and Formal Identifier: how does this work in a multi-identification domain environment

Giorgio CANGIOLI raised the following comment:


Please clarify how receiver is supposed to univocally determine which kind of identifier have to deal with and how is supposed to be used in a multi- identification domain environment.

For example as Italian Citizen I have a Fiscal Code that identifies me (something like CNGGRG77E12G999T ) how receiver may understand that this code is referred to the Italian Fiscal Code and not to another identifier, or even to a Spanish Identifiers that have a very similar structure. Who guarantees that this code represent me and not another Spanish guy.

The assigning Authority might not be enough for this purpose since it may happen that the same authority issues more identifiers.

Uniqueness of identifiers is critical for interoperability.

I suggest to add an optional field to record the type of identifier used, but above all something allowing to univocally and universally identify the identification space that identifier is referring to.



User interface




Tue, 27/03/2012 - 09:46

Michel van Meteren of the Dutch Tax Service gave me another example of such a multi-identification domain. 

Many coutries use a Taxpayer Identification Number (TIN) [1,2], which can be used to identify persons. The  European Union Savings Directive (EUSD) requires financial institutions to disclose information to national tax services. 


[1] US IRS -,,id=96696,00.html


Tue, 27/03/2012 - 10:01

In the conceptual model of the Core Person Vocabulary v2.0 the Formal Identifier class has only one attribute "identifier" of type String. To allow multiple identification domains, Formal Identifier needs to be extended with a number of properties.

The Identifier. Type of the UN/CEFACT Core Components Data Type Catalogue v3.1 [1] might offer a  solution here. 

  • Content: String [1..1] A character string used to uniquely identify one instance of an object within an identification scheme that is managed by an agency.
  • SchemeIdentifier: String [0..1] The identification of the identifier scheme.
  • SchemeVersion: String [0..1] The identification of the version of the identifier scheme
  • SchemeAgency: String [0..1] The identification of the agency that manages the identifier scheme 

In ADMS, we used a similar approach.




The content of this field is kept private and will not be shown publicly.