Semantic Web acronym links primer

One thing you hit pretty rapidly when you start having a look into all this Semantic Web malarkey is the number of rather silly acronyms and abbreviations. In fairness it’s true of pretty much every technical or academic discipline I’ve come across and you can ask the people I work with what I think about that - I wont ramble on here.

And dont think this is all because I’m not technical enough for ya, I have code on my blog and a faintly scary collection of technical tomes. I just think acronyms tend to breed elitism and make the world less penetrable, especially when they are often described in relation to other acronyms. So, after pointing out a problem here’s a stab at a solution; a web designers guide (with the relevant links) to my understanding of the different things involved. I’m not an expert on this yet mind, so if I’m wrong and someone more knowlegable can provide a better description then please comment. If the descriptions from the relevant links I have are good enough I’ll just use those as well.

Most people will probably have come across XML so hopefully this is an easy one. XML is the eXtensible Markup Language. For me that means it’s a set of rules for defining your own markup language; from simple data exchange formats to whole programming languages. The W3C says (which I think nicely highlights my problem from above)

Extensible Markup Language (XML) is a simple, very flexible text format derived from SGML (ISO 8879)

XSLT is another quite common tool. The W3C again defines it in relation to another acronym but this time I dont mind as much and we’ve got a defintion of XML here anyway.

[XSLT is] a language for transforming XML documents into other XML documents

This is a pretty straighforward description, the only real problem for the outsider is wondering why you would want to do that!

RDF W3Schools says is really where the Semantic Web stuff starts. The W3C start off with:

The Resource Description Framework (RDF) integrates a variety of application…

Ah. It integrates applications… What! But wait:

The RDF specifications provide a lightweight ontology system to support the exchange of knowledge on the Web

This is pretty good actually, as long as you’re happy with the word ontology. Their is a good article that takes a stab at the question from Tim Bray. I think, simply put, RDF is common set of rules for defining your own meta data (information about information) so it’s interopable with everyone else doing the same thing.

But how are we going to get all that RDF into our web pages (Semantic or otherwise)? RDFa is one possibility (not going there right now) which involves extending HTML (all varieties) with some additional attributes with the purpose of being able to embed RDF in the document. Or from the W3C:

RDFa is a syntax that expresses this structured data using a set of elements and attributes that embed RDF in HTML

GRDDL is probably the worst offender here in terms of someone spending too much time coming up with the acronym. It stands for Gleaning Resource Descriptions from Dialects of Languages. From looking it appears to be a standard way of saying:

Here be some RDF. If you want the RDF for this document please use this XSL transformation.

eRDF, or embedded RDF is a simpler approach to RDFa which involves no additional custom attributes but does not aim to be able to represent all the possible RDF constructs.

Of course their are many more, but at least that’s a start. Let me know what you think.

I'm not a Werewolf!

After the numerous games of Werewolf at Barcamp London recently a few of us got chatting about the idea of custom Werewolf cards using Flickr. Well I’ve just finished a very simple example of this and thought I’d post it up.

Definately a Werewolf

Head over to morethanseven.net/presents/werewolf for a set of printable cards based on Flickr Machine Tags.

In the future I may enhance this with a nifty interface which lets visitors select the number of each card they want - and I spoke briefly with Stefan from Moo about if it’s possible to link into printing them on those lovely Moo cards.

If you want anyone to appear just add the relevant werewolf machine tag!

Parsing ERDF

Now we’ve got some eRDF in our pages we need to extract it out in preparation for doing someting with it.

With XSL

First up we want to try and extract the eRDF in our page into an RDF document. Ian Davis has already created a nice XSL document to do just that. and I’ve implemented a nice service wrapper to extract the RDF from a given URL. Try pointing it at morethanseven.net or iandavis.com for an example of it in action. Next step here is to extend it to allow extracting a simple vcard from the RDF in a similar manner to Brian Suda’s Microformats extractor.

With Javascript

