Hi everybody,

Since I have been using my version of Basket with Nepomuk Integration
for some times now without any problem, I have submitted a merge
request (merge request #9).



Dear Sebastian,

Do you have any plan to include my patch into the KRunner?


Thanks,
Amir

On Tue, Nov 16, 2010 at 10:21 AM, Amir Pakdel <pak...@gmail.com> wrote:
> Hi everybody,
>
> Would you please kindly give it a try before I submit the merge request?
> I would be grateful if anyone could review my code too.
>
> Thanks,
> Amir
>
>
> ---------- Forwarded message ----------
> From: Amir Pakdel <pak...@gmail.com>
> Date: Thu, Nov 11, 2010 at 6:38 PM
> Subject: Re: [Basket-devel] Loading Baskets from the command line
> To: Sebastian Trüg <tr...@kde.org>
> Cc: basket-devel <basket-devel@lists.sourceforge.net>, ma...@kde.org,
> nepo...@kde.org
>
>
> Hi Sebastian,
>
> I hope that I have done it right this time :D
> Would you please take a look:
> http://gitorious.org/~pakdel/basket/pakdels-basket/blobs/master/src/nepomukintegration.cpp
>
> Moreover, I have changed NepomukSearchRunner a little bit, so I could
> search for contents of notes using KRunner. I have attached the patch
> for that too.
>
> Thanks again for your help
>
>
>
>
> Dear developers,
> It would be great if anybody could test it.
>
>
> Thanks everybody,
> Amir
>
> On Mon, Nov 1, 2010 at 2:16 PM, Sebastian Trüg <tr...@kde.org> wrote:
>> On 11/01/2010 10:53 AM, Amir Pakdel wrote:
>>> Hi Sebastian,
>>>
>>> Thanks for your reply.
>>>
>>> On Mon, Nov 1, 2010 at 12:43 PM, Sebastian Trüg <tr...@kde.org> wrote:
>>>> Hi Amir,
>>>>
>>>> funnily enough you do exactly what was explained in "You are doing it
>>>> wrong"[1]: you are trying to move the thread to itself. This, however,
>>>> it not possible since the thread you want to move it to is not running
>>>> yet (and for another reason that I forgot).
>>>>
>>>> Also the run method is called in the new thread. There is no need to
>>>> start anything async in there. Just do the work, ie. what doUpdate()
>>>> does now.
>>>
>>> I did it async because I wanted to queue up save requests and save
>>> only once when a duplicate save request is encountered in the queue. I
>>> will correct this issue and commit a new version.
>>>
>>>>
>>>> "basketRes.setProperty( Soprano::Vocabulary::RDF::type(),
>>>> Soprano::Vocabulary::PIMO::Note() );"
>>>> this will overwrite all other types. You can just remove that line.
>>>
>>> Shouldn't I use "noteRes.addProperty"?
>>
>> nope, you are doing addType in the line before. That is enough. :)
>>
>>>>
>>>> "basketRes.setProperty( Soprano::Vocabulary::NIE::url(), basketUri );"
>>>> No need. This is done internally anyway.
>>>>
>>>> "basketTag.setProperty( Soprano::Vocabulary::NAO::prefLabel(), tagName );"
>>>> just use setLabel()
>>>>
>>>>
>>>> Are you using nie:isPartOf to group subnotes? If so better use
>>>> pimo:isPartOf.
>>> Do you mean pimo:partOf ? [1]
>>
>> yes.
>>
>> Cheers,
>> Sebastian
>>
>>> Thanks again,
>>> Amir
>>>
>>> [1]
>>> http://www.semanticdesktop.org/ontologies/2007/11/01/pimo/#partOf
>>>>
>>>> Cheers,
>>>> Sebastian
>>>>
>>>> [1]
>>>> http://labs.trolltech.com/blogs/2010/06/17/youre-doing-it-wrong/#more-1608
>>>>
>>>> On 10/29/2010 09:25 PM, Amir Pakdel wrote:
>>>>> Hi everybody,
>>>>>
>>>>> Dear Matt,
>>>>> I have made some improvements (new features and bug fixes) to the
>>>>> Nepomuk Integration and revised and resubmitted the merge request.
>>>>>
>>>>>
>>>>> Dear Sebastian,
>>>>> I have implemented "Indexing Contents of the Actual Notes" as following:
>>>>> 1. Requesting nepomukstrigiservice (via DBus) to index the basket
>>>>> folder (using indexFolder method).
>>>>> 2. Connecting to indexingStopped signal.
>>>>> 3. Cleaning up the mime-type when received indexingStopped signal.
>>>>> This way, it even works on my older KDE 4.4.3 at work :)
>>>>> would you please take a look at the source code on the following URL:
>>>>> http://gitorious.org/~pakdel/basket/pakdels-basket/blobs/master/src/nepomukintegration.cpp
>>>>>
>>>>>
>>>>> Dear developers,
>>>>> I have used threading in the Nepomuk Integration and I will be
>>>>> grateful if you could check my code :)
>>>>> http://gitorious.org/~pakdel/basket/pakdels-basket/blobs/master/src/nepomukintegration.cpp
>>>>>
>>>>>
>>>>> Thanks,
>>>>> Amir
>>>>>
>>>>> On Sat, Oct 23, 2010 at 12:36 PM, Amir Pakdel <pak...@gmail.com> wrote:
>>>>>> Hi Sebastian,
>>>>>>
>>>>>> On Fri, Oct 22, 2010 at 5:18 PM, Sebastian Trüg <tr...@kde.org> wrote:
>>>>>>> Hi Amir,
>>>>>>>
>>>>>>> On 10/19/2010 01:51 PM, Amir Pakdel wrote:
>>>>>>>> Two more ideas came into my mind:
>>>>>>>> 1. Something could be added to anthologies that indicates the priority
>>>>>>>> of mime-types, like the "priority" property of "magic" XML element
>>>>>>>> that is used in the XML files that define mime-types. This way,
>>>>>>>> multiple mime-types of a resource can be prioritized.
>>>>>>>
>>>>>>> I think this is a problem with the way mime types are represented today:
>>>>>>> as strings. Do you think a hierarchy of mime types would solve that
>>>>>>> problem, too?
>>>>>>>
>>>>>> I do think so, because we can have things like the priority of the
>>>>>> mime type, preferred application that handles a mime type and the
>>>>>> application that added this mime type into the properties of the
>>>>>> resource (the application that indexed the resource as a specific mime
>>>>>> type).
>>>>>>
>>>>>>>> 2. Nepomuk::Indexer could have a method to set a flag in resources
>>>>>>>> that prevents "automatic indexing" or at least prevents resources from
>>>>>>>> being indexed using strigi, or some thing like a "lock" or a "do not
>>>>>>>> change" hint or so. This way, a specific application would take full
>>>>>>>> responsibility for the resource. Moreover, indexFile, indexResource
>>>>>>>> and other method could have another parameter "force" that defaults to
>>>>>>>> false and the application that is responsible for the resource could
>>>>>>>> call these methods with force=true
>>>>>>>
>>>>>>> this is an interesting idea. How could we put that in RDF? Maybe a
>>>>>>> simple property on the indexing graph which states the application
>>>>>>> handling this specific file?
>>>>>>>
>>>>>> That is a good idea; the simpler the better :D
>>>>>> This way, Nepomuk should check the application that is invoking the
>>>>>> indexFile or indexResouce methods. Is it easy to implement?
>>>>>> Therefore, when invoking application does not match the application
>>>>>> name stored in RDF, it has to force the index.
>>>>>>
>>>>>> Cheers,
>>>>>> Amir
>>>>>>
>>>>>>> Cheers,
>>>>>>> Sebastian
>>>>>>>
>>>>>>>>
>>>>>>>> I hope I explained my ideas intelligibly  :D
>>>>>>>>
>>>>>>>> Cheers,
>>>>>>>> Amir
>>>>>>>>
>>>>>>>> On Mon, Oct 18, 2010 at 5:06 PM, Sebastian Trüg <tr...@kde.org> wrote:
>>>>>>>>> Sounds like a good idea. However, I will still find a more generic way
>>>>>>>>> in addition to that.
>>>>>>>>> Stay tuned for more info.
>>>>>>>>> Cheers,
>>>>>>>>> Sebastian
>>>>>>>>>
>>>>>>>>> On 10/15/2010 07:38 PM, Amir Pakdel wrote:
>>>>>>>>>> Hi Sebastian,
>>>>>>>>>>
>>>>>>>>>> On Fri, Oct 8, 2010 at 12:00 PM, Sebastian Trüg <tr...@kde.org> 
>>>>>>>>>> wrote:
>>>>>>>>>>> Hi guys,
>>>>>>>>>>>
>>>>>>>>>>> On 10/07/2010 09:25 PM, Amir Pakdel wrote:
>>>>>>>>>>>> Hi everybody,
>>>>>>>>>>>>
>>>>>>>>>>>> On Wed, Oct 6, 2010 at 8:47 PM, Stephen Kelly <steve...@gmail.com> 
>>>>>>>>>>>> wrote:
>>>>>>>>>>>>> Matt Rogers wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>>> The second solution is more appealing, but I would rather get a
>>>>>>>>>>>>>>> working version with what we have got now. Therefore, I will go 
>>>>>>>>>>>>>>> with
>>>>>>>>>>>>>>> the first suggestion.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> We actually have thought about interfacing with Akonadi for data
>>>>>>>>>>>>>> storage/caching. If we do that, would we get Nepomuk integration 
>>>>>>>>>>>>>> for
>>>>>>>>>>>>>> "free" as well?
>>>>>>>>>>>>>
>>>>>>>>>>>>> Just an FYI about this:
>>>>>>>>>>>>>
>>>>>>>>>>>>> I changed how kjots stores data so that it can use Akonadi for 
>>>>>>>>>>>>> access to the
>>>>>>>>>>>>> notes.
>>>>>>>>>>>>
>>>>>>>>>>>> Although I have read all I could find about Nepomuk and Akonadi, I
>>>>>>>>>>>> still don't know what Akonadi does exactly and how it interacts 
>>>>>>>>>>>> with
>>>>>>>>>>>> Nepomuk!
>>>>>>>>>>>> Could anyone please help me with that?
>>>>>>>>>>>
>>>>>>>>>>> AFAIK Akonadi stores blobs of data and provides a few APIs to 
>>>>>>>>>>> convert
>>>>>>>>>>> these blobs into something useful. One prominent example is mime 
>>>>>>>>>>> data.
>>>>>>>>>>> Nepomuk is a graph of information and thus, completely different.
>>>>>>>>>>> Akonadi more or less duplicates all its information in Nepomuk so 
>>>>>>>>>>> one
>>>>>>>>>>> can perform searches on the data and create relations. This is a 
>>>>>>>>>>> weird
>>>>>>>>>>> situation as the info is stored twice but we cannot change that at 
>>>>>>>>>>> the
>>>>>>>>>>> moment. Maybe in the future we can merge both projects - who knows.
>>>>>>>>>>>
>>>>>>>>>>> So to me it does not make much sense to store notes in Akonadi as 
>>>>>>>>>>> you
>>>>>>>>>>> need to copy them to Nepomuk anyway. Thus, you would need to 
>>>>>>>>>>> implement
>>>>>>>>>>> the data handling twice: once the Akonadi blob and once the Nepomuk
>>>>>>>>>>> resource data.
>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> http://dot.kde.org/2010/02/17/kjots-takes-advantage-innovations-kde-
>>>>>>>>>>>>> development-platform
>>>>>>>>>>>>>
>>>>>>>>>>>>> KJots accesses the notes as Mime documents (KMime::Message 
>>>>>>>>>>>>> objects) from
>>>>>>>>>>>>> Akonadi. Akonadi stores the notes in mime format in maildir 
>>>>>>>>>>>>> containers (one
>>>>>>>>>>>>> note per file). The mime format could also be used to store the 
>>>>>>>>>>>>> images in
>>>>>>>>>>>>> the note directly in the note, but I haven't got around to doing 
>>>>>>>>>>>>> that
>>>>>>>>>>>>> (though there is API for it I think).
>>>>>>>>>>>>>
>>>>>>>>>>>>> http://www.faqs.org/rfcs/rfc2387.html
>>>>>>>>>>>>>
>>>>>>>>>>>>> The way Akonadi stores the notes is irrelevant to the 
>>>>>>>>>>>>> application. They
>>>>>>>>>>>>> could just as easily be in mbox format (one single file for a 
>>>>>>>>>>>>> group of
>>>>>>>>>>>>> notes). The application just uses the KMime::Message objects that 
>>>>>>>>>>>>> Akonadi
>>>>>>>>>>>>> returns.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Even if you don't make basket use Akonadi yet it could make sense 
>>>>>>>>>>>>> to store
>>>>>>>>>>>>> the notes as mime messages and use KMime to (de)serialize them.
>>>>>>>>>>>>>
>>>>>>>>>>>>> All the best,
>>>>>>>>>>>>>
>>>>>>>>>>>>> Steve.
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> I hope I found a solution for opening note files with Basket:
>>>>>>>>>>>> Suppose there is a basket in
>>>>>>>>>>>> ~/.kde/share/apps/basket/baskets/basket106 which has a note in a 
>>>>>>>>>>>> file
>>>>>>>>>>>> called note1.html and the metadata in Nepomuk is as following:
>>>>>>>>>>>>
>>>>>>>>>>>> $ nepomukcmd query "select ?r where { ?r nie:url
>>>>>>>>>>>> <file:///~/.kde/share/apps/basket/baskets/basket106/note1.html> . 
>>>>>>>>>>>> }"
>>>>>>>>>>>> <nepomuk:/res/00473b7a-4ac9-4223-b8d3-dee3d24631c1>
>>>>>>>>>>>> Total results: 1
>>>>>>>>>>>> Execution time: 00:00:00.3
>>>>>>>>>>>
>>>>>>>>>>> Where did that URL come from? Normally Nepomuk should only contain
>>>>>>>>>>> absolute URLs.
>>>>>>>>>>>
>>>>>>>>>>>> $ nepomukcmd query "select ?a where {
>>>>>>>>>>>> <nepomuk:/res/00473b7a-4ac9-4223-b8d3-dee3d24631c1> nie:mimeType 
>>>>>>>>>>>> ?a .
>>>>>>>>>>>> }"
>>>>>>>>>>>> "application/x-basket-item"^^<http://www.w3.org/2001/XMLSchema#string>
>>>>>>>>>>>> Total results: 1
>>>>>>>>>>>> Execution time: 00:00:00.1
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> Now in Nepomuk::SearchRunner::run, we could get the service that
>>>>>>>>>>>> should run this resource and then tell the KRun to use it, like the
>>>>>>>>>>>> following:
>>>>>>>>>>>>
>>>>>>>>>>>> QString mimetype = 
>>>>>>>>>>>> res.property(Nepomuk::Vocabulary::NIE::mimeType).toString();
>>>>>>>>>>>> KService::Ptr preferredService =
>>>>>>>>>>>> KMimeTypeTrader::self()->preferredService( mimetype );
>>>>>>>>>>>>
>>>>>>>>>>>> KRun *newApp = new KRun(url, 0);
>>>>>>>>>>>> newApp->setPreferredService( preferredService->desktopEntryName() 
>>>>>>>>>>>> );
>>>>>>>>>>>>
>>>>>>>>>>>> I hope it works without changing anything else.
>>>>>>>>>>>> Sebastian, would you please take a look?
>>>>>>>>>>>
>>>>>>>>>>> This is a good idea for a quick intermediate solution. :)
>>>>>>>>>>> Very nice. All you would have to do is set the mimetype on the notes
>>>>>>>>>>> manually. The only problem left is that strigi would add the html
>>>>>>>>>>> mimetype, too. But we can handle that by indexing the baskets 
>>>>>>>>>>> manually.
>>>>>>>>>>>
>>>>>>>>>>> For the latter I need to make some API public which I need to do 
>>>>>>>>>>> anyway.
>>>>>>>>>>> Can we meet on IRC? I am in #nepomuk-kde on freenode
>>>>>>>>>>>
>>>>>>>>>>> Cheers,
>>>>>>>>>>> Sebastian
>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> Cheers,
>>>>>>>>>>>> Amir
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Sorry for being late. Since I could not find you on IRC (Friday 15 
>>>>>>>>>> Oct
>>>>>>>>>> 17:30 GMT) I am writing this.
>>>>>>>>>>
>>>>>>>>>> IMHO the following scenario would work fine:
>>>>>>>>>> 0. ~/.kde/share/apps/basket should not be indexed automatically.
>>>>>>>>>>
>>>>>>>>>> 1. We keep the current code that adds the metadata of the basket and
>>>>>>>>>> its notes into the Nepomuk and sets notes as parts of the basket.
>>>>>>>>>> 2. Ask the Nepomuk::Indexer to index notes using Indexer::indexFile 
>>>>>>>>>> method
>>>>>>>>>> 3. Develop a slot (for example resetMimetype) that clears mimetype of
>>>>>>>>>> the notes and sets it back to application/x-basket
>>>>>>>>>> 4. connect Nepomuk::indexingDone to the newly developed slot in 
>>>>>>>>>> basket
>>>>>>>>>> (resetMimetype)
>>>>>>>>>>
>>>>>>>>>> This way, the only thing that would be changed in the Nepomuk it that
>>>>>>>>>> the indexingDone signal is implemented and it is supposed to be
>>>>>>>>>> emitted.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Please let me know your opinion.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Cheers,
>>>>>>>>>> Amir
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>

------------------------------------------------------------------------------
Lotusphere 2011
Register now for Lotusphere 2011 and learn how
to connect the dots, take your collaborative environment
to the next level, and enter the era of Social Business.
http://p.sf.net/sfu/lotusphere-d2d
_______________________________________________
Basket-devel mailing list
Basket-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/basket-devel

Reply via email to