ANNOUNCE: Xesam Specification v1.0

Mikkel Kamstrup Erlandsen mikkel.kamstrup at
Sat May 2 06:16:30 PDT 2009

Hi world,

After many delays and flamewars  I am very proud to announce the first
stable version of the Xesam specification. You can read the
specification online at: (direct link: Unfortunately there are no PDFs up
yet, I am working on this.

This release brings some changes compared to the two pre-releases that
aims to amend some (and only some) of the issues that was unearthed
during the Desktop Search hackfest in Berlin, Sept. 2008. For some
background on this please see:

The tools, libraries, and server backends has not caught up with this
latest release yet. With some luck and and lots of hard work these
things should start trickling soonish. The XDG-readers probably need
to follow the Xesam mailing list to follow this progress if they are

What is Xesam?
Xesam is short for eXtEnsible Search And Metadata and is an umbrella
project with the purpose of providing unified APIs and specs for
desktop search- and metadata services. We are collaborating with
several projects such as Tracker, Strigi, Beagle, Pinot, Recoll, and

Currently Xesam consists of four components:

 * The DBus Search API
 * An XML query language
 * A search language targetted at end users
 * A collection of ontologies for describing the data objects on a
modern computer

In the future we'd also like to provide:

 * An API for querying more detailed statistics from the search
engine's index (such as term- and field counts)
 * An API for storing an retrieving metadata
 * A more inspiring website :-)

Xesam 2.0 and Compatibility
The first version of a standard is very rarely perfect and Xesam is no
exception. There is already active work on a version 2.0 of Xesam, and
we can already say now that version 2.0 will not be compatible with
Xesam 1.0 (although it will be possible to write a conversion layer,
if one can accept the performance hit). The changes that are being
considered are:

 * Switch to Nepomuk ontologies
 * Change query language to one that can better leverage the power of
a semantic, graph-based, metadata storage. Sparql is currently the
primary contender
 * Switch the Search API to be stateless and optimized as to reduce
bus roundtrips, see some very rough drafts at:

It is my expectation that we can design the index- and storage- APIs
(mentioned as future tasks above) in a way so that they will work both
on Xesam 1.0 and Xesam 2.0.

I would like to thank everyone who has commented, criticized, helped,
punked, and otherwise been awesome for bringing us this far! Here's to
the future.


More information about the xdg mailing list