Ignoring the fact that I did not blog in nearly two months I will simply get some developer information out there. Getting notified about changes in the Nepomuk database has always been a problem. All we had for a long time where the ugly statementAdded and statementRemoved signals from Soprano which, when actually used, would slow down the whole system as one would have to check each single statement for the information one needed.
Thus, with the introduction of the Data Management Service a while back we also gave birth to the ResourceWatcher which can be used to watch resources, properties, and types for changes. The concept is simple. Just create an instance of the watcher and tell it which resources or which types of resources you want to watch for changes. In addition you can restrict it to specific properties. Then you get nice signals which inform you about the changes when they happen.
Nepomuk::ResourceWatcher *watcher = new Nepomuk::ResourceWatcher(this); watcher->addType(NCO::Contact()); connect(watcher, SIGNAL(resourceCreated(Nepomuk::Resource, QList<QUrl>)), this, SLOT(slotCreated(Nepomuk::Resource, QList<QUrl>))); watcher->start();
The problem with this has been that it only works with data manipulation which happens through the Data Management Service and libnepomuk did not use that for a long time. Now we finally fixed that (sadly I did not manage to push it in time for 4.8 but it will be in 4.8.1) and the change notifications become really useful. I also implemented a bunch of unit tests and made sure the most important types of notifications actually work.
So all in all an important step for developers using Nepomuk which was overdue.