2017-05-13 8 views
0

ユーザーの入力をSPARQLクエリに統合したいと考えています。ここに私の既存のコードがありますが、それを動作させることはできません。SPARQLクエリに文字列変数を追加する方法は?

public void setName(String name) { 
    String formattedName = name.replace(" ", "-"); 
    String query = "SELECT ?p ?o WHERE { <http://person/" + formattedName + "> ?p ?o }" ; 
    System.out.println(query); 
    QueryExecution qe = QueryExecutionFactory.sparqlService(
      "http://localhost:3030/Date/query", 
      "PREFIX dc: <http://purl.org/dc/elements/1.1/> " + query); 
    ResultSet results = qe.execSelect(); 
    System.out.println(results); 
    qe.close(); 
} 

その後、私は、コンソールで次の出力を得る:

SELECT ?p ?o WHERE { <http://person/Mark-John> ?p ?o } 
[email protected]8261 

最初の行は、クエリで、2行目は、受信したデータである必要があり、結果、ある...

印刷し、どの

execSelectAndPrint(
     "http://localhost:3030/Date/query", 
     "PREFIX dc: <http://purl.org/dc/elements/1.1/> " + "SELECT ?p ?o WHERE { <http://person/Mark-John> ?p ?o }" 
     ); 

::私がしようとした場合、以下のように

それは動作します

2番目のコードの結果を表示するために最初のコードを変更するにはどうすればよいですか?

+0

あなたは 'execSelectAndPrint'をお持ちの場合、なぜそれを使用できませんか? – AKSW

答えて

0

あなたの質問のタイトルは、あなたがテキストで記述問題とは何の関係もありません...

あなたはより多くのを求めている「ApacheのイエナのAPI ResultSetを印刷する方法は?」

それでは、あなたが望むことをやっているexecSelectAndPrintという1つの方法が既にあるというのは混乱しています。だから問題はなぜあなたが(再)そのメソッドを使用することはできませんか、またはメソッドのコードの少なくとも対応する行ですか?

ApacheのイエナのAPIドキュメント、特にSPARQLを持つ部分がhere

ResultSetを見つけることができますので、それを反復、反復子です:

ResultSet results = qexec.execSelect(); 
for (; results.hasNext() ;) { 
    QuerySolution qs = results.next() ; 
    ...         // extract the variables 
} 

それともconvenience methodsのいずれかを使用します。

ResultSet results = qexec.execSelect(); 
ResultSetFormatter.out(results); 
マイナーコメント:

あなたのメソッドが呼び出されましたsetNameこれはちょっと変わったようです。この方法であなたがやっていることに。

関連する問題