Dan Webb has recently written up his Sumo! microformas parser and boy is it really rather fancy. At the moment he’s only got profiles for hCard, hCalendar and hResume but writing profiles is relatively simple. Accoring to one of Dans comments he’s working on adding support for rel and rev style microformats like rel-tag and XFN.

Although billed as a Microformats parser, in reality what Dan’s created is pretty generic. You can use it to parse out any information marked up with any semantic class names - just like our eRDF.

I’ve set up a very basic Sumo! profile for FOAF and some simple tests to extract eRDF data from a test page. This is very much a proof of concept of extracting eRDF using Javascript but would be relatively simple to extend for the full FOAF spec once Dan or someone else extends Sumo! to support rel and rev.

On a related note the combination of Sumo! and the Firebug javascript console is just perfect. Anyone who hasn’t yet downloaded the latest version should get over there quick.

Firebug

Microformats and eRDF sitting in a tree

Following on from my previous post on eRDF I’ve started to play around with it. For anyone bored enought to have read the source of this site today you’ll have seen a couple of behind the scenes changes - specifically I’ve added a dash of FOAF.

The FOAF, or Friend of a Friend, project is:

creating a Web of machine-readable pages describing people, the links between them and the things they create and do.

I sort of see it as a bigger and more complicated older brother to XFN and hCard.

First things first, unlike Microformats, using eRDF needs a bit of setup outside just adding classes and attributes - specifically you need to add a profile to the head element of your document and then add some namespaces links into the head like so:

<code><head profile="http://purl.org/NET/erdf/profile">
  <link rel="schema.rdfs" href="http://www.w3.org/2000/01/rdf-schema#" />
  <link rel="schema.foaf" href="http://xmlns.com/foaf/0.1/" />
</head></code>

Then you’re onto the more familiar ground (if you’re used to Microformats) of adding semantic attributes. I already had the following snippet markup up in hCard, i just needed to add a few more classes (-foaf-Person, foaf-weblog and foaf-name) to existing elements.

<code><div id="iHead">
  <h2 class="vcard -foaf-Person" id="gareth">
  <a href="/" class="url org foaf-weblog">Morethanseven</a>
  <span>is where <a href="mailto:&#103;&#097;&#114;&#101;&#116;&#104;&#064;&#109;&#111;&#114;&#101;&#116;&#104;&#097;&#110;&#115;&#101;&#118;&#101;&#110;&#046;&#110;&#101;&#116;" 
    class="email fn foaf-name">Gareth Rushgrove</a> plays with the web
    </span></h2>
</div></code>

The full FOAF Specification details a huge range of other elements - everything from foaf:Project for making associations between yourself and projects you have worked on, to foaf:OnlineGamingAccount which is pretty self explanatory.

When parsed out that gives you a foaf document a little something like:

<code><?xml version="1.0" encoding="utf-8" standalone="no"?>
<rdf:RDF xmlns:admin="http://webns.net/mvcb/" 
  xmlns:doap="http://usefulinc.com/ns/doap#" 
  xmlns:dc="http://purl.org/dc/elements/1.1/" 
  xmlns:foaf="http://xmlns.com/foaf/0.1/" 
  xmlns:h="http://www.w3.org/1999/xhtml" 
  xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
  <rdf:Description rdf:about="">
    <admin:generatorAgent 
      rdf:resource="http://purl.org/NET/erdf/extract"/>
  </rdf:Description>
  <rdf:Description rdf:about=""/>
  <rdf:Description rdf:about="#gareth">
    <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"/>
    <ns_13:weblog xmlns:ns_13="http://xmlns.com/foaf/0.1/">
      Morethanseven
    </ns_13:weblog>
    <ns_14:name xmlns:ns_14="http://xmlns.com/foaf/0.1/">
      Gareth Rushgrove
    </ns_14:name>
  </rdf:Description>
  <rdf:Description rdf:about="http://morethanseven.net"/>
  <rdf:Description rdf:about="mailto:[email protected]"/>
