Aug 11

iPhone cycle mount mark one

Here is mark one of my iPhone mount. It comprises some closed cell foam from server packaging, some Velcro pop riveted to a small piece of hardboard, and an old light mount bolted to the hardboard. The foam is cutaway inside to provide a space in which the iPhone in an aquapac can sit snuggly. Being mark one, this isn’t elegant, but it is functional, and did excellent service on the way to work this morning.


Jul 11

Pictures from Segovia and #sssw11

Here is a selection of photos from Segovia. This evening trip was organised by the 8th European Summer School on Ontology Engineering and the Semantic Web. First we had a tour of Segovia, followed by Cochinillo (roast suckling pig) at Resturante José Maria.

Jul 11

Winning Video from #sssw11

One aspect of the mini-projects at #sssw11 was to create a one minute video that was both humorous and contained reference to some innovative semantic technologies.

Our Mini-Project team, Don’t Move the Plants was intrigued by the signage in the residencia, so took that as our inspiration.  It is worth noting that all the text translation seen in the video is as translated by Word Lens, an iPhone app which translates words right before your eyes.

Don’t Move the Plants comprised myself, Esther Lozano, Andrea Nuzzolese, Ferdinand Dhombres and Luca Greco.

I’m at risk of over explaining the joke, so here is our winning entry.

Jun 11

Running Jena Eyeball on Mac OSX

A HowTo for running Jena Eyeball on Mac OSX.

  1. Download the eyeball package somewhere convenient.
  2. Create the following script somewhere convenient, then add it to your PATH.
    # script to run eyeball on a file or files
    for file in $FILES
    echo "======================================="
    echo "    Checking $file"
    echo "======================================="
    java -classpath "$CLASSPATH" jena.eyeball -check $file
  3. You may want to tell Jena what schemas you are using. I did this by downloading all the schema rdf or n3 files I could find to the {eyeball_install_dir}/mirror direectory, then adding the following to the end of the java command line:
    -assume owl dc-all `ls $FILEBASE/mirror/*`

    This means that we don’t get so many ‘predicate not declared’ messages when we will only ignore them.

Don’t you just love Java and its classpath loveliness… NOT.

May 11

Installing 4Store on MacOSX

Having got on fairly well with installing swiftOWLIM, I thought it would be a good idea to have a go with 4Store.

  1. Download the disk image.
  2. Open the disk image and copy the app to your Applications.
  3. Run the app.
  4. A terminal window will open which has the 4Store command-line tools in it’s path.
  5. Create a database (instructions): I went with the basic command.
    4s-backend-setup mystorename
  6. Load some data (instructions): here I wanted to load multiples so used the command:
    4s-import mystorename `ls /path/to/ntriples/*.nt`

    Some few minutes later (really not very long at all), my 18 million triples were loaded at a rate of something like 55,000 triples per second!

  7. Set up a SPARQL endpoint (instructions). 4Store has an internal soft limit on SPARQL queries to protect you from expensive ?s ?p ?o queries and other expensive query types. This defaults to 1000, but I wanted to alter that so I could run some queries which I knew were going to be inefficient due to the structure of the data I am working with. As this is my dev machine, I decided to just turn the soft limit off for all SPARQL endpoints that I create. Therefore I created a config file in /etc/4store.conf
    sudo vi /etc/4store.conf
        soft-limit = 0 #disable soft limit.

    Then started the SPARQL http server endpoint on my chosen port.

    4s-httpd -p 8000 mystorename
  8. All done. and running expensive queries that return pretty fast.

This has to be the easiest setup of a triple store yet.

Mar 11

Installing pho on ubuntu

Pho is a ruby gem for working with the Talis Platform written by a colleague at Talis, Leigh Dodds.

Having only just installed this on my home machine, I thought I would document how I did it ready for the next time.  There is a good chance I did something wrong which meant that I had to install some extra dependencies for the talis_store script (which is what I wanted pho for), but I don’t know enough about ruby to say what.

$ sudo apt-get install ruby
$ sudo apt-get install rubygems
$ sudo apt-get install ruby1.8-dev
$ sudo gem install pho

Then I wanted to find the executable talis_store because it wasn’t in my path.

$ sudo find / -name talis_store
$ ln -s /var/lib/gems/1.8/bin/talis_store ~/bin/talis_store

Then when running talis_store I had to work through an additional few unmet dependancies.

$ sudo gem install rdf
$ sudo gem install rdf-json
$ sudo gem install rdf-raptor

All done 🙂

Jan 11

Commandline twitter revisited

Previously I scraped together a little bash script to post tweets to twitter.  At the time it was just a bit of fun.

Now it’s serious.

Twitter no longer allow basic authentication, so you need to use oAuth or something else. No more posting with cURL.  Luckily there is a command line tool, twurl (installed as a ruby gem), which allows posting from the command line.

So, using twurl, I now have an a perl programme which notifies me if it has been killed or otherwise come across some error condition. I can even get the tweets sent to my phone via SMS using the normal twitter functionality to do this.

Jan 11


I am at my most creative when I have a deadline (blind panic is a wonderful enabler).

Sometimes I can feel overwhelmed by all the possible things I could spend my time investigating. I need focus as an impetus to my creativity.

My new role at Talis is giving me the impetus I need, and giving me the opportunity to invent madly. Who new that after graduating with an art college degree I would end up working with computers and writing code in various computer languages to manipulate data? I am intrigued by the way that we can become something entirely different through only a few small changes – like one of those puzzles where you change one letter at a time to come up with several new words with entirely different meanings.

Consulting in the field of Linked Data is exciting. It is so new that there are new ways of doing things to be discovered. Each project we take on is likely to throw up some stuff we haven’t had to solve before, some new challenges or ways to approach a solution.

Roll on twenty eleven.

Oct 10

Watching the semantic web come alive

I am sitting in a meeting room at work and watching our CTO Ian Davis bring the semantic web to life.

Clipper uses javascript ‘recognisers’ to spot properties and classes in RDF data returned from queries. So if Clipper sees a pair of lat/long coordinates, it shows a map.  If the results of a search also include some map data? The recognisers are already there and they just show the points on a map.

So, people introduce new ontologies that describe things. Other people write ‘widgets’ that know what to do with certain properties. If the people who write the ontologies re-use properties that other people have written widgets for, then half the work of visualising the data in the new ontology has been done.

It lives.

Oct 10

Blog-in-Blog: versions in the wild

Blog in Blog: breakdown of versions in the wild

Looking at the download statistics for my WordPress Plugin Blog-in-Blog, (over 15,000 downloads so far whooo!) I see that WordPress is now giving me a breakdown of which versions are still out and running in the wild.  This is interesting.  Most people are using a more up-to-date version – but only just.

I wonder if the picture reflects a quarter of internet users who are always (perhaps obsessively) updating their plugins; a quarter who regularly update their plugins, and the rest who may or may not update plugins.

There’s actually probably a hundred and one reasons why people aren’t using the latest version. If it’s because you are having issues with a new version, then let me know and I will fix it!