[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    Re: KDE/kdepim/akonadi/agents
From:       Volker Krause <vkrause () kde ! org>
Date:       2009-09-22 6:28:39
Message-ID: 200909220828.46725.vkrause () kde ! org
[Download RAW message or body]


On Monday 21 September 2009 20:24:39 Sebastian Trüg wrote:
> very nice. Maybe we could merge this into soprano at some point. :)

that would be great, some of the Soprano classes were nearly usable for this 
already (Node, Statement) but lacked support for query variables. So if done 
in Soprano you can probably even drop half of the current code.

> On Monday 21 September 2009 17:47:17 Volker Krause wrote:
> > SVN commit 1026368 by vkrause:
> >
> > Add a first draft of a SPARQL query builder API, inspired by the SQL
> > query builder used in the Akonadi server. Makes writing queries in code
> > a lot more comfortable and less error prone.
> >
> >
> >  M  +4 -1      CMakeLists.txt
> >  M  +9 -7      nepomuk_email_feeder/nepomukemailfeeder.cpp
> >  A             nepomukfeeder/CMakeLists.txt
> >  A             nepomukfeeder/selectsparqlbuilder.cpp   [License: LGPL
> > (v2+)] A             nepomukfeeder/selectsqarqlbuilder.h   [License: LGPL
> > (v2+)] A             nepomukfeeder/sparqlbuilder.cpp   [License: LGPL
> > (v2+)] A             nepomukfeeder/sparqlbuilder.h   [License: LGPL
> > (v2+)] A             nepomukfeeder/tests (directory)
> >  A             nepomukfeeder/tests/CMakeLists.txt
> >  A             nepomukfeeder/tests/sparqlbuildertest.cpp   [License: LGPL
> > (v2+)]
> >
> >
> > --- trunk/KDE/kdepim/akonadi/agents/CMakeLists.txt #1026367:1026368
> > @@ -2,12 +2,15 @@
> >  add_subdirectory( strigifeeder )
> >
> >  if( Nepomuk_FOUND AND SOPRANO_PLUGIN_RAPTORPARSER_FOUND )
> > -    include_directories( ${CMAKE_CURRENT_SOURCE_DIR}/nepomukfeeder )
> > +    include_directories( ${CMAKE_CURRENT_SOURCE_DIR}/nepomukfeeder
> > ${CMAKE_CURRENT_BINARY_DIR}/nie_fast ) set( NEPOMUKFEEDER_SHARED_SRCS
> >          
> > ${CMAKE_CURRENT_SOURCE_DIR}/nepomukfeeder/nepomukfeederagent.cpp +       
> >  ${CMAKE_CURRENT_SOURCE_DIR}/nepomukfeeder/sparqlbuilder.cpp +        
> > ${CMAKE_CURRENT_SOURCE_DIR}/nepomukfeeder/selectsparqlbuilder.cpp )
> >
> >      add_subdirectory( nie_fast )
> > +    add_subdirectory( nepomukfeeder )
> >      add_subdirectory( nepomuk_email_feeder )
> >      add_subdirectory( nepomuk_contact_feeder )
> >      add_subdirectory( nepomuk_calendar_feeder )
> > ---
> > trunk/KDE/kdepim/akonadi/agents/nepomuk_email_feeder/nepomukemailfeeder.c
> >pp #1026367:1026368 @@ -22,6 +22,7 @@
> >  #include "email.h"
> >  #include "emailaddress.h"
> >  #include "personcontact.h"
> > +#include "selectsqarqlbuilder.h"
> >
> >  #include <akonadi/changerecorder.h>
> >  #include <akonadi/item.h>
> > @@ -163,13 +164,14 @@
> >    // are case insensitive. But for the moment we stick to it and hope
> > Nepomuk // alignment fixes any duplicates
> >    //
> > -  Soprano::QueryResultIterator it =
> > -    Nepomuk::ResourceManager::instance()->mainModel()->executeQuery(
> > QString( "select distinct ?r where { ?r <%1> ?a . ?a <%2> \"%3\"^^<%4> .
> > }" ) -
> > .arg( NepomukFast::Role::emailAddressUri().toString() ) -
> >                                                   .arg(
> > NepomukFast::EmailAddress::emailAddressUri().toString() ) -
> >                                                     .arg(
> > QString::fromAscii( address ) ) -
> >                           .arg(
> > Soprano::Vocabulary::XMLSchema::string().toString() ), -
> >
> > Soprano::Query::QueryLanguageSparql ); +
> > SelectSparqlBuilder::BasicGraphPattern graph;
> > +  graph.addTriple( "?r", NepomukFast::Role::emailAddressUri(),
> > SparqlBuilder::QueryVariable("?a") ); +  graph.addTriple( "?a",
> > NepomukFast::EmailAddress::emailAddressUri(), QString::fromAscii( address
> > ) ); +  SelectSparqlBuilder qb;
> > +  qb.setGraphPattern( graph );
> > +  qb.addQueryVariable( "?r" );
> > +  Soprano::QueryResultIterator it =
> > Nepomuk::ResourceManager::instance()->mainModel()->executeQuery(
> > qb.query(), Soprano::Query::QueryLanguageSparql ); +
> >    if ( it.next() ) {
> >      *found = true;
> >      const QUrl uri = it.binding( 0 ).uri();



["signature.asc" (application/pgp-signature)]

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic