示例#1
0
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;
    }
}
示例#2
0
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;
}