[Nepomuk] Need feedback on new query api

Sebastian Trüg trueg at kde.org
Sat Jul 24 22:15:21 CEST 2010


Hi guys,

at the Akademy a very good idea came up: using C++ operator overloads to
construct queries. This is very straight-forward for AndTerm and OrTerm:

   term1 && term2 && term3

   term1 || term2 || term3

But it gets nicer (thanks to Vishesh for the tip):

   Vocabulary::NIE::contentCreated() > Query::LiteralTerm( dateTime1 );
   Vocabulary::NAO::hasTag() == term;

which results in the following ComparisonTerms:

   ComparisonTerm(
        Vocabulary::NIE::contentCreated(),
        Query::LiteralTerm( dateTime1 ),
        ComparisonTerm::Greater );

   ComparisonTerm(
        Vocabulary::NAO::hasTag(),
        term,
        ComparisonTerm::Equal );

So far so good. But now let me give you the idea which I would like some
feedback on. By interchanging the two parameters of the operator we
create an inverted ComparisonTerm:

   term == Vocabulary::NAO::hasTag();

will create the following term:

   ComparisonTerm(
        Vocabulary::NAO::hasTag(),
        term,
        ComparisonTerm::Equal ).inverted();

For me this is very convenient. But it might be rather confusing. But
then again inverted terms are confusing to begin with.

So any opinions?

Cheers,
Sebastian


More information about the Nepomuk mailing list