Difference between revisions of "Projects/Baloo"

Jump to: navigation, search
(Create the page)
 
(Basic Architecture)
Line 1: Line 1:
= Baloo =
+
Baloo is a metadata and search framework for KDE.
  
Meh
+
== Architecture ==
 +
 
 +
Baloo focuses on decentralization of data, and does not have any central database. At its core it is a set of 3 services -
 +
 
 +
* Data Stores
 +
* Search Stores
 +
* Relations
 +
 
 +
=== Data Stores ===
 +
 
 +
A Data Store is a place to permanently store data. Its format and APIs are not dictated by Baloo, and can in any way that is most efficient for the data in question.
 +
 
 +
=== Search Store ===
 +
 
 +
A Search Store is a plugin which provides search capabilities for a specific kind of data. Each of these stores provide a plugin which can be used to search through the data using a consistent API. At this moment there are 3 search stores that have been implemented -
 +
 
 +
* File Search
 +
* Email Search
 +
* Contact Search
 +
 
 +
Each Store can also provide custom APIs for searching the data.
 +
 
 +
=== Relations ===
 +
 
 +
Baloo can be used to create relations between two uniquely identifiable identifiers. The key aspect is that when creating a relation between A and B, both of them are uniquely identifiable. For most of the PIM data, Akonadi already provides a unique identifier of the 'akonadi:?item=x'. For File data, Baloo provides unique identifiers of the form 'file:x'.
 +
 
 +
Each relation is stored in an independent store in the desired mechanism. A sample sqlite implementation is provided which maps both the identifiers in a 2 column sqlite database.
 +
 
 +
For example, there exists a TagRelation which maps a Tag and any unique identifier. Similarly, there can be an ActivityRelation, and relations for other aspects such as mapping a file received via Bluetooth to a Bluetooth device.

Revision as of 18:42, 11 December 2013

Baloo is a metadata and search framework for KDE.

Contents

Architecture

Baloo focuses on decentralization of data, and does not have any central database. At its core it is a set of 3 services -

  • Data Stores
  • Search Stores
  • Relations

Data Stores

A Data Store is a place to permanently store data. Its format and APIs are not dictated by Baloo, and can in any way that is most efficient for the data in question.

Search Store

A Search Store is a plugin which provides search capabilities for a specific kind of data. Each of these stores provide a plugin which can be used to search through the data using a consistent API. At this moment there are 3 search stores that have been implemented -

  • File Search
  • Email Search
  • Contact Search

Each Store can also provide custom APIs for searching the data.

Relations

Baloo can be used to create relations between two uniquely identifiable identifiers. The key aspect is that when creating a relation between A and B, both of them are uniquely identifiable. For most of the PIM data, Akonadi already provides a unique identifier of the 'akonadi:?item=x'. For File data, Baloo provides unique identifiers of the form 'file:x'.

Each relation is stored in an independent store in the desired mechanism. A sample sqlite implementation is provided which maps both the identifiers in a 2 column sqlite database.

For example, there exists a TagRelation which maps a Tag and any unique identifier. Similarly, there can be an ActivityRelation, and relations for other aspects such as mapping a file received via Bluetooth to a Bluetooth device.


KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V.Legal