Xesam (eXtEnsible Search And Metadata ou recherche et métadonnées extensible) est une spécification promue par freedesktop.org qui vise à fournir un framework unifié pour la création de moteur de recherche de bureau : elle définit à la fois l'API exposé par les daemon l'implémentant ainsi que le protocole pour les interroger.
Xesam a tout d'abord été créé sous le nom Wasabi en par Mikkel Kamstrup Erlandsen, puis renommé[1] à cause de problèmes juridiques avec Wasaby System. Différents projets libres participent à ses spécifications. Parmi eux, Strigi et Beagle sont les plus avancés dans l'implémentation du standard[2],[3].
Après une longue période de gestation, la version 1.0 a été annoncé en [4].
L'API Xesam se base sur le système de communication inter-processus D-Bus ce qui lui permet de maintenir une séparation entre serveur et client, permettant ainsi le remplacement de l'un de ces éléments sans avoir à modifier l'autre. Cela permet d'utiliser la même application avec n'importe quelle implémentation de Xesam (par exemple, à la fois avec KDE et GNOME) et d'être ainsi utilisable avec différents environnements.
Les requêtes du client vers le serveur sont au format XML, les champs étant décrit dans l'Ontologie du projet[5]. Il existe deux types de requête :
La plupart des communications définies par l'API sont asynchrones, ce qui garantit que le client (principalement dans le cas d'une interface graphique) ne sera bloqué pendant la recherche.