QStringList FaceDatabaseProvider::resolveContact(QString &contactUrn) { static QSparqlQuery query("SELECT\n" " tracker:coalesce(fn:concat(nco:nameGiven(?:contact), \" \",\n" " nco:nameFamily(?:contact)),\n" " nco:nameGiven(?:contact),\n" " nco:nickname(?:contact),\n" " nco:nameFamily(?:contact),\n" " nco:fullname(?:contact)\n" " )\n" " ?photoUrl \n" "WHERE {\n" " ?:contact rdf:type nco:PersonContact .\n" " OPTIONAL {\n" " ?:contact nco:photo ?photoUrn .\n" " ?photoUrn nie:url ?photoUrl .\n" " }\n" "}\n"); query.bindValue("contact", QUrl(contactUrn)); QSparqlResult *result = m_sparqlConnection->syncExec(query); if (result->hasError() || !result->first()) { delete result; return QStringList(); } else { QStringList stringResult; stringResult << result->value(0).toString() << result->value(1).toString(); delete result; return stringResult; } }
int FaceDatabaseProvider::countImages(QList<XQFaceRegion> regions) { QString sparqlSentence("SELECT\n" " COUNT(?urn)\n" "WHERE {\n" " ?urn rdf:type nfo:Visual ;\n" " tracker:available \"true\"^^xsd:boolean .\n" " FILTER(?urn IN (%1) ).\n" "}\n"); QString urnList; QListIterator<XQFaceRegion> iter(regions); while (iter.hasNext()) { urnList += "<" + iter.next().sourceId() + ">"; if (iter.hasNext()) { urnList += " , "; } } QSparqlQuery query = QSparqlQuery(sparqlSentence.arg(urnList)); int count = 0; QSparqlResult *result = m_sparqlConnection->syncExec(query); if (!result->hasError() && result->first()) { count = result->value(0).toInt(); } delete result; return count; }