Java 带参数的ParameteredSparQLString查询
以下查询用于从dbpedia获取“abstract”属性。当我使用像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:/
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());