Development/Tutorials/Metadata/Nepomuk/NepomukServer: Difference between revisions

From KDE TechBase
No edit summary
(Added documentation for the nepomuk service dbus interfaces.)
Line 11: Line 11:
The Nepomuk Server is a daemon which hosts all Nepomuk service including the main Nepomuk data repository. In normal operation it is started through KDE's autostart feature when logging into KDE. Starting it manually is as simple as typing "nepomukserver". This will start the daemon and all services.
The Nepomuk Server is a daemon which hosts all Nepomuk service including the main Nepomuk data repository. In normal operation it is started through KDE's autostart feature when logging into KDE. Starting it manually is as simple as typing "nepomukserver". This will start the daemon and all services.


The main repository is an RDF database using [http://soprano.sf.net Soprano] including a [http://api.kde.org/kdesupport-api/kdesupport-apidocs/soprano/html/namespaceSoprano_1_1Index.html Soprano full text index]. The interface of the repository is exported via DBus (The DBus interface is defined by [http://api.kde.org/kdesupport-api/kdesupport-apidocs/soprano/html/soprano_server_dbus.html Soprano]). When using the Soprano DBus interface from within a KDE application there is no need to bother with QDBus. Soprano provides the [http://api.kde.org/kdesupport-api/kdesupport-apidocs/soprano/html/classSoprano_1_1Client_1_1DBusModel.html Soprano::Client::DBusModel] class which wraps all DBus communication into a nice [http://api.kde.org/kdesupport-api/kdesupport-apidocs/soprano/html/classSoprano_1_1Model.html Soprano::Model] interface.
Services are started as separate processes via the service wrapper application "nepomukservicestub". This design descision has been taken to enhance the stability of the Nepomuk system. Services are implemented by subclassing Nepomuk::Service and exporting it like any other KDE plugin. [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk/html/classNepomuk_1_1Service.html The Nepomuk::Service class documentation] explains this in detail.


There are two ways to access this wrapper model:
With kdebase a set of default services are installed. Most notably the storage service which hosts the RDF database used to store all Nepomuk-related data. [[Development/Tutorials/Metadata/Nepomuk/NepomukServices|Nepomuk Services]] explains the services in detail.


1. Use [http://api.kde.org/kdesupport-api/kdesupport-apidocs/soprano/html/classSoprano_1_1Client_1_1DBusClient.html Soprano::Client::DBusClient] to create a connection to the Nepomuk Server:
===Using the Server===


<code cppqt>
The Nepomuk server is registered as a DBus service at ''org.kde.NepomukServer'' and provides three DBus interfaces: The service manager, the legacy storage bridge, and the standard configuration interface.
Soprano::Client::DBusClient* client = new Soprano::Client::DBusClient( "org.kde.NepomukStorage" );
Soprano::Model* model = client->createModel( "main" );
</code>


The Nepomuk Server registers as DBus service ''org.kde.NepomukStorage'' and the name of the main data repository is ''main''.
====Service Manager====


2. Use the Nepomuk library, i.e. [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk/html/classNepomuk_1_1ResourceManager.html ResourceManager] to access the main model:
The '''Service Manager DBus Interface''' named ''org.kde.nepomuk.ServiceManager'' and exported at ''servicemanager'' provides methods to start and stop services, to list available or running services, and to request some basic information about services:


<code cppqt>
<code>QStringList availableServices()</code>
Soprano::Model* model = Nepomuk::ResourceManager::instance()->mainModel();
</code>


The advantage of the first version is that there is no need to link to libnepomuk. On the other hand the main model as provided by libnepomuk connects via a local socket if available which is faster. Also, it provides an automatic re-connect feature.
Lists the names of all available services, running and non-running.


So all in all the easy way is also the recommended one: use libnepomuk and the ResourceManager to access the data.
<code>bool isServiceAutostarted(QString service)</code>
Checks if a service is started automatically.
 
<code>bool isServiceInitialized(QString name)</code>
Checks if a services is running and initialized (running services might still be initializing).
 
<code>QStringList runningServices()</code>
Lists the names of all running services.
 
<code>void serviceInitialized(QString name)</code>
Signal which is emitted once a service finished initialization and is ready for usage.
 
<code>void setServiceAutostarted(QString service, bool autostart)</code>
Change the autostart behaviour of a service.
 
<code>bool startService(QString name)</code>
Start a service. This will also start all dependencies.
 
<code>bool stopService(QString name)</code>
Stop a service. This will also stop all services depending on the stopped one.
 
 
====Legacy Storage====
The '''Legacy Storage interface''' exported at ''org.soprano.Server'' is a simple wrapper around the storage service and not meant to be used in new applications.
 
 
====Configutation====
The '''Nepomuk Service Configuration interface''' named ''org.kde.NepomukServer'' and exported at ''nepomukserver'' provides methods to configure the server. These methods are for example used by the Nepomuk KCM:
 
<code>QString defaultRepository()</code>
Returns the name of the default repository (the Soprano server API used in the storage service provides API to create multiple repositories. Nepomu only uses one: ''main'').
 
<code>void enableNepomuk(bool enabled)</code>
The method to enable or disable the whole Nepomuk system. Setting ''enable'' to ''false'' will stop all services.
 
<code>void enableStrigi(bool enabled)</code>
Enable or disable Strigi file indexing.
 
<code>bool isNepomukEnabled()</code>
Check if Nepomuk is enabled.
 
<code>bool isStrigiEnabled()</code>
Check if Strigi is enabled.
 
<code>void quit()</code>
Quit the Nepomuk server and all services. ''Caution: this method is only intended for debugging purposes.''
 
<code>void reconfigure()</code>
Re-read the configuration. Normally there is no need to call this method.

Revision as of 12:49, 17 November 2008

Nepomuk Server
Tutorial Series   Nepomuk
Previous  
What's Next   Advanced Queries
Further Reading   Introduction to RDF and Ontologies, Handling Resources with Nepomuk, Nepomuk Services

The Nepomuk Server

The Nepomuk Server is a daemon which hosts all Nepomuk service including the main Nepomuk data repository. In normal operation it is started through KDE's autostart feature when logging into KDE. Starting it manually is as simple as typing "nepomukserver". This will start the daemon and all services.

Services are started as separate processes via the service wrapper application "nepomukservicestub". This design descision has been taken to enhance the stability of the Nepomuk system. Services are implemented by subclassing Nepomuk::Service and exporting it like any other KDE plugin. The Nepomuk::Service class documentation explains this in detail.

With kdebase a set of default services are installed. Most notably the storage service which hosts the RDF database used to store all Nepomuk-related data. Nepomuk Services explains the services in detail.

Using the Server

The Nepomuk server is registered as a DBus service at org.kde.NepomukServer and provides three DBus interfaces: The service manager, the legacy storage bridge, and the standard configuration interface.

Service Manager

The Service Manager DBus Interface named org.kde.nepomuk.ServiceManager and exported at servicemanager provides methods to start and stop services, to list available or running services, and to request some basic information about services:

QStringList availableServices()

Lists the names of all available services, running and non-running.

bool isServiceAutostarted(QString service) Checks if a service is started automatically.

bool isServiceInitialized(QString name) Checks if a services is running and initialized (running services might still be initializing).

QStringList runningServices() Lists the names of all running services.

void serviceInitialized(QString name) Signal which is emitted once a service finished initialization and is ready for usage.

void setServiceAutostarted(QString service, bool autostart) Change the autostart behaviour of a service.

bool startService(QString name) Start a service. This will also start all dependencies.

bool stopService(QString name) Stop a service. This will also stop all services depending on the stopped one.


Legacy Storage

The Legacy Storage interface exported at org.soprano.Server is a simple wrapper around the storage service and not meant to be used in new applications.


Configutation

The Nepomuk Service Configuration interface named org.kde.NepomukServer and exported at nepomukserver provides methods to configure the server. These methods are for example used by the Nepomuk KCM:

QString defaultRepository() Returns the name of the default repository (the Soprano server API used in the storage service provides API to create multiple repositories. Nepomu only uses one: main).

void enableNepomuk(bool enabled) The method to enable or disable the whole Nepomuk system. Setting enable to false will stop all services.

void enableStrigi(bool enabled) Enable or disable Strigi file indexing.

bool isNepomukEnabled() Check if Nepomuk is enabled.

bool isStrigiEnabled() Check if Strigi is enabled.

void quit() Quit the Nepomuk server and all services. Caution: this method is only intended for debugging purposes.

void reconfigure() Re-read the configuration. Normally there is no need to call this method.