December 15, 2003

XFN

Bryce Benton just posted to rdfweb-dev pointing out the arrival of XFN (XHTML Friends Network) and in particular a document from CSS-guru Eric Meyer constrasting XFN and FOAF. Thought I'd post a few thoughts and (hopefully) constructive comments.

Firstly I'm impressed by it's elegance: annotate a few links with an extra attribute with values from a controlled vocabulary and there you go. I imagine it's going to spread pretty quickly through blog-land.

Secondly they're tackling an issue head-on that FOAF has so far largely skirted by using a very vague sense of "knows": describing interpersonal relationships. While they've set boundaries there are still a lot of different ways to assert relationships; it'll be interesting to see how that plays out.

It's on the topic of relationship typing that I'll make my first correction to Meyer's article. While strictly speaking he's correct that FOAF ...does not have a defined way to represent any relationship other than "friend"...which could potentially limit its uses in situations where the participants in a FOAF network may not all agree on what it means to be a "friend.", FOAF doesn't preclude defining more detailed relationships types. Indeed Eric Vitiello has done just that with the FOAF relationship module. It would be trivial to create an alternate module based on the XFN relationships or extend Eric Vitiello's schema with the additional relationships. This is one area where FOAF and XFN can clearly benefit from each other.

The very general nature of the FOAF "knows" relationship is an explicit design decision. Defining a machine-processable format that encapsulates the intricacies of inter-personal relationships, however generally, isn't a problem that the FOAF vocabulary was designed to solve. While foaf:knows allows the creation of social networks it also, and more importantly in my opinion, provides an RDF hyper-linking mechanism making it easier to aggregate metadata. Like XFN, FOAF is designed to be highly decentralised.

The main thing I find unusual about XFN is that there's no "me" there. I can define my relationships to others but nothing more. A spider aggregating XFN data can only define "me" by the sum of the relationships that others have claimed about me. There's no way for me to throw additional metadata into the mix. This is where FOAF clearly surpasses XFN, as Meyer acknowledges.

FOAF has potential in more areas than simple blog-rolling and that includes enabling applications to discover much richer forms of relationships. In XFN I'm directly involved in all of the relationships: I've met someone, someone is my friend, someone is my colleague, etc. Interesting data to be sure, but limited. Personally I'm interesting in enabling the discovery of "emergent" relationships: people with common interests, people attending the same events, etc. There's an element of serendipity inherent in that which I think is lacking in XFN; it feels insular to me.

XFN assumes that the destination of the annotation link is a URL that uniquely identifies the person. Assigning URIs to people is still an open source of debate, which I won't rehash here. Suffice to say that things aren't that simple: people have multiple accounts and home pages and it can be tricky to disambiguate these. However for XFN's target audience and applications this may well be a reasonable trade-off.

One source of confusion for me in Meyer's contrast of XFN and FOAF was this comment: [FOAF] can also be included into a document written in another markup language as comments within that language, although this practice is not universally accepted. That's certainly true but it'd be an odd way to go about mixing vocabularies. From an HTML page I'd probably use autodiscovery to associate it with a FOAF file. It's also possible to say that "I Made This" using the foaf:maker element inside a meta tag. But I'd probably just mix FOAF with other vocabularies directly; there's no need to hide it away in comments except in HTML where the content would be visible. But this is hardly a failing of FOAF.

The final point from Meyer's article that I feel moved to comment on is the assertion that because one can make statements about another person using FOAF that [t]his opens the possibility of flawed personal information entering FOAF-space, and purging it with better information may be difficult or impossible.. This first assertion here is true and this concern has been previously raised by Shelley Powers. I discussed some of those issues in an earlier posting.

What is not true is that purging the system of flawed data is necessarily difficult or impossible. If FOAF applications store provenance of their data then it will be possible to build a web of trust. If they don't then the situation is no worse than with XFN which also has no built-in notion of trust or signing.

To summarise: In this posting I've tried to provide some comments on XFN suggesting areas where it and FOAF can complement one another, whilst highlighting some minor inaccuracies in Meyer's constrasting of the two technologies. My ultimate aim being to promote discussion. There's a lot of interesting issues and challenges in this area, tackling on more than one front seems like a great idea to me.

