in FOAF

IRC RDF logs and foaf:chatEvent

For many years, the 24×7 IRC chatrooms #swig and #foaf (and previously #rdfig) have been logged to HTML and RDF by Dave Beckett‘s IRC logging code. The RDF idiom used here dates from 2001 or so, and looks like this:

 <foaf:ChatChannel rdf:about=”irc://irc.freenode.net/swig”>
<foaf:chatEventList>
<rdf:Seq>
<rdf:li>
<foaf:chatEvent rdf:ID=”T00-05-11″>
<dc:date>2008-04-03T00:05:11Z</dc:date>

<dc:description>
danbri: do you know of good scutter data for playing with codepiction? would be fun to get back into that (esp. parallelization).
</dc:description>
<dc:creator>
<wn:Person foaf:nick=”kasei”/>
</dc:creator>
</foaf:chatEvent>

Dave has offered to make a one-time search-and-replace fix to the old logs, if we want to agree a new idiom. The main driver for this is that the old logs have a class for ‘chat event’  but use an initial lowercase later for the term, ie. ‘chatEvent’ instead of ‘ChatEvent’. None of these properties are yet documented in the FOAF schema, and since the data for this term is highly concentrated, and its maintainer has offered to change it, I suggest we document these FOAF terms as used, with the fix of having a class foaf:ChatEvent instead of foaf:chatEvent.

Almost all  RDF vocabularies stick to the rule of using initial lowercase letters for properties, and initial capitals for classes. This makes RDF easy to read for those who know this trick; consequently a lowercase class name can be very confusing, for experts and beginners alike. I’d therefore rather not introduce one into FOAF if it can be avoided. But I would like to document the IRC logging data format, and continue to use FOAF for it.

The markup also uses the wordnet:Person class from my old Wordnet 1.6 namespace (currently offline, but will be repaired eventually, albeit with a later Wordnet installation). This follows early FOAF practice, where we minimised terms and used Wordnet a lot more. I suggest Dave updates this to use foaf:Person instead. The dc:creator property used here might also use the new DC Terms notion of ‘creator’, since that flavour of ‘creator’ has a range of DC Terms “Agent” that is a more modern and FOAF-compatible idiom. This btw is a candidate for using instead of foaf:maker, which I introduced with some regret only because the old dc:creator property had such weak usage rules. But then if we change the DC namespace used for ‘creator’ here, should we change the other ones too? Hmm hmm hmm etc.

The main known consumer of this IRC log data is XSLT created and maintained by the ubiquitous Dave. If you know of other downstream consumer apps please let us know by commenting in the blog or by email.

While there are other ways in which such chatlogs might be represented in RDF (eg. SIOC, or using something linked to XMPP), let’s keep the scope of this change quite small. The goal is to make a minimal fix to the current archived instance data  and associated tools, so that the FOAF vocabulary it uses can be documented.

Comments welcomed…

Add Comment Register



  1. Chatlog vocabulary in FOAF? This is news to me, and I don’t think I like it. To me, the core of FOAF is personal online profiles. Don’t dilute the FOAF spec just because there’s a pile of legacy data. My €0.02: Fix the class name and forget about it until someone converts all this stuff to SIOC.

  2. I agree, I wouldn’t add some terms to FOAF which don’t really relate to it just because some old data has it. SIOC is perfectly fine for it and a change wouldn’t be that complicated. Any change you do to the terms will result in completely unrelated URIs anyway so for processors it’s a whole new thing.

    In SIOC and using some other new terms it would be (hope it doesn’t strip the XML):

    2008-04-03T00:05:11Z
    danbri: do you know of good scutter data for playing with codepiction? would be fun to get back into that (esp. parallelization).

  3. Given that we have Jabber/XMPP support, weblog discussion, msnChatId and group-definition mechanisms in FOAF, I would disagree that it’s out of scope; the ChatChannel class in particular. I’m also quite happy for it to go into SIOC. Proper lossless logging of group chat across IRC and XMPP would be a great project for someone to pick up btw, and perhaps with RDFa now we could have a single logs page instead of HTML + RDF in separate files.

    SIOC people, care to discuss this at your F2F? (which I may attempt to gatecrash…)

  4. I run a simple log-watcher that currently depends on the payload being in dc:description, but it wouldn’t be hard updating it to use a new property.

  5. Hi Dan – my opinion would be to do one of these:

    (1) Don’t add them to FOAF core, but rather to a module (if you like that kind of thing)…

    (2) Use SIOC core terms, as tukkah does for IRC channels #swig, #sioc, etc. here – http://tuukka.iki.fi/tmp/logindex

    (3) See if there are SIOC types terms (ChatChannel, InstantMessage) that work – http://rdfs.org/sioc/types

    Would be good to discuss with Tukkah, Richard and others if you make it here next week…