In general for identity applications you would use MultiChain streams.
For aspects of identity which people declare for themselves, they can publish items directly onto an open stream, and any node can retrieve a person's items by searching for stream items published by that person's address, e.g. liststreampublisheritems.
For aspects of identity in which a trusted party is making declarations on behalf of other parties, you can use a closed stream to which only trusted parties can write. The key of each item can be the identity of the subject of the declaration, and you can retrieve all items relating to an entity using liststreamkeyitems.