[Nepomuk] Result sorting with Nepomuk Querylib
Sebastian Trüg
trueg at kde.org
Sun Sep 18 21:12:41 UTC 2011
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?
> 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)...
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
More information about the Nepomuk
mailing list