</rdf:RDF></code>

So far I’d agree with Ben. All I’ve done is something people (including me) have been doing already with hCard. But I’ve done it in a way, using eRDF, that doesn’t in any way stop me continuing using Microformats.

Marking things up with Microformats for it’s own sake was only ever really of interest to markup junkies (including me again). It’s only when you can parse that information out that it gets more interesting. I’ve got a follow up post to this on just that subject involving some XSL, Javascript, PHP and some standing on the shoulder of giants. It will be left to a post after that when I try do something a little different.

On a related note; so far I’ve found only scattered and often overly technical and verbose documentation on eRDF and RDF in general. I’ve been adding links to del.icio.us as I find useful resources but I can see how useful Get Semantic has the potential to be if any of this is going to take off in the web standards community.

UK Web Design Meetups Map

I’ve posted a list before of events and meetups I know about around the UK but had got playing with the Google Maps API and decided to go one stage further and create a hopefully useful place to put all that info in the shape of a quick mashup.

Have a look over on morethanseven.net/presents/meetup for a hopefully useful tool. I’ll try and keep this up to date manually for the time being, so if you know of any other get togethers please leave a comment and I’ll add them to the list. Thanks to the excellent, if a little technical (well, it is Google) API documentation and Jeremy’s Adactio Austin for inspiration.

Sample map of UK Meetups

I’d like to make this even more flexible, ideally all I should have to do is point the page at the group urls and then parse out the geo-coded microformats data and then display it on the map and page, rather than duplicate this information and maintain it by hand. So if any of the owners of these sites want to geo-code up their sites and let me know that would be great. Some Upcoming integration might be on the cards too.

Hopefully it should be of some use to anyone looking for things going on in their area, or if you find yourself in a strange part of the country for whatever reasons then you’ll know how to find the local geek community without risking life and limb with an odd T-Shirt.

What eRDF can learn from Microformats

Quite a bit of time at BarCamp was spent thinking, talking and in running skirmishes about the Semantic Web. Or the semantic web depending which side you’re on.

Now I’m a big fan and perpetual user of Microformats. They make sense, are simple to add everywhere (by stealth if needs be) and the potential is pretty interesting to boot. They are designed in the open, allowing everyone to participate and have a strong emphasis on solving every day problems in the real world.

Contrast that with RDF and the Semantic Web. Most of the work here has been going on for years in academic institutions and W3C working groups. It’s all rather grandiose. Everything I’d seen previously horribly broke HTML. But someone seems to have seen the light. Tom Morris mentioned in one of his talks eRDF, which is a method for embedding RDF in valid HTML.

After one of the talks I got chatting with Tom Morris and Tom Croucher, both card carrying RDF folk, and Niqui Merret another interested bystander. Toms argument basically comes down to Microformats solve the 80% problem, RDF trys to solve the other 20%. I sort of think the Microformats group would probably agree with that. I also like the idea of creating your own formats off the cuff. I’ve seen enough to at least have a further look see and hopefully try out a few experiements myself.

Ben Ward had a few things to say on the subject which are worth a good read. I agree with the majority of his arguments but coudn’t resist commenting on at least one:

If you’re working with RDF, show me something new. Don’t just rehash vcard and icalendar into your own format; I’m not interested

I disagree. One of the best thinks about Microformats, that draw people (including me) in from the get go, is the unquestionable ease with which you can add hcard or xfn and get on with your day. Weeks or months later, after a few feel good projects you’ll be keeping an eye on the wiki when you come across something in need of structure. And even then you find it’s a composite of something you’ve seen before.

Right now I’d love to find that. A simple example of how to mark up a few very simple examples of eRDF. Hey, if that means contact details and a calendar event then so be it. If all that’s wrapped up in a lovely shiny green coat of pain with an icon logo so much the better. Until I can experiment with simple I cant do anything else, never mind anything new. So that’s two posts for the future sorted then.

