Ok, I've cooked an updated patch
QTrackerDirectSelectResult: QSparqlError(6, "GDBus.Error:org.freedesktop.Tracker1.SparqlError.Internal: Operation was cancelled", 4) "SELECT ?message rdf:type(?message) nmo:sentDate(?message) ?endTime nmo:isSent(?message) nmo:isRead(?message) nmo:deliveryStatus(?message) (SELECT GROUP_CONCAT(tracker:coalesce(nco:imID(?medium), nco:phoneNumber(?medium), ?medium), "\u001e") WHERE { ?from nco:hasContactMedium ?medium . }) (SELECT GROUP_CONCAT(tracker:coalesce(nco:imID(?medium), nco:phoneNumber(?medium), ?medium), "\u001e") WHERE { ?to nco:hasContactMedium ?medium . }) (SELECT GROUP_CONCAT( fn:concat(tracker:id(?contact), "\u001e", tracker:coalesce(nco:nameGiven(?contact), ""), "\u001e", tracker:coalesce(nco:nameFamily(?contact), ""), "\u001d", tracker:coalesce(nco:nickname(?contact), ""), "\u001d", tracker:coalesce(?nicknames, "")), "\u001c") WHERE { SELECT ?contact (SELECT GROUP_CONCAT(fn:string-join((nco:imID(?addr), ?nickname), "\u001f"), "\u001e") WHERE { ?contact nco:hasAffiliation [ nco:hasIMAddress ?addr ] . ?addr nco:imNickname ?nickname . }) AS ?nicknames WHERE { { ?target nco:hasIMAddress ?address . ?contact nco:hasAffiliation [ nco:hasIMAddress ?address ] . } UNION { ?target nco:hasPhoneNumber [ maemo:localPhoneNumber ?number ] . ?contact nco:hasAffiliation [ nco:hasPhoneNumber [ maemo:localPhoneNumber ?number ] ] . }}}) AS ?contacts rdf:nil nmo:phoneMessageId(?message) nmo:messageSubject(?message) nie:plainTextContent(?message) nmo:communicationChannel(?message) nmo:messageId(?message) nie:contentLastModified(?message) nfo:fileName(nmo:fromVCard(?message)) rdfs:label(nmo:fromVCard(?message)) nmo:encoding(?message) nie:characterSet(?message) nie:language(?message) nmo:isDeleted(?message) nmo:reportDelivery(?message) nmo:validityPeriod(?message) nie:generator(?message) (SELECT GROUP_CONCAT(?cc, '\u001e') {?message nmo:cc ?ccContact . {?ccContact nco:hasIMAddress [nco:imID ?cc]}UNION{?ccContact nco:hasPhoneNumber [nco:phoneNumber ?cc]}}) (SELECT GROUP_CONCAT(?bcc, '\u001e') {?message nmo:bcc ?bccContact . {?bccContact nco:hasIMAddress [nco:imID ?bcc]}UNION{?bccContact nco:hasPhoneNumber [nco:phoneNumber ?bcc]}}) nmo:reportReadStatus(?message) nmo:sentWithReportRead(?message) nmo:mustAnswerReportRead(?message) nmo:mmsId(?message) nmo:isAnswered(?message) (SELECT GROUP_CONCAT(fn:string-join((nmo:headerName(?header), nmo:headerValue(?header)), "\u001d"), "\u001f") WHERE { ?message nmo:messageHeader ?header }) WHERE { SELECT ?message ?from ?to IF (nmo:isSent(?message) = true, ?to, ?from) AS ?target ?message ?endTime WHERE {?message nmo:from ?from ; nmo:to ?to . ?message nmo:isDraft "false"; nmo:isDeleted "false" . ?message nmo:communicationChannel <conversation:66> . ?message a nmo:Message . ?message nmo:receivedDate ?endTime . } } ORDER BY DESC(?endTime) DESC(tracker:id(?message)) LIMIT 1000"