Java方法没有返回字符串

时间:2015-03-19 17:44:45

标签: java sparql

public static void searchLabel(String word) {
    String uri = null;
    String sparqlQueryString1 = sparqlQuerySetup + "SELECT * WHERE {?x uni:altLabel \"" + word + "\"^^xsd:string}";
    System.out.println(sparqlQueryString1);
    executeQuery(sparqlQueryString1);
    System.out.println(uri);

    getType(uri);
}

public static String executeQuery(String sparqlQuerystring1){
    String uri = null;
    Query query = QueryFactory.create(sparqlQuerystring1);
    QueryExecution qexec = QueryExecutionFactory.create(query, model);
    ResultSet results = qexec.execSelect();
    //ORGINEEL ResultSetFormatter.out(System.out, results, query);       
    //ALS RDF ResultSetFormatter.outputAsRDF("", results);    
   // ResultSetFormatter.outputAsJSON(results);
    if (results.hasNext()) {
         uri = results.next().get("x").toString();
      }
    qexec.close() ;
    System.out.println(uri);
    return uri;
}

在第一种方法中,我正在执行executeQuery。在executeQuery中,我尝试返回“uri”并在searchLabel方法中再次打印它,但它返回“null”。它正在打印executeQuery方法,就在返回uri之前。

我猜这与我在searchLabel方法中将uri定义为null的事实有关。但是如果我删除它我就无法执行脚本(uri无法解析为变量)

3 个答案:

答案 0 :(得分:2)

uri = executeQuery(sparqlQueryString1);

答案 1 :(得分:1)

在第一种方法中......

  1. 声明uri并使用null初始化。
  2. 创建查询字符串
  3. 打印出来
  4. 通过第二种方法执行查询,该方法可能会也可能不会返回不是null的结果
  5. 打印出来uri,它仍然为空,因为您从未为其分配任何值
  6. 调用getType( null ),因为uri仍然为空
  7. 因此,假设您的第二个方法实际返回结果,您必须在第一个方法中将该返回值分配给uri变量。请记住,第一种方法中的变量uri与第二种方法中的变量uri无关。它们碰巧具有相同的名称,但它们不相关也不相同。

答案 2 :(得分:1)

您应该将executeQuery的回报分配给uri变量...

    String uri = null;
    String sparqlQueryString1 = sparqlQuerySetup + "SELECT * WHERE {?x uni:altLabel \"" + word + "\"^^xsd:string}";
    System.out.println(sparqlQueryString1);
    uri = executeQuery(sparqlQueryString1);
    System.out.println(uri);