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:

onefoaf.png

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 (?).

Comments

12 Responses to “One FOAF fits all”

  1. David Larlet homepageblog on January 13th, 2008 12:00 am

    Considering that your twitter’s relations are not hosted by you, did you accept to loose a whole part of your graph if this service goes down? That’s just why I want to break silos and get my data back.

    Web apps should sync with my graph, not the contrary.

  2. Simon Reinhardt homepage on January 13th, 2008 12:01 am

    To the first codeblock with the seeAlso: I’m not sure what triples that is supposed to generate (apart from the wrong caps on rdfs:seeAlso).

    Shouldn’t it be something like:

    Or even better: type it as foaf:Person instead of using rdf:Description. Btw: you do the same in your FOAF file with foaf:interest and dc:title - not sure if that’s valid RDF/XML.

    Simon

  3. Simon Reinhardt homepage on January 13th, 2008 12:02 am

    Hm it ate my XML code. :)

    So what I wrote (with round instead of angle brackets):

    (owl:sameAs)
    (rdf:Description rdf:about=”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)

  4. Alex on January 13th, 2008 2:06 pm

    Simon> Both serialisations will give the same triples, i.e. :

    <http://my_main_uri> owl:sameAs <http://my_flickr_uri> .
    <http://my_flickr_uri> rdfs:seeAlso <http://my_flickr_rdf_file> .

    (check rdf validator for the real triples)

    Indeed, when using your RDF/XML snippet, I could use foaf:Person instead of rdf:Description to be more precise. Yet, this foaf:Person statement about <http://my_flickr_uri> is done on the external file, that’s why there’s no special need to redefine it localy.

    (I fixed the seeAlso typo, thanks for noticing)

    David> Actually, apps sync with my graph - since they’re part of its creation and can reuse it - but on a distributed way. If I add someone on twitter, he will be on my graph, on the ‘twitter’ subgraph, and any other app can use it. But indeed, it implies that those services must be alive to make it work, and that I have to trust the fact that they publish the information I created. Unless I have a local copy of them.

  5. Недельный обзор | Футуриус on January 14th, 2008 11:36 pm

    […] Полезнейшая статья Александра Пассанта на тему связывания FOAF при помощи OWL […]

  6. Casual.info.in.a.bottle » Blog Archive » Identita’ digitale, un annoso dilemma… on January 15th, 2008 12:28 pm

    […] via alessandr passant […]

  7. Недельный обзор | Футуриус on February 1st, 2008 8:35 pm

    […] Связывание FOAF Я уезжаю до 5го числа в Яремчу, за главного тут остается Кулак и cron […]

  8. Browsing your FOAF social graph : Alexandre Passant on February 6th, 2008 8:51 pm

    […] 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, […]

  9. Julian Bond on February 16th, 2008 7:15 pm

    Nice. How are you doing Twitter, etc to FOAF?

  10. Alex on February 16th, 2008 8:14 pm

    Thanks Julian.

    Check those links for FOAF exporters: Twitter, Facebook, Flickr.

    You may also be interested in Openlink Virtuoso RDF Sponger, that can RDF-ize non RDF data.

  11. The Semantic Puzzle | Sharing Friend of a Friend Data (FOAF) across Social Networks (Blogtalk Presentation) on March 5th, 2008 6:01 pm

    […] presentation. Have a look at the slides from his talk on slideshare in which he also documents the ‘One FOAF Fits All’ hack conducted by Alexandre Passant which connects Passant’s Flickr, Twitter and Facebook accounts using his own FOAF file as a […]

  12. RDFa profile and new URI : Alexandre Passant on March 11th, 2008 10:00 pm

    […] I just added a short profile about myself embedding RDFa that aims to replace my old FOAF file, in which I already moved some things (i.e. relationships) to external services. […]

Leave a Reply

You must be logged in to post a comment.