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:
- if there’s only one person in the file, he should be the main subject of the profile;
- if there’s more than one person, and no group in the profile, the main topic should be the one that do not have anyone linking to him with
foaf:knows; - yet, there should be some cases when it cannot be solved.
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.
Tags: foaf, openid, social networks, socialgraph
