有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Jersey上的java多重查询可从多个图形中进行选择

我希望能够运行一个类似

host/to/source/search?query=something&terms=term1,term2,etc

我最感兴趣的是术语参数。我想运行一个SPARQL查询,该查询将使用术语的值作为要搜索的图形名称

    public String search(@QueryParam("query") String search_string, @QueryParam("match") @DefaultValue("") String match_string, @QueryParam("terms") @DefaultValue("") String terms_string)
        throws ServletException, IOException {  

    List<String> splitted =Arrays.asList(terms_string.split(","));      

    VirtGraph set = new VirtGraph (hostURL, userName, password);
    //String replaceString = "//s"+"AND"+"//s";
    String srch = search_string.replaceAll(java.util.regex.Pattern.quote(" "), " AND ") ;
    VirtuosoQueryExecution vqe = VirtuosoQueryExecutionFactory.create ("select ?s1 as ?uri, ?o1 as ?label where { { { select ?s1, ( ?sc * 3e-1 ) as ?sc, ?o1, ( sql:rnk_scale ( <LONG::IRI_RANK> ( ?s1 ) ) ) as ?rank, ?g where { quad map virtrdf:DefaultQuadMap { graph ?g { ?s1 ?s1textp ?o1 . ?o1 bif:contains '(" + srch + ")' option ( score ?sc ) . }}} order by desc ( ?sc * 3e-1 + sql:rnk_scale ( <LONG::IRI_RANK> ( ?s1 ) ) ) limit 20 offset 0  } }}", set);;


     if (match_string.equals("exact")){
     vqe = VirtuosoQueryExecutionFactory.create(
                "select ?uri, ?label where {quad map virtrdf:DefaultQuadMap { graph ?g { ?uri ?p ?label. FILTER (?label = '"+search_string+"'@en) .}}}",set
                );
    }
    ResultSet results = vqe.execSelect();
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    ResultSetFormatter.outputAsJSON(out, results);

    return out.toString();

}

目前,我将用户的输入作为一个字符串,然后将其拆分,但最好知道如何使用某种适当的方式将其直接用作列表

但主要问题是如何将列表项视为SPARQL在上述查询中使用的图形


共 (0) 个答案