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无法解析为变量)
答案 0 :(得分:2)
uri = executeQuery(sparqlQueryString1);
答案 1 :(得分:1)
在第一种方法中......
uri
并使用null
初始化。null
的结果uri
,它仍然为空,因为您从未为其分配任何值getType( null )
,因为uri仍然为空因此,假设您的第二个方法实际返回结果,您必须在第一个方法中将该返回值分配给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);