[Nepomuk] Result sorting with Nepomuk Querylib

Vishesh Handa handa.vish at gmail.com
Sun Sep 18 21:37:27 UTC 2011


On Mon, Sep 19, 2011 at 2:42 AM, Sebastian Trüg <trueg at kde.org> wrote:

> On 09/18/2011 10:00 PM, Vishesh Handa wrote:
> >
> > On Mon, Sep 19, 2011 at 12:52 AM, Sebastian Trüg <trueg at kde.org
> > <mailto:trueg at kde.org>> wrote:
> >
> >     On 09/18/2011 07:36 PM, Vishesh Handa wrote:
> >     > Hey Sebastian
> >     >
> >     > I was working on my note taking application, and I want all the
> >     > resources which are notes. So, I did this -
> >     >
> >     > Nepomuk::Query::ResourceTypeTerm typeTerm( Nepomuk::Types::Class(
> >     > PIMO::Note() ) );
> >     > Nepomuk::Query::Query query( typeTerm );
> >     >
> >     > which was fine. Then I realized that I wanted the notes to be
> sorted
> >     > according to the last modification date.
> >     >
> >     > Currently, I'm doing this -
> >     >
> >     >     Nepomuk::Query::ResourceTypeTerm typeTerm(
> Nepomuk::Types::Class(
> >     > PIMO::Note() ) );
> >     >     Nepomuk::Query::Query query( typeTerm );
> >     >
> >     >     Nepomuk::Query::Query::RequestProperty rp(
> >     NAO::lastModified(), false );
> >     >     query.addRequestProperty( rp );
> >     >
> >     >     QString sparql = query.toSparqlQuery() + " order by
> >     desc(?reqProp1)";
> >
> >     Ahhhhhh, my eyes, I think I am blind!!!!!! :P
> >
> >
> > :D
> >
> >
> >
> >     This is what you do:
> >
> >     ComparisonTerm term(NAO::lastModified(), Term());
> >     term.setSortWeight(1, Qt::DescendingOrder);
> >     Query query = ResourceTypeTerm(PIMO::Note()) && term;
> >
> >
> > Now, why would anybody in their right mind think of using a
> > ComparisonTerm, when one is not comparing anything?
>
> Yeah, ComparisionTerm started out for plain comparision but turned out
> into the general purpose term for anything that includes a property....
> maybe a new name for 5.0?
>

Yes, please. Any ideas for a new name?

While we're on the subject of 5.0, maybe we could make the term in
ComparisonTerm (const Types::Property &property, const Term &term,
Comparator comparator=Contains) optional.


>
> > It would be so much easier to have something like -
> >
> > Query q( term );
> > q.addSortProperty( NAO::lastModified(), Qt::DescendingOrder ); // the
> > weight is optional
>
> You are right for this example. But think about sorting by some variable
> somewhere down the graph. Artificial example:
>
> ComparisionTerm t1(NAO::lastModified(), Term());
> t1.setSortWeight(1);
> ComparisionTerm t2(PIMO::isRelated(), t1);
> Query q(t2);
>
> How would you express that with your API? We could of course add a
> shortcut/convenience method which internally creates a ComparisionTerm
> (actually that is what requestproperties are now)...
>

I wasn't proposing that we remove the ComparisionTerm::setSortWeight
function.

We need both. Your version of sorting using Comparison terms is very
powerful. It just isn't convenient for simple use cases.


> Cheers,
> Sebastian
>
> >     and if you want the value of the date simply add:
> >     term.setVariableName(QLatin1String("date"));
> >
> >     and fetch it through Result::additionalBindings.
> >
> >     Actually you can read it here:
> >
> http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk/html/classNepomuk_1_1Query_1_1ComparisonTerm.html#_details
> >
> >     Cheers,
> >     Sebastian
> >
> >     >     client->sparqlQuery( sparql );
> >     >
> >     > Is it possible that you forgot to implement sorting in the query
> lib?
> >     > Cause I can't seem to find how to do it.
> >     >
> >     > --
> >     > Vishesh Handa
> >
> >
> >
> >
> > --
> > Vishesh Handa
>



-- 
Vishesh Handa
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/nepomuk/attachments/20110919/8c958146/attachment-0001.html>


More information about the Nepomuk mailing list