Development/Tutorials/Metadata/Nepomuk/StorageService

From KDE TechBase
Revision as of 12:59, 17 November 2008 by Trueg (talk | contribs) (New page: {{TutorialBrowser| series=Nepomuk| name=Nepomuk Storage Service| pre=| next=OntologyLoader| reading=Nepomuk Services, [[../NepomukServer...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Nepomuk Storage Service
Tutorial Series   Nepomuk
Previous  
What's Next   OntologyLoader
Further Reading   Nepomuk Services, Nepomuk Server

Nepomuk Storage Service

The main repository is an RDF database using Soprano including a Soprano full text index. The interface of the repository is exported via DBus (The DBus interface is defined by Soprano). When using the Soprano DBus interface from within a KDE application there is no need to bother with QDBus. Soprano provides the Soprano::Client::DBusModel class which wraps all DBus communication into a nice Soprano::Model interface.

There are two ways to access this wrapper model:

1. Use Soprano::Client::DBusClient to create a connection to the Nepomuk Server:

Soprano::Client::DBusClient* client = new Soprano::Client::DBusClient( "org.kde.NepomukStorage" ); Soprano::Model* model = client->createModel( "main" );

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

2. Use the Nepomuk library, i.e. ResourceManager to access the main model:

Soprano::Model* model = Nepomuk::ResourceManager::instance()->mainModel();

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. When implementing a Nepomuk service use Service to access the main repository:

class MyService : public Nepomuk::Service { public:

   MyService( QObject* parent ) : Service( parent ) {
      Soprano::Model* model = mainModel();
   }

};

So all in all the easy way is also the recommended one: use libnepomuk and the ResourceManager or Service to access the data.