Difference between revisions of "Projects/Nepomuk/QueryLibrary"

Jump to: navigation, search
(Created page with "Nepomuk provides a Query Library which is a part of the nepomuk-core library. It can be user to dynamically create queries. This Query Library eventually compiles the queries ...")
 
Line 16: Line 16:
 
* [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/classNepomuk2_1_1Query_1_1ResourceTerm.html ResourceTerm]
 
* [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/classNepomuk2_1_1Query_1_1ResourceTerm.html ResourceTerm]
 
* [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/classNepomuk2_1_1Query_1_1ResourceTypeTerm.html ResourceTypeTerm]
 
* [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/classNepomuk2_1_1Query_1_1ResourceTypeTerm.html ResourceTypeTerm]
 +
 +
=== Examples ===
 +
 +
Imagine we wanted to find all files that are tagged with a certain tag:
 +
 +
<syntaxhighlight lang="cpp">
 +
Nepomuk::Tag myTag = someFancyMethod();
 +
 +
// term matching the tag
 +
Nepomuk::Query::ResourceTerm tagTerm( myTag );
 +
 +
// term matching tagged resource
 +
Nepomuk::Query::ComparisonTerm term( Soprano::Vocabulary::NAO::hasTag(),
 +
                                    tagTerm,
 +
                                    Nepomuk::Query::ComparisonTerm::Equal );
 +
 +
// build the query
 +
Nepomuk::Query::Query query( term );
 +
</syntaxhighlight>

Revision as of 14:07, 23 August 2012

Nepomuk provides a Query Library which is a part of the nepomuk-core library. It can be user to dynamically create queries. This Query Library eventually compiles the queries into Sparql which is then run on our database - virtuoso.

It is recommended that you use the Query Library when you're searching for resources which have some direct properties. If the queries are too complex, maybe you should be directly using SPARQL. It all depends on your use case. The only advantage of using the QueryLibrary is that with improvements in the query library, your queries should get faster.

Creating Queries

The entire Query Library resides in the Nepomuk2::Query namespace. It consists of a number of terms which can be combined together to create larger terms. Eventually when you've have created the final term, you can pass it to Nepomuk2::Query::Query and run the query

The different kinds of terms are -

Examples

Imagine we wanted to find all files that are tagged with a certain tag:

Nepomuk::Tag myTag = someFancyMethod();
 
// term matching the tag
Nepomuk::Query::ResourceTerm tagTerm( myTag );
 
// term matching tagged resource
Nepomuk::Query::ComparisonTerm term( Soprano::Vocabulary::NAO::hasTag(), 
                                     tagTerm, 
                                     Nepomuk::Query::ComparisonTerm::Equal );
 
// build the query
Nepomuk::Query::Query query( term );

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V.Legal