Java 使用Virtuoso的sparql查询中存在不合逻辑的问题
经过几个小时的调试,我在这里写作。。 以下代码不适用Java 使用Virtuoso的sparql查询中存在不合逻辑的问题,java,jersey,sparql,virtuoso,Java,Jersey,Sparql,Virtuoso,经过几个小时的调试,我在这里写作。。 以下代码不适用 public String search(@QueryParam("query") String search_string, @QueryParam("match_type") @DefaultValue("") String match_type, @QueryParam("terminology") @DefaultValue("") List<String> terminology_list) throws Ser
public String search(@QueryParam("query") String search_string, @QueryParam("match_type") @DefaultValue("") String match_type, @QueryParam("terminology") @DefaultValue("") List<String> terminology_list)
throws ServletException, IOException
{
VirtGraph set = new VirtGraph (hostURL, userName, password);
ByteArrayOutputStream out = new ByteArrayOutputStream();
search_string = search_string.replaceAll(java.util.regex.Pattern.quote(" "), " and ") ;
String text="";
for(String term_items:terminology_list) {
if(!match_type.equals("exact")) {
text="select ?uri, ?label where { " +
"quad map virtrdf:DefaultQuadMap " +
"{ graph ?g { ?uri ?p ?label . ?label bif:contains '" +
search_string +
"' option ( score ?sc ) . }}} " +
"order by desc ( ?sc * 3e-1 + sql:rnk_scale ( <LONG::IRI_RANK> ( ?uri ) ) ) limit 20 offset 0";
}
else if(match_type.equals("exact")) {
text="select ?uri, ?label where { quad map virtrdf:DefaultQuadMap { graph <"
+term_items+"> { ?uri ?p ?label.FILTER (?label = '"+search_string+"'@en) .}}}";
}
VirtuosoQueryExecution vqe = VirtuosoQueryExecutionFactory.create(text, set);
ResultSet results = vqe.execSelect();
ResultSetFormatter.outputAsJSON(out, results);
}
return out.toString();
}
有趣的是,在端点上运行sparql查询确实会返回结果。只有在eclipse中运行它时,它才不会
也不能说在else
语句之后的代码中还有任何错误,因为相同的代码用于if
语句,并且该语句运行正常。“以下代码不正确”。不是吗?
text="select ?uri, ?label where { quad map virtrdf:DefaultQuadMap { graph <**test**> { ?uri ?p ?label.FILTER (?label = '"+search_string+"'@en) .}}}";