First workshop on Social Data on the Web at ISWC2008
As you may have already read, the 1st workshop on Social Data on the Web (SDoW2008) will be held at next ISWC, at the end of October in Karlshrue and I’m really glad to co-chair it with Uldis, John and Sergio.
If you work on a related field, either as a researcher, industrial or developer, you’re more than welcome to submit a paper, a poster or a demo until the 25th of July via easychair. More information about the topics and organization of the workshop it can be found on the SDoW2008 website.
While talking about the Social Web, the proceedings of the SAW2008 workshop that was held tuesday in Innsbruck will be online soon on CEUR-WS website (Vol. 333). Here are also the slides of our talk I gave here, and the one I gave in the main conference about another paper (that should be soon uploaded here).
Tags: bis2008, dataportability, iswc2008, saw2008, sdow2008, slideshare, socialgraph
Browsing your FOAF social graph
As a way to demo some thoughts from one of my previous posts, I wrote a small python script that query my main FOAF URI to retrieve my other URIs (flickr, twitter …) and related RDF files, then SPARQL each of them to retrieve relationships and creates an XML file according the needs of Graph Gear.

Live demo here. If you want to run in on your own data, just grab it there. The way is defines color mappings is a bit ugly, so if anyone wants to hack a better regexp for it, I’d be glad to have feedback.
One FOAF fits all
A few years ago, I created my FOAF profile with FOAF-O-Matic. But actually, I almost never updated it and its foaf:knows list.
So, now, I’ll let external websites manage those informations.
I have exports in RDF of my flickr, twitter and facebook accounts, as well as this weblog (in progress), and in most of them, I define those relationships to the people I know. Since all those files define a URI for myself, I can use my main (I mean hosted by my own) FOAF file as a reference profile that will link myself to my other URIs using owl:sameAs, and also add rdfs:seeAlso links to the related files (as described here), eg:
<owl:sameAs rdf:resource="http://apassant.net/home/2007/12/flickrdf/people/33669349@N00" rdfs:seeAlso="http://apassant.net/home/2007/12/flickrdf/data/people/33669349@N00"/> <owl:sameAs rdf:resource="http://twitter.com/terraces" rdfs:seeAlso="http://tools.opiumfield.com/twitter/terraces/rdf"/>
And I’ll get a decentralized foaf:knows network, as shown on this graph:

Then, I can grab all these profiles in a local RDF store, or even better, use a dedicated Semantic Web “social graph manager” as Knowee or Beatnik to get all my contacts locally, get their e-mail, query profiles, or as David said, integrates in other desktop apps and sync with my iphone (ok, I don’t have one yet
) …
And if services as linked-in or bibliography repositories export FOAF URIs for anyone, as the FOAF/DBLP service already offers, I could even link to people I worked with. In case all those services exports data with only foaf:knows and I want to be more precice, I can refine relationships in my profile using the RELATIONSHIP vocabulary, or maybe even include rules in my profile that could then be taken into consideration by agents that will query it ? Something like:
( GRAPH <http://linkedin/foafexport/mygraph> { #me foaf:knows ?x } )
=>
( #me rel:collaboratesWith ?x )
that will be in my profile itself.
Finally, since I can create a link to this FOAF profile from my OpenID, I can reuse this graph in many applications. And when login to a new service, ask him “is there anyone here that I know from flickr ?”.
More than social network, I can also link from the same profile (or, actually, from the profiles that have been linked to the reference one) to various things I wrote or done on the Web, as data from last-fm, revyu or flickr, thanks to SIOC, as explained here.
So: One reference profile. Lots of distributed information. One Giant Global Graph.
NB: Also check some of Dan Brickley’s experiments about related topics.
NB2: I did not take trust issues in consideration in that post, i.e. how can we be sure that the owl:sameAs relationship is linked to an URI which is really *me*. I think one solution would be to authenticate on those websites using OpenID so that it can find my FOAF file, then my URI, and add an owl:sameAs link in the other direction. Both files should also be signed, and I think that will be ok (?).
Tags: dataportability, foaf, openid, owl, rdf, sioc, socialgraph
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
Retrieving FOAF profile from OpenID
Following Dan Brickley’s experiments, I’ve just setup an OpenID plug-in for this weblog, allowing anyone to register using OpenID, since users now need to register to comment.
Actually, one of the reason I installed it is that I thaught it would be an easy way to retrieve a FOAF profile for any registered user on this weblog. I’m using auto-discovery to get it from the OpenID URL. I don’t know if there’s any OpenID provider that have such a feature, but it can easilly be done if you’re delegating your OpenID to your own webpage, by adding the auto-discovery line in the header of your OpenID URL (check the source of this page if needed). BTW, WP users, here’s another plugin that helps to delegate your OpenID to your weblog.
The method I used to retrieve the profile is the following:
function fetch_foaf_profile($url) {
$html = file_get_contents($url);
preg_match_all('/<head.*<link.*rel="meta".*title="foaf".*href="(.*)".*\/>.*<\/head>/Usi', $html, $links);
if($links) {
if($foaf = $links[1][0]) {
$ex = parse_url($foaf);
if($ex['scheme']) return $foaf;
elseif(substr($ex['path'], 0, 1) == '/') {
$ex = parse_url($url);
return $ex['scheme'].'://'.$ex['host'].$foaf;
}
else return $url.$foaf;
}
}
return null;
}
Then, the profile is added to wp_usermeta table. The complete svn diff for the latest version of the plug-in is available here.
So, now that I can have FOAF profiles for users, I’ll be able to experiment the FOAF-avatar idea I had a long time ago. Other steps would be to combine people URIs with Morten Frederiksen’s FOAF output plugin (cannot find how to make it work with WP2.3) , using owl:sameAs to link users’ URIs created from this weblog to their profiles URI, and also to use it in the SIOC output plugin.
Regarding social networking Dan is talking about, I think that would be a great way answer questions as: do people commenting this blog already know themself in the SemWeb world ? Are they friends re. their FOAF profile ? re. Facebook ? Do they share interests ?
So, If you have FOAF and OpenID connected thanks to auto-discovery, I’ll be happy you try it so that I can start experimenting some of these ideas.
Update: The script now also retrieve SIOC profile if available.
Tags: foaf, gravatar, openid, rdf, social networks, socialgraph
