Using the foaf:openid property

A nice feature of the foaf:openid property is that it helps to retrieve the unique foaf:Agent associated to an OpenID URI, since its an owl:InverseFunctionalProperty.

When I wrote PHOAF, I have to deal with the question of identifying who was the main subject of a FOAF profile (either a Person or a Group) in order to get links to their homepage, depiction…

In most of people’s files, thanks to foaf-o-matic, there’s foaf:PersonalProfileDocument + foaf:primaryTopic so that’s quite easy. Yet, if there’s not such property, I used this kind of rule:

Now, using the foaf:openid property and authenticating with OpenID - plus retrieving the FOAF profile associated with that URI - solves this with a single SPARQL query:

select ?who
where {
  ?who foaf:openid <openid_uri>
}

More than a way to solve people ambiguity in a profile, FOAF + OpenID also offers nice views regarding decentralized identity management. Trust an OpenID provider for authentication, but store all your personal informations in your FOAF profile.