I’ve been hacking on the FOAF-a-Matic Mark 2 again this week after some gentle (and much needed) prodding from Phil Wilson who got so fed up with waiting for me to release another version, he went ahead and did some work on the code himself. (And why not, its Public Domain after all).
So during some travel up and down to Oxford this week, I’ve taken the time to finish off the refactoring I was doing so that I can begin making forward progress once more. I’ve removed great chunks of code which began redundant once I’d integrated Jena, and factored out the rest into reusable packages that I can, potentially, release separately.
I’ve now gotten to the point where I’m looking over Phil’s code to see how he’s tackled the loading of vCard and FOAF data. The vCard processing is pretty straight-forward and I integrated that in a couple of minutes, although I want to beef it up slightly as there’s a bit more data that could be extracted and turned into FOAF properties; I also want to support the vCard in RDF format.
Loading FOAF data should be similarly straight-forward. I think for the first iteration I’ll simply throw away properties the FOAF-a-Matic doesn’t understand. Then progressively expand the breadth of FOAF data the tool can process. That way there will be enough new code for a second functioning beta.
Phil’s attempt at FOAF loading relies on the FOAF file having a description. This is fine for round-tripping data through the tool but I want to be able to process FOAF data from elsewhere. I suspect that querying the model to ask “which person listed in the graph has friends but isn’t the friend of anyone else?” would give me the desired entry point. There are obviously problems with this approach too, especially if you’re loading a FOAF document that describes several people and their friends, but I don’t think this is significant at the moment.
And as a slight correction to Phil’s recent blog post, while I did tinker for a while with a XUL based FOAF-a-Matic I wasn’t planning to ditch thinlets completely. The XUL version would have been entirely separate and was really just an excuse to investigate the RDF support in Mozilla a bit further. However XUL frustrations meant that I’ve ditched this line of research, at least for now.
Anyway tip of the hat to Phil for the kick up the arse.