Java 带参数的ParameteredSparQLString查询

Java 带参数的ParameteredSparQLString查询,java,sparql,Java,Sparql,以下查询用于从dbpedia获取“abstract”属性。当我使用像res:Zeke_Rowe这样的特定名称而不是?name时,它会起作用。我想将一个值传递给?name变量。sparql查询如下所示: ParameterizedSparqlString abstractQuery = new ParameterizedSparqlString( "PREFIX res: <http://dbpedia.org/resorce/> " +"PREFIX dbo: <http:/

以下查询用于从dbpedia获取“abstract”属性。当我使用像
res:Zeke_Rowe
这样的特定名称而不是
?name
时,它会起作用。我想将一个值传递给
?name
变量。sparql查询如下所示:

ParameterizedSparqlString abstractQuery = new ParameterizedSparqlString(
"PREFIX res:  <http://dbpedia.org/resorce/> "
+"PREFIX dbo: <http://dbpedia.org/ontology/> "
+"SELECT ?abstract WHERE { "
+"?name dbo:abstract ?abstract. "
+"FILTER (lang(?abstract)='en')}");
但它不起作用,我得到了
无接触异常

我也试过:

 Node node = NodeFactory.createLiteral("res:Zeke_Rowe");
 abstractQuery.setParam("name",node);
 Query query = QueryFactory.create(abstractQuery.toString());
没有成功。有同样的例外

两种方式都是将名称
res:Zeke_-Rowe
插入sparql查询,如下所示:
“res:Zeke_-Rowe”

最后,我按如下方式运行查询:

ResultSetFactory.copyResults(QueryExecutionFactory.sparqlService("http://dbpedia.org/sparql",query).execSelect());

我做错了什么

RDF三元组中的主题从来不是文字,因此,
res:Zeke_Rowe
不是文字,不知道为什么总是调用
setLiteral
resp<代码>createLiteral。它是一个URI,可以是前缀(
res:Zeke_Rowe
)或完整的(
http://dbpedia.org/resource/Zeke_Rowe

abstractQuery.setIri(“名称”http://dbpedia.org/resource/Zeke_Rowe");

Node Node=NodeFactory.createIRI(“http://dbpedia.org/resource/Zeke_Rowe");
setParam(“名称”,节点);

如果您可以共享完整堆栈跟踪或异常,这将非常有用。
ResultSetFactory.copyResults(QueryExecutionFactory.sparqlService("http://dbpedia.org/sparql",query).execSelect());