java-使用JENA的参数化SPARQL查询
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-使用JENA的参数化SPARQL查询,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1883字,纯文字阅读大概需要3分钟。
内容图文
![java-使用JENA的参数化SPARQL查询](/upload/InfoBanner/zyjiaocheng/694/956fb811b7e64f4f9eed8bb7882bf4ae.jpg)
我正在尝试使用Jena框架,JSP和JAVA构建一个小的语义Web应用程序.我有一个远程SPARQL端点,并且我已经编写了一个简单的查询,该查询可以正常工作,但是现在我需要使用一些参数.到目前为止,这是我的代码:
final static String serviceEndpoint = "http://fishdelish.cs.man.ac.uk/sparql/";
String comNameQuery =
"PREFIX fd: <http://fishdelish.cs.man.ac.uk/rdf/vocab/resource/> " +
"SELECT ?name ?language ?type" +
"WHERE { ?nameID fd:comnames_ComName ?name ;" +
"fd:comnames_Language ?language ;" +
"fd:comnames_NameType ?type ." +
"}";
Query query = QueryFactory.create(comNameQuery);
QueryExecution qe = QueryExecutionFactory.sparqlService(serviceEndpoint,query);
try {
ResultSet rs = qe.execSelect();
if ( rs.hasNext() ) {
System.out.println(ResultSetFormatter.asText(rs));
}
}
catch(Exception e) {
System.out.println(e.getMessage());
}
finally {
qe.close();
}
我要做的是参数化?name.我是Jena的新手,我不确定如何在SPARQL查询中使用参数.如果有人可以帮助我,我将不胜感激.
解决方法:
如果只想将变量限制为本地查询具有特定值,则可以使用QueryFactory.create()方法的重载来实现,该方法需要QuerySolutionMap来设置值限制.请注意,这不会改变您的查询,只是限制了最终结果,因此这并不是真正的参数化.
如果您想真正拥有真正的参数化查询(即用变量替换常量),则有多种方法可以执行此操作,具体取决于您的ARQ版本.
使用任何当前版本(2.9.0以下)的唯一方法是字符串连接,即在查询中不使用?name而是插入所需的值,例如“鲍勃”
使用最新的中继线(2.9.1-SNAPSHOT起),有一个新的ParameterizedSparqlString类使它更加用户友好,例如
ParameterizedSparqlString queryStr = new ParameterizedSparqlString(comNameQuery);
queryStr.setLiteral("name", "Bob");
Query query = QueryFactory.create(queryStr.toString());
实际上,由于ParameterizedSparqlString具有StringBuffer样式的接口,可以进一步简化代码,可用于一点一点地构建查询,并包括有用的功能,例如在查询之前添加前缀.
这种新方法的优点在于,它提供了一种更通用的方式来执行参数化查询,该方法也可以与更新一起使用,并且可用于准备现有方法未涵盖的远程查询.
内容总结
以上是互联网集市为您收集整理的java-使用JENA的参数化SPARQL查询全部内容,希望文章能够帮你解决java-使用JENA的参数化SPARQL查询所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。