Как посчитать количество строк в Sparql Query - PullRequest
2 голосов
/ 09 февраля 2011

Я работаю в Eclipse и использую 2 Java-файла: Admin.java и SemanticSearch.java.Через Admin.java я вхожу в систему и проверяю, есть ли имя пользователя и пароль в моем файле RDF.Функция входа в систему в Admin.java вызывает SemanticSearch.java, который выполняет SPARQL-запрос.Мой запрос дает мне ответ в консоли Eclipse и даже на другой файл.Теперь моя работа состоит в том, чтобы вернуть ответ Admin.java либо путем возврата значения, либо путем подсчета строк и отправки этого значения в Admin.java.Если число строк равно 1, это означает, что имя пользователя и пароль совпадают, и я могу позволить пользователю войти в систему.

Но я не могу этого сделать.Я пытался использовать count (), Count () в качестве CNT, даже пытался int res = results.next.Но, похоже, ничего не помогает.

Я вставляю код ниже:

Admin.java

SemanticSearch semsearch = new SemanticSearch(request.getSession());
semsearch.loadData(REALPATH + RDFDATASOURCEFILE1);
semsearch.searchForUser(response.getOutputStream(),null, userName, password);

В SemanticSearch.java

public void searchForUser(OutputStream out, String xslfile1, String userName, String password) {
    String prolog = "PREFIX kb:<"+VUSER.getURI()+">";
    System.out.println("Search for user in semantic search.java"); 
    String queryString1 = prolog +"\n" +"SELECT * " +"WHERE {" +"?x kb:Uname ?username. ?x kb:Password ?password. ?x kb:Interest ?interest. " +"FILTER regex(?username, \"" +userName +"\")}";

    System.out.println(queryString1);
    Query query=QueryFactory.create(queryString1);
    QueryExecution qexec = QueryExecutionFactory.create(query, model);
    ResultSet results1 = qexec.execSelect(); --> here the two rows are printed
    int res=results1.getRowNumber();
    System.out.println(results1); -->here answer is 0
    ResultSetFormatter.out(results1);
    ResultSetFormatter.out(out, results1);
    System.out.println(res);
    try {
        if (xslfile1 != null)
        {
            out.write(ResultSetFormatter.asXMLString(results1, xslfile1).getBytes("UTF-8"));
                System.out.println(results1);
                System.out.println(xslfile1);
            System.out.println("I am in if");
        }
        else
        {
           out.write(ResultSetFormatter.asXMLString(results1).getBytes(
                        "UTF-8"));
           System.out.println("I am in else");
        }

    } catch (IOException e) {
            e.printStackTrace();
    }
}   

Пожалуйста, помогите, я изо всех сил пытаюсь получить это от недели, С уважением, Арчана.

1 Ответ

13 голосов
/ 09 февраля 2011

В SPARQL 1.1, который может поддерживаться в используемом вами хранилище триплетов, синтаксис:

SELECT (COUNT(*) AS ?count)
WHERE {
  ...
}

В столбце? Count вы должны получить целое число с количеством результатов.

...