Posted by ldodds at 09:16 PM | Feedback? | TrackBack

RDF Syntax: Profiling and Styling

Dorothea recently wrote a rant about the RDF syntax in which she rails against the suggestion from some RDF advocates that the syntax is unimportant: it's the model that counts.

Dorothea notes that: ...only a few people actually create models—vastly more people have to work on a pure syntax level with the models other people create. The model-creating people are pretty happy with RDF (I assume, or it wouldn’t still be around). Everybody else isn’t.

Her posting made me wonder whether this frustration is down to the basic elements of the RDF syntax, e.g. the element and attribute names, or it's inherent variability: that there are multiple ways to encode the same data using slightly different syntactic structures.

I'm guessing -- and I'm hoping Dorothea will step in to correct me here -- that most of frustration is because of the variability. That's certainly the cause of much griping from hackers keen to use plain old XML tools on RDF data. The variability defeats any attempt to use, e.g. XSLT, without an initial normalization step.

But this doesn't mean that we have to throw out the syntax entirely. We can achieve some common ground by creating syntactic profiles. A syntactic profile is an RDF format constrained to only use certain features of the RDF syntax. Introducing these constraints makes the profile amenable to processing with plain XML tools whilst retaining the ability for it to be processed as full RDF. RSS 1.0 is just such profile but possibly not the most elegant example.

I recently conducted some experiments, prompted by Dan Brickley, to create some profiles of FOAF which is a pure RDF vocabulary. I used some simple Schematron schemas (partly generated from the FOAF RDF schema) to validate FOAF documents.

The same technique could easily be applied to other vocabularies (or mixtures of vocabularies) very easily. And there's no reason not to use another schema language; I chose Schematron because it's open by default -- anything not prescribed is permitted -- which I found an easier starting point when carving out a restricted syntax.