Tom has set up a wiki over at GetSemantic to start to collate information together in one place which from my initial research seems like a good idea. If and when I get enough together (and the OpenId authentication is up and running) I’ll make sure to add everything there. If I get carried away and find interesting voices on the blogosphere I might event get a planet up and running. Or I might find way too much XML and leave it at that.

People I met in London

Meeting likeminded people is always good fun and the UK web conference scene provides lots of good opportunities for that. Sometimes it’s meeting up with past aquaintances or friends and other times mainly about making new contacts. Oh, and their are always a few co-worker’s in tow.

Mainly as a reminder but also as a “hello” to some of those I met down in London for BarCamp (BarcampLondon2) and Future of Web Apps (FOWALondon07) here goes with a list of some of the people, mainly colleague and a few neighbor I met on my travels:

Tom Croucher, Tom Morris, Gareth Rogers, Ben Ward, Jeremy Keith, Ben Darlow, Norm, Ian Forrester, Stuart Colville, Andy Hume, Mike Stenhouse, Pete Lambert, Lisa Price, Meri Williams, Elly Williams, Steve Marshall, Niqui Merret, Natalie Downe, Alistair MacDonald.

Between them they now have me interested in doing more with mobile messaging (SMS, MMS, Jabber), finding our more about eRDF, playing with Pipes, organising a Barcamp, getting some Moo cards, playing more with the flickr machine tags api and, oh, about a hundred and one other things including drinking beer (ok, that one was Ben). Consider that a partial list of the sorts of things I’m likely to post on over the next month or so.

If their is anyone I have yet to add to Flickr, Upcoming or Twitter hopefully I’ll find you soon or feel free to drop me a line. If I missed someone sorry, probably all the sleep I’ve been trying to catch up on.

This post brought to you by some of XFN.

Content Management Systems a go-go

Well, I’m now running WordPress. I know I appear to be aimlessly flitting between content management systems on this site but it’s more of a little research project I swear. Hopefully it’s all happening pretty seemlessly for everyone reading my ramblings. This time RSS came to the fore, allowing me to simply export a feed of all my previous posts and import them straight into WordPress. This sort of portability is very very nice for the user. I’d love to see this sort of functionality for hierachically structured data in larger enterprise systems.

I’ve got Wordpress up and running with a few choice plugins and a new theme in a couple of days which is nice. Hopefully any minor issues will be ironed out as I find them. An added bonus is comments are now back, I’ve got so many things to rave about after getting back from BarCamp and Future of Web Apps that letting anyone else point out the errors is only fair.

Useful API links

After a load of research for a couple of projects I thought I may as well add a large pile of links to a post for future reference. Feel free to wander through if your interests stretch to using scripting languages in mashups and the like.

PHP

Python

Ruby

Shiny Content Management

Well, my presentation over at the local Ruby on Rails Usergroup went down OK last Thursday. I could have done with some more time to prepare and do up some nicer slides but most of the presentation was quite hands on with me coding and talking, which was a first for me.

My presentation was basically a whistle stop tour of Radiant. I rambled on for about fifty minutes or so, quickly going through the basic concepts of Pages, Layouts and Snippets and then on to an example site which I built from scratch in front of everyone – with only a few obvious errors and obvious mistakes.

I ended up talking some about ommissions in Radiant, which I’m not sure I got across as the positive that I feel they are (at least for me). I dont want a fully featured blogging system, rather something that’s easy enought to jump into somewhere and see how it works. A few ideas came up from this discussion that, given the chance, I’ll mention on the Radiant mailing lists, or give them a go myself – like the ability to save configurations of pages, snippets and layouts and then load then instead of one of the three default prepopulation options. Though I’m busy modding the Radiant commentable behaviour and pondering a move to the Mental release candidate at the moment.

It at least got me back in to presenting to an industry audience, quite different from the teaching I’d been doing. Hopefully a good thing ahead of BarCamp in a weeks time.