foaf:knows weblogs!

0 comments | 2003-06-24 | permalink

While I've been developing this FOAF checker, support for a new weblog and syndication interchange has just been taking off over on Sam Ruby's wiki. I fully support the Road Map.

FOAF Checker is a Python script (source) using Sean Palmer's standalone RDF parser that takes the URI of a Friend Of A Friend (FOAF) instance, verifies its signature, and returns the important bits, such as name, firstName, surname, homepage, nick, mbox, and even a picture! Eric Sigler has one in PHP and Ben Trott of SixApart has one in Perl.

I've updated the Blosxom writeback plugin used here to support accepting a FOAF URI in place of a 'Homepage' (note the little FOAF icon next to the Homepage field). Enter the URI of your FOAF instance in that field, and when you submit your comment it will use your FOAF description to supply all the rest of the fields, plus some, hehehe.

To use your FOAF description this way, you must do two things:

First, you must sign your FOAF file as described by usefulinc, which includes adding this to your FOAF file:

  <rdf:Description rdf:about="">
    <wot:assurance rdf:resource="foaf.rdf.asc" />
  </rdf:Description>

'foaf.rdf.asc' is the signature for your FOAF file, which you may have named differently.

Second, you must add an rdf:seeAlso property to "your" (the main) foaf:Person in the FOAF file to refer back to the FOAF file, so the checker can connect the foaf:Person to the URI it asked for, as indicated in red:

    :
    :
  <foaf:mbox>ken@bitsko.slc.ut.us</foaf:mbox>
  <foaf:mbox_sha1sum>bb9fe68ffa844717c1e8752d42ca589ba2044719</foaf:mbox_sha1sum>
  <rdf:seeAlso rdf:resource="" />
  <foaf:homepage rdf:resource="http://bitsko.slc.ut.us/"/>
    :
    :

Remember to re-sign your FOAF file if you've changed it, then that's it, comment away! Feel free to test using this log entry.

I'll go into more details about how the script works in another post, and the changes to the writeback plugin, after some more features are finished. To run FoafCheck you need FoafCheck.py, rdfxml.py and PGP or GPG.

The trail map for FoafCheck is:

  • Fix error reporting. Writeback/FoafCheck was successful if you see your comment come back, unsuccessful if you don't see your or others comments returned.
  • Confirm the use of rdf:seeAlso as the right (temporary?) solution for connecting the URI to the foaf:Person.
  • Implement challenge/response authentication for identity (otherwise, anyone can paste a FOAF URI).
  • Using more FOAF info, like your thumbnail photos.
  • Auto-discovery, so you can paste your homepage or mailbox instead of a FOAF URI. (From a user-interface perspective, you still need to "know" you need only provide one bit of information.)

and somewhat seperately,

  • Extend the World class into a more useable "simple RDF" structure.