[Nepomuk] Re: Akonadi <-> Nepomuk interaction

Sebastian Trüg trueg at kde.org
Tue Feb 22 15:26:11 CET 2011


I am confused - you want to annotate the text and not the note? But what
is a note if not its text? I think I see the issue for something like an
event though...
Could you give a real example please.

Cheers,
Sebastian

On 02/22/2011 02:53 PM, Christian Mollekopf wrote:
> Just one thing which I forgot.
> 
> The point is that I need to annotate the content (text) of the Todo/Note not 
> the Todo/Note itself.
> 
> I annotate the content with pimo:Topics and random items like files, other 
> akonadi items, etc. 
> If I would simple set the Thing which I annotated with those items as the 
> Thing of the Todo/Note directly, another application could add annotation to 
> the Thing i.e. a location for a Todo. 
> Now that annotation is really only valid for the Todo not the content in 
> general. So if that item is converted to a Note, the location annotation 
> should not be kept, while all the associated files, etc and pimo:Topics are 
> still valid as they are actually annotations of the content (text).
> 
> That was also why I used the separate resource (for annotating the content of 
> the todo/note).
> 
> Cheers,
> 
> Chris
> 
> On Tuesday 22 February 2011 14:31:10 Sebastian Trüg wrote:
>> Hi Chris,
>>
>> On 02/22/2011 02:23 PM, Christian Mollekopf wrote:
>>> On Tuesday 22 February 2011 11:41:27 Sebastian Trüg wrote:
>>>> Hi Chris,
>>>>
>>>> I always figured that there would be only two resources:
>>>> 1. The main indexed resource created by the feeder
>>>> 2. The pimo:Thing that contains all the annotations and relations.
>>>>
>>>> IMHO there is no need for a third resource which is maintained by your
>>>> app. The only problem I see here is the update by the feeder since that
>>>> should maintain the relation to the pimo:Thing.
>>>> But I think that could be handled by the feeder. It simply needs to
>>>> handle updates differently than a simple delete+add. Instead it should
>>>> make sure the resource URI is reused and the relation to the pimo:Thing
>>>> is kept.
>>>
>>> The problem with using the Resource created by the feeder is that it is
>>> not clear if my app or the feeder is first to create it, so I would have
>>> to make sure that also if I create the Resource first, the feeder reuses
>>> it. But I guess that should be possible.
>>
>> AFAIK Akonadi uses a dedicated property to identify their resources. You
>> could reuse that.
>> I suppose it would be best to put that into shared code somehow. That
>> way it can be assured that the resources are reused.
>>
>>> Further I also have to see when to delete the Thing, as sometimes I wan't
>>> to reuse it (when converting the item).
>>>
>>> What I don't really get: for one specific note there should only be one
>>> Thing, right? So If I create the Thing and assign it to the Resource
>>> created by the Feeder, will the feeeder delete the Thing, when he
>>> deletes the Resource or will I have to do that?
>>>
>>> The ownership of Resources/Things is not yet really clear to me....
>>
>> The feeder does not delete the things. This is something that is not
>> defined yet. It could of course be very easy to add thing deletion to
>> the feeder.
> 
> In this case
>>
>> Cheers,
>> Sebastian
>>
>>>> Once that works you might only have to update the pimo:Thing type. I am
>>>> not sure if this should also be done in the feeder or if your app should
>>>> do that.
>>>>
>>>> Cheers,
>>>> Sebastian
>>>>
>>>> On 02/19/2011 02:33 PM, Christian Mollekopf wrote:
>>>>> Hi,
>>>>>
>>>>> As I don't feel that there is a real solution how to handle notes and
>>>>> kcal items in akonadi and nepomuk.  I'm going to explain here how I
>>>>> plan to implement the interaction between aknoadi::items and
>>>>> nepomuk::resources in my application.
>>>>>
>>>>> I know there is some work going on in Baske/Semnotes/Kjots and the
>>>>> issue has been discussed before focusing on notes. But as I couldn't
>>>>> find a real conclusion on the ml, and since I have some more
>>>>> requirements/usecases, I think it is time to continue this discussion
>>>>> =)
>>>>>
>>>>> Usecase:
>>>>> My application manages Incidences (todos/events) and Notes using the
>>>>> KCal and Akonotes resource in akonadi. (I do believe that storing
>>>>> those in akonadi is the right way, and storing them in nepomuk is not
>>>>> a valid option for various reasons).
>>>>>
>>>>> I organize all items using PIMO::Topics (instead of collections inside
>>>>> akonadi). Further I plan to add functionality to associate random data
>>>>> (files, websites, mails, ...) with the topics and/or a certain
>>>>> Akonadi::Item using Nepomuk.
>>>>>
>>>>> One functionality which showed some further requirements, is converting
>>>>> i.e. a note to an incidence. This made me realize that I'm normally
>>>>> actually tagging the Content of the note/event/todo and not i.e. todo
>>>>> itself.
>>>>>
>>>>>
>>>>> All of this lead me to the following conclusion how to handle those
>>>>> items in Nepomuk:
>>>>>
>>>>> For each Akonadi::Item I create a Nepomuk::Resource (Content Resource)
>>>>> of the type NFO:HtmlDocument (since it is only the content, not the
>>>>> task itself) with an identifier consisting of an application-specific
>>>>> prefix + akonadi::item url (to avoid conflicts with the items
>>>>> generated in the nepomukfeeder agents). For all annotations I use the
>>>>> pimoThing (Content Thing), on which I set the type PIMO:Document. (See
>>>>> the attached diagram for reference)
>>>>>
>>>>> So if I convert the item i.e. from note to todo, which means deleting
>>>>> the old Akonadi::Item and creating a new one, I simply set the new
>>>>> Nepomuk::Resource (created with the new akonadi::item url) as a
>>>>> groundingOccurence of the existing Pimo:Document. This way all
>>>>> annotations remain untouched.
>>>>>
>>>>> The obvious downside of this is, that other applications do not profit
>>>>> from annotations made in my application, and I am not yet sure how to
>>>>> overcome this. Maybe I can annotate the Nepomuk::Resource which has
>>>>> been created by the feederagent with the Pimo:Document of the same
>>>>> item, and therefore implicitly share the annotations?
>>>>>
>>>>> Also I am not storing any real content in those Resources, I use the
>>>>> Content Resource and the Content Thing only to annotate the content of
>>>>> the item. For fulltext search or similar things I expect to use the
>>>>> items created by the FeederAgent (meaning I will have to create a
>>>>> feederagent for notes as well).
>>>>>
>>>>>
>>>>> Anyhow, this solution doesn't seem ideal, so I'd be interested how you
>>>>> guys intend to solve the issues. Especially what Resources you create
>>>>> and how you tell them apart from the ones created by the Feederagents.
>>>>>
>>>>> Also are you using Nepomuk purely internal, or do you actually create
>>>>> content which could be reused by other applications?
>>>>>
>>>>> Cheers,
>>>>>
>>>>> Chris
>>>>>
>>>>> PS: Some background info on my app in case youre interested
>>>>> http://gitorious.org/notetaker/pages/Home
>>>>>
>>>>>
> _______________________________________________
> Nepomuk mailing list
> Nepomuk at kde.org
> https://mail.kde.org/mailman/listinfo/nepomuk
> 


More information about the Nepomuk mailing list