The one problem with syntactic profiles are that they need to be obeyed by data producers using pure RDF tools. Otherwise data can't flow both ways. This requires some care on the part of the developer and help from the underlying API. Jena 2 has greatly improved control over RDF output which I've been exploiting to make my own output at least readable, if not necessarily "XML processable". (Although I've still found that small changes to the graph can radically alter Jena's output, so it's not 100% there yet).

Elsewhere I see that Dave Beckett has published a pre-print of a paper called "New Syntaxes for RDF" which: ...reviews syntaxes for RDF as defined in RDF Model and Syntax W3C Recommendation including RDF/XML as updated by the RDF/XML Syntax Specification (Revised) and describes the problems that remain after the revising. These include not clearly showing the RDF triple model and not working very well with newer XML technology such as XSLT and W3C XML Schema (WXS).

So I think that problems relating to the user-friendliness of the syntax are being considered.

I'm interested at the moment in how I can visualise RDF graphs. Not as navigable graphs in the same sense as GSS but just simple web pages. For that I think I'm going to try out Norman Walsh's RDF Twig (plus Extreme Markup Languages 2003 paper). But there are others to explore.

Posted by ldodds at 02:28 PM | Feedback? | TrackBack

Nice Big Graphs

My first interesting find via Minding the Planet which I added to my aggregator today courtesy of Dave Beckett is The Opte Project, "mapping the internet in a single day". No doubt everyone and their uncle have already seen this, but it's new to me.

Some gorgeous graphs generated using Large Graph Layout, "a compendium of applications for making the visualization of large networks and trees tractable". Wonder how it'd cope with some FOAF data?

The file formats don't support bi-directional linking, so reciprocal foaf:knows relationships would have to be highlighted with different weights. It'd be fun to try different colour schemes, e.g based on shared interests, affiliations, or other clustering mechanism.

I've played with the Touchgraph LinkBrowser a bit for visualising raw RDF graphs (hooking up a Jena Model Event handler to create nodes; only took an hour or two), but things get messy pretty quickly. The basic link browser seems limited in what styling you can apply to nodes. I think the Googlebrowser is slightly more sophisticated, but the source isn't available from the site; the Semaview FOAF browser is based on that version of the code, I believe.

Posted by ldodds at 01:37 PM | Feedback? | TrackBack

My Light Cone

I just noticed on Interconnected that Matt Web has created a little utility to generate your own personal light cone as an RSS feed.

I've only just recently heard of the concept of a light cone, one of many interesting facts I've learnt whilst reading Impossibility by John Barrow.

You can visualise it as a simple X-Y graph. The X-axis is space and the Y-axis is time. Any given point in space-time has both a past and a future light cone.

Light Cone

A past light cone represents the space from which light can be received at a given point in space-time. The future light cone represents the space that will eventually be filled by light emitted at that point.

Light cones are described in Impossibility because Barrow observes that the visible universe is described by just such a light cone. The inflationary universe hypothesis means that the actual universe is much larger but we can never get to see it, as our horizon is only expanding at the speed of light. All our observations of the universe are limited to those phenomena that are within our light cone and there's little reason to assume that what we see is representative of the universe as a whole.

Matt Webb's utility allows you to calculate the light cone starting from your birth date (any date, actually) out to the first 50 light years. Here's mine, apparently 12 Ophiuchi will be within my lightcone in about three months time.

Makes you wonder what else is out there doesn't it?

Posted by ldodds at 01:15 PM | Feedback? | TrackBack

December 09, 2003

FOAF-a-Matic in Korean; Fun With Statistics

Thanks to the kind efforts of Minsu Jang the FOAF-a-Matic is now available in Korean. I'm really pleased.

With the tool now available in ten languages I thought it might be fun to estimate what the potential user base might now be.

With a bit of googling I found this localization guide. The statistics include figures for the number of people using the internet primarily in a given language. This is distinct from the number of people who actually speak the language (either as primary or secondary users), and those who are multi-lingual and may prefer to browse in another language, e.g. English.

The figures are shown in the following tables. The first sorted alpabetically, the second by population size. Each language is linked through to the entry in the globalization guide if you care to dig around some more yourself.

LanguageMillions of Users
Danish3.23
English228
French22
German38.6
Greek1.6
Italian20.2
Korean25.2
Japanese52.1
Spanish40.8
Swedish6.2
Total437.93

And now by online population size:

LanguageMillions of Users
English228
Japanese52.1
Spanish40.8
German38.6
Korean25.2
French22
Italian20.2
Swedish6.2
Danish3.23
Greek1.6
Total437.93

Do I think over 400 million people are going to sit down and create themselves a FOAF file using the tool? Of course not, but I find this interesting reading, not as a chest-puffing exercise -- the translators did all the hard work, not me -- but as graphic indication of how localizing an application can vastly increase it's potential userbase.

If you want to help there are a lot more languages on the list and the instructions are straight-forward.

Posted by ldodds at 01:52 PM | Feedback? | TrackBack

December 08, 2003

Enchanted Wood 2003

Westonbirt Arboretum is rapidly becoming one of my favourite places for a family outing. I love walking in a wood and with the diverse range of tree in their collection there is plenty to appreciate throughout the year.

Around Xmas time every year they rope off a section of the Old Arboretum to make a one mile long illuminated trail -- The Enchanted Wood.

Blue Spotlight TreeThe trees are lit up with different coloured spotlights, some of which are even set-up to switch on and off automatically in a fixed pattern. The effects are amazing it's a really magical evening out. This year is the third time we've been, which means it's rapidly becoming a Dodds Family tradition.

This year was the first that Ethan was really old enough to fully appreciate it. Tightly bundled up in many layers of clothing he enjoyed a happy hour or so wandering around the trail with us, patiently waiting whilst Daddy played with the many settings on his new camera trying to take some decent photos.

This year the illuminated trail was also combined with a sculptural art exhibition, The Exhibition of Light, celebrating the use of light within art.Wooden Horse Sculpture

It was a fantastic evening out and really put us all in the Christmas mood, although Ethan has been getting steadily more excited without much encouragement from us.

The results of my amateur photography were pretty mixed, but I had fun which was the main thing. These are the photos I was most pleased with.

During the summer the Arboretum also held a garden festival which featured some fantastic concept garden designs. I'll upload those photos soon.

Posted by ldodds at 09:28 PM | Feedback? | TrackBack

Martha

I suddenly realised I've not really posted any pictures of Martha. So here's one to be going on with.

Martha Dodds

Posted by ldodds at 08:40 PM | Feedback? | TrackBack

Pining For University

Every year come October I get this overwhelming urge to go back into education again. I loved being at university as both an undergraduate studying Biology and as a postgraduate studying Computing, and freely admit to pining for the mental stimulation that full-time education brings. And yes, the lazy mornings and impromptu mid-week drinking sessions, but that's another story...

So, come October I always wonder what I might have done if I'd continued on with my education. I'm still adamant that one day I'll take a crack at a Ph.D; perhaps when the kids are older and I can get them cleaning chimneys to bring in a few more shiny pennies.

I'm not 100% certain about what I'd like to study although something that mixes Biology and Computing would be a good blend of my interests and skills. I'd certainly want to make use of the computing knowledge I've accumulated, so failing a multi-disciplinary course a straight computing course would be the most likely.

With said urge at the back of my mind, I was interested to discover this week that Oxford University runs a modular, part-time Msc in Bioinformatics which seems tailored to someone in full-time employment admittedly related employment, but I doubt that would be a big hurdle. They also run a short course in bioinformatics starting in February which looks like it'd be a good taste test for the full course.

At only three days it wouldn't impact my job too much (and that takes me to Oxford one day a week anyway). It's fairly expensive though. Mind you I'd sooner pay for that kind of training than anything "professional". I know people doing various Java Certification courses and for the life of me I can't work out why. Personally if I'm interviewing someone and they can show me some code that I can look over for myself, maybe something they've released as open source (or contributed to an open source project), they're much more likely to score points that someone who has answered a bunch of multiple choice questions.

Now to check in with the bank to see whether I can afford the training.

And then with the wife to see whether I can really afford it!

Posted by ldodds at 03:47 PM | Feedback? | TrackBack

December 05, 2003

Unit Testing PL/SQL

For my sins I've been writing a bit of PL/SQL recently. It's been nearly 4 years since I had to do that in anger and predictably I've forgotten way more than I remember. At the time I was responsible for redesigning the database for a Laboratory Information Management System used by researchers at Pfizer looking for new drugs. After redesigning the data model I had to write code to port from one to the other. That was a lot of code, and required a lot of testing. Fun project though, and an interesting application.

Of course now I know all about test driven development and the first thing that occured to me was: "how do I test this stuff?".

As most of what I've been doing at the moment is just simple functions (data clean-up stuff mostly) I've been able to get away with a simple 3 column table containing original, generated, and expected data columns. I can then do a single UPDATE statement to process all rows, and a single SELECT to query any rows where generated != expected. Good enough for most simple testing exercises I think.

However via InternetAlchemy I came across the utPLSQL project today. Which looks suitable for more detailed testing of PL/SQL procedures.

And as I fear there may be more PL/SQL development, along with testing of a large scale data migration in my future, I think it's going to be pretty useful.

Posted by ldodds at 04:41 PM | Feedback? | TrackBack

Connect The Dots

Let's see...

What's the connection between all these things?

Easy it's the people: People have blogs. People have interests. People attend conferences. If you describe these people using an extensible format including event data then much of the above can be automatically generated. There's even some existing code in the form of Matt Biddulph's Chumpologica.

The only piece that I believe is missing is a service that runs a Scutter across the available data and builds appropriate views.

The general idea of easy group forming isn't new, of course.

The interesting thing to me is that most (all?) of the efforts in the list above involve a process in which the community has to become large enough to recognise it has an identity ("Java Bloggers", "XML Conference Attendees", "PHP Users"). Recognising it has identity it then seeks a place to congregate; somewhere to be seen. This then requires a sign-up/opt-in/barn-raising effort to build that space.

Using FOAF and other semantic web tools, that space can build itself. Right alongside the community.

Posted by ldodds at 01:57 PM | Feedback? | TrackBack

FOAF-a-Matic In Italian

Thanks to the efforts of Fabrizio Tarizzo the FOAF-a-Matic is now available in Italian. That brings the total up to 9 different languages.

Thanks Fabrizio!

Posted by ldodds at 01:10 PM | Feedback? | TrackBack

XForms Freebie

First Eric van der Vlist makes his RELAX NG book freely available, and now Micah Dubinko has done the same with XForms Essentials. (found via Cafe con Leche). Excellent. Is this a new trend for O'Reilly I wonder?

I've been specifying a number of XML APIs (RESTful of course) recently and it'd be nice to front those as easily as possible. I've played with various Java toolkits that render UIs from XML descriptions already (e.g. Thinlets) it's high time I took a closer look at XForms, especially if I can generate both a browser and desktop based UI. (Anyone used Xybrix?).

Micah has previously suggested that it'd be relatively easy to create the FOAF-a-Matic using XForms. That might make an interesting test bed.

Anyway definitely more Xmas reading for yours truly.

Posted by ldodds at 11:47 AM | Feedback? | TrackBack

The Man Who Loved Only Numbers

I enjoyed reading Mark's infinite hotel posting today. I've recently finished reading "The Man Who Loved Only Numbers", a biography (actually more of an oral history) of the mathematician Paul Erdös.

Erdös is famous in mathematical circles for both his genius and his productivity. So much so that a low Erdös Number is a badge of honour amongst mathematicians. If you've got an Erdös Number of 1 then you collaborated with him directly; your number if 2 if you've collaborated with a collaborator, etc. The collaboration graph data is published if you're interested. (I've been playing with it a bit recently).

The Man Who Loved Only Numbers is an excellent book, apart from the joy of discovery the wonderfully eccentric Erdös, the book covers a lot of interesting mathematical research and discoveries. Cantor's work on infinite sets is amongst them.

The book provides some glimpses into how mathematical research is carried out, and the enthusiasm that mathematicians have for their subject. I wish I'd read this whilst I was at school, maybe then I'd have had more enthusiasm for the subject

Anyway if you enjoyed Mark's posting then you'll enjoy The Man Who Loved Only Numbers. It's a great book.

Posted by ldodds at 11:24 AM | Feedback? | TrackBack

December 02, 2003

The Hardiman

Flipping through New Scientist again this week I came across a short piece describing the WL-16 robotic walking chair, which is apparently all the rage in robotics at the moment. You can read more about it here, but the WL-16 isn't a particularly exciting robot in my book: the first version suffers from the "Dalek Problem" for pity's sake!

I was more interested in the last paragraph of the piece:

The first robotic creation designed to carry a person was Hardiman, a super-strong weightlifting robotic exoskeleton developed in the US by General Electric in 1968. It was so powerful it was never turned on with a person in it, for fear of what it might do if it went wrong.

Tantalising wouldn't you say?

I instantly had an image of a powerful robotic suit gathering dust in an old warehouse somewhere, waiting for a super-hero (or villain?) to discover it. Or maybe I've just overdosed on super-hero films this year. Still it was worth a bit of Googling to find out some more.

As you might expect the reality is much less romantic, but I uncovered some fun articles along the way. How Stuff Works gives the Hardiman a mention in their "How Exoskeletons Will Work" article, while "Dances With Robots" from Science News Online covers exoskeletons as well as personal flying machines.

Like most of the pages I came across these articles prominently display concept sketches from DARPA that show their "vision" of what their research projects will produce.

This gem of a page puts things into context though.

Seems like the New Scientist author was enjoying a smidgen of artistic licence too. Most mentions of the Hardiman point out the impracticality of it's extreme weight and power consumption. And apparently General Electric only ever got one arm working.

So, still no super-powers for me then. I'm keeping a close eye on the kids though, just in case.

Mind you Science may still yet provide some consolations.

Posted by ldodds at 10:36 PM | Feedback? | TrackBack