WasabiDraft2

Wasabi Draft 2

<!> <!> This page is obsolete and not meant for public evaluation, please refer to WasabiAbout.

This is the second draft in the Wasabi project. The first one can be found at WasabiDraft.

The purpose of this draft is to layout some loose guidelines for what needs to be agreed on. Please keep the discussion in overall lines instead of technical details.

Search Language

Some XML based query language. To have something to call it for now let's call it WQXML, Wasabi Query XML. Preferably this should be some known standard. The catch here is that this query language should be suitable for both text querying and metadata querying.

Simple Search Language

In addition to the WQXML there is also a simple search language, call this WSQL for sake of the example. This language is tailored toward end users. Any query in WSQL is transformed to WQXML before it is send of to the search engine. All the search engines see is WQXML. There is some functionality in the Wasabi lib/daemon to help applications translate WSQL -> WQXML.

The purpose of the WSQL is to allow applications to utilize the search engines in a dead easy way. Just have a text entry somewhere and, translate the text into WQXML with one call, and dispatch the query with a second.

A music application could add a small tweak to the WSQL before translating to WQXML, fx. add a modifier to restrict searching to audio files.

MikkelKamstrupErlandsen: I would like to propose something like the language sketched out in WasabiDraft as the WSQL.

Search Manager

There is a simple platform independent library of methods for hooking up with the search engine, and an accompanying daemon providing a dbus api to a subset of the library. The methods below marked with DBUS are exported by the wasabi daemon.

DBUS: GetInterfaceProvider (in: s iface_name)

[SebastianTrueg]: This is functionality provided by the NEPOMUK backbone library and registry. I would love to see the Wasabi manager be merged into Nepomuk, so the desktop search could become a Nepomuk service. At least we should use a consistent interface. In Nepomuk the call is discoverServiceByType(in: s typeUri)

DBUS: SimpleQuery (in: s simple_query, out: s query)

QueryConstructionHelper1 (in: s query)

QueryConstructionHelper2 (in: s query)

QueryConstructionHelper3 (in: s query)

Implementing Wasabi Interfaces

There are two ways to hook up to Wasabi. An application can either implement a dbus interface like fx. org.freedesktop.search.simple defined below, and have wasabi know about it in yet-to-be-defined way.

The second option is to implement a real library with some also-yet-to-be-defined plugin api (yes a real lib - no dbus), and have Wasabi know about that. Request on Wasabi to fx. GetInterfaceProvider ("org.freedesktop.search.simple") would return the object path to the Wasabi daemon and the Wasabi daemon would proxy the dbus calls for the lib.

[SebastianTrueg]: Again, NEPOMUK already provides service registration and discovering. We also have a client library (for now only QT/C++) which provides easy access to the services without any DBUS knowledge.

org.freedesktop.search.simple

There should be a dead simple dbus api for easy application adoption. This api is targeted towards applications where searching is not the primary feature, or search applications having mainly one single entry where the user types a search string in. This api could resemble that found in WasabiDraft.

org.freedesktop.search.full

Full blown search api.

org.freedesktop.metadata.*

MikkelKamstrupErlandsen: This is just to warn people that I think we should define interfaces for metadata handling as well at some point in the future. This does not necessarily have anything to do with desktop indexers.