2011-02-09 15 views
1

私はEclipseで作業しており、2つのJavaファイルAdmin.javaとSemanticSearch.javaを使用しています。 Admin.javaを通して私はログインしていて、ユーザー名とパスワードが自分のRDFファイルに存在するかどうかを確認しています。 Admin.javaのログイン機能は、SPARQLクエリを実行するSemanticSearch.javaを呼び出します。私の質問は私の答えをEclipseのConsoleで、別のファイルにも与えてくれます。今、私の仕事は、値を返すか、行を数えてその値をAdmin.javaに送ることによって、Admin.javaへの答えを返すことです。これにより、行数が1の場合、ユーザー名とパスワードが一致し、ユーザーにログインできるようになります。Sparqlクエリの行数をカウントする方法

しかし、私はそうすることができません。私はcount()、Count()をCNTとして使用しようとしましたが、int res = results.nextを試みました。しかし、何も助けてくれないようです。私は以下のコード貼り付けています

Admin.javaを

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

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(); 
    } 
} 

、私は一週間、よろしくからこれを取得するために苦労しています助けてください、Archana。あなたが使用しているtriplestoreでサポートすることができるSPARQL 1.1では、

答えて

9

、構文は次のとおりです。

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

あなたはで返された整数を取得する必要があります結果の数と、列を数えます?。

関連する問題