Blog title plagiarism: "Will the real Nepomuk please stand up!"

Now what is that supposed to mean? The "real" Nepomuk? Well, you did not actually think that I would introduce an RDF store into KDE just to save some tags and ratings? No, the "real" motivation goes way beyond that and it is time to hint at it.
Today I committed the PIMOShell to the Nepomuk playground (To the right you see the PIMOShell main window showing all xesam:Music resources).

[image:3374 style="float:right; margin:10px;"]

The PIMOShell is a metadata maintenance and debugging tool which I will now use to give a glimpse of the "big picture".

But first a few words on PIMO: PIMO, the Personal Information Model Ontology, forms the basis for all custom, user-created classes (types) and properties. It defines basic stuff like an Agent or a Location and is intended to be extended by the user in any way he or she likes (more information on PIMO).

Let us dive into an example:

By using the context menu in the upper left class list PIMOShell allows us to create new classes with a nice little dialog. Basic information like a label and an optional icon and description can be added directly. We create a new class "Friend" which is a special kind of Person: a close friend.

[image:3375 size=preview]

Once the class is created it shows up as a new subclass of pimo:Person which in turn is a subclass of pimo:Agent. It can now be used like any other class in the system. That essentially means that we can create instances:

[image:3376 size=preview]

Again we can set basic properties like the label and the image. We create an instance of Tudor, my friend from DERI, Galway. Once we did so, PIMOShell lists Tudor as a new instance of Friend:

[image:3377 size=preview]

Now Tudor has been created as a new RDF resource in the Nepomuk storage. And that means we can query him using the simple Nepomuk query client:

[image:3378 size=preview]

When searching for all resources of type "Friend" we find Tudor. Nice. :)

But simply creating new classes is not fun enough. To categorize friends we might be interested in what relates us to them. Like a mutual interest. Thus, we create a new property:

[image:3379 size=preview]

As you can see the new property will be for our new class "Friend". And once it is created we can change its value in the lower pane:

[image:3380 size=preview]

The mutual interest that I share with Tudor is complaining about bad food (just for the sake of the example of course).

Again the new information allows us to find Tudor:

[image:3381 size=preview]

I personally think this is quite cool. Of course the PIMOShell is not intended for the end user. But it gives an idea pf the possibilities. A PIM application might categorize according to user created classes with additional fields, saved text documents might be typed, we can organize arbitrary data in a powerful way. All we need is a deeper application integration. And this is where you come in. I hope. ;)


First, I want to thank you for your work on Nepomuk! I find it really exciting.

But now, I can't resist the temptation to gawk about the future! So I'll project a "vision" here:
In KDE 4.5...
*There's a new Contact application that brings together all your email, IM, VoIP, and Facebook contacts.
*Amarok uses Last.fm to find all the similarities between your music collection and your Facebook friend's music. When playing songs, it shows a little note, saying "Your [friend / co-worker / brother] Joe likes this song too." With a right-click, you can suggest a track to any of your contacts.
*When I type someone's name in a search box, it gives me options to send an IM (if they are online), email, message their Facebook directly.... That might be in a "Contact" pane. In another pane, it might show pictures of Joe, emails/IM logs from Joe, Joe's Facebook/Twitter status, and files on my computer from Joe. Another pane provides suggestions of files I might want to send to Joe such as recent pictures of Joe I took, or something I've sent to many of Joe's friends.
*I can type "old english essay politics" in the search box, and it will find it even though the words "old", "english" and "essay" are not in the filename or the document itself. It found the word "politics" (and associated words like "democracy") in the file, detected the name of my English teacher, knew which years I was her student, and thus knew it was "old" even though I updated the file it last week.
*Bob sends me an email asking when the Block Party and ice-skating event is. Since the Block Party is scheduled on Facebook and the ice-skating event on my co-worker's Google Calendar, KMail asks "Do you want to tell Bob that the Block Party is this Tuesday and the ice-skating is Mar 23?" and will write a template email for me. In KDE's internal calendar, Bob is marked as "possibly attending" those events. If he later replies, "Great! See you there" KDE marks him as attending, and updates my grocery list accordingly. (Earlier I got an email saying I was responsible for bringing punch to the block party.)
*Haha, and now we're getting to where the fridge orders more food... I always end up there somehow. :-)

Those last few examples bordered on AI, but regardless, this is going to be a great leap. Using an ontology and marking the relationships between files will help computers finally understand what files are. I might have a scan of piano music, a photo I took on vacation, a drawing my brother made in the GIMP, and a screenshot of my desktop, and all the computer sees is four JPEG images. Once that limitation is breached, I think computers will become much more helpful to people.

By kwilliam at Mon, 04/07/2008 - 22:14

[note: I tried to reply a few weeks ago, bit it must not have worked.]

Most of your examples include some kind of inference. One problem with inference is how certain are you of the thing you just inferred? If you can't store your certainty, then anything you infer from that will be stupidly unreliable.

trueg: is there a way of encoding and querying things like "Bob is "possibly attending (20% chance)" this event", using your framework?


By David Laban at Sun, 04/27/2008 - 11:46

very cool!

I can't wait to see this get used more.

some extremely cool things will be done w/ Nepomuk.

By ant at Tue, 04/08/2008 - 00:10

How does this relate to other RDF systems (FOAF, SIOC). It would be really cool for NEPOMUK for keep FOAF descriptions consistent with NEPOMUK descriptions.

By theriddle at Wed, 04/09/2008 - 13:51

Some started a petition because the tool was now allowing some people to manipulate the code. I can't find it right this second, but it's there someplace...

By jay1 at Thu, 07/31/2008 - 14:54