生成增量SPARQL查询

时间:2014-09-05 19:23:11

标签: java sparql dbpedia

有没有办法以动态方式生成SPARQL查询? 我试图做的是这样的事情: 如果我有一个DBpedia资源r1和另一个DBpedia资源r2, 这个查询

SELECT * WHERE { <r1> ?pre <r2> }

将返回2个资源之间的谓词 和这个查询

SELECT * WHERE { <r1> ?pre1 ?obj1 . ?obj1 ?pre2 <r2> }

将返回这两个资源之间的所有谓词和对象(分两步) 等等 我试图以这样的方式构建这个查询:它会自动增加两个资源之间的对象和谓词数量(例如,分4步)?

1 个答案:

答案 0 :(得分:1)

我弄清楚如何解决这个问题.. 这是我的解决方案:

private String completeQuery(String coreQuery){
String completeQuery = "";
completeQuery += "SELECT * WHERE {"+ "\n";
completeQuery += coreQuery + "\n";
completeQuery =completeQuery + "}" + "\n" +"limit 5" ;
return completeQuery;}
public String link(String object1, String object2, int distance){
if(distance == 1){
    String Quer = "<http://dbpedia.org/resource/"+object1+">" + " ?pre1 " +"<http://dbpedia.org/resource/"+object2+">";
    return completeQuery(Quer);
} 
else {
    String query = "<http://dbpedia.org/resource/"+object1+">" + " ?pre1 ?obj1 " + ".\n";
    for(int i = 1; i < distance-1; i++){
        query += "?obj" + i + " ?pre" + (i+1) + " ?obj" + (i+1) + ".\n" ;

    }
    query  += "?obj" + (distance-1) + " ?pre" + distance + " " + "<http://dbpedia.org/resource/"+object2+">";
    return completeQuery(query);
}}