java - 使用在 SPARQL 查询内的查询字符串之外声明的变量 - 使用 JSP 和 Java Servlet
问题描述
我有2个jsp页面。在索引页面中,我选择了一个下拉值并将所选值作为 url 参数传递给 SearchResults 页面。
http://localhost:8080/SearchResults.jsp?jobCat=InformationTechnology
我正在捕获InformationTechnology
使用以下代码传递的参数。查询应显示表单中所选值的结果。(我正在选择一个工作类别,结果应该显示所选工作类别下的候选人)
String jobCategory = request.getParameter("jobCat");
以下是我的查询
String queryString =
"Select ?a ?b"+
" Where { ...."+
" Filter (?a = "+ jobCategory +")"+// jobCategory is the String variable
" }";
但我收到 ParseException 错误。
com.hp.hpl.jena.query.QueryParseException: Encountered " "in" "In "" at line
1, column 559.
Was expecting one of:
<IRIref> ...
<PNAME_NS> ...
<PNAME_LN> ...
<VAR1> ...
<VAR2> ...
"exists" ...
"not" ...
"count" ...
"min" ...
"max" ...
"sum" ...
"avg" ...
"sample" ...
"group_concat" ...
"bound" ...
"coalesce" ...
"if" ...
"bnode" ...
"iri" ...
"uri" ...
"str" ...
"strlang" ...
"strdt" ...
"datatype" ...
"lang" ...
"langmatches" ...
"isURI" ...
"isIRI" ...
"isBlank" ...
"isLiteral" ...
"isNumeric" ...
"regex" ...
"sameTerm" ...
"RAND" ...
"ABS" ...
"CEIL" ...
"FLOOR" ...
"ROUND" ...
"CONCAT" ...
"SUBSTR" ...
"STRLEN" ...
"UCASE" ...
"LCASE" ...
"ENCODE_FOR_URI" ...
"CONTAINS" ...
"strSTARTS" ...
"strENDS" ...
"YEAR" ...
"MONTH" ...
"DAY" ...
"HOURS" ...
"MINUTES" ...
"SECONDS" ...
"TIMEZONE" ...
"TZ" ...
"NOW" ...
"MD5" ...
"SHA1" ...
"SHA224" ...
"SHA256" ...
"SHA384" ...
"SHA512" ...
"true" ...
"false" ...
<INTEGER> ...
<DECIMAL> ...
<DOUBLE> ...
<INTEGER_POSITIVE> ...
<DECIMAL_POSITIVE> ...
<DOUBLE_POSITIVE> ...
<INTEGER_NEGATIVE> ...
<DECIMAL_NEGATIVE> ...
<DOUBLE_NEGATIVE> ...
<STRING_LITERAL1> ...
<STRING_LITERAL2> ...
<STRING_LITERAL_LONG1> ...
<STRING_LITERAL_LONG2> ...
"(" ...
"!" ...
"+" ...
"-" ...
是否有另一种方法可以在类似情况下使用 SPARQL 查询中的字符串变量。提前致谢
解决方案
我假设 jobCategory 是文字/标签?简单直接询问标签。
String queryString =
"Select ?a ?b"+
" Where { <uri> <uri>\"" + jobCategory +"\"}";
我的情况是查询看起来像一个URI。
String queryString =
"Select ?a ?b"+
" Where { <uri> <uri> <" + jobCategory+ ">}";
推荐阅读
- c - 在 C 中动态分配结构的二维矩阵
- arrays - Powershell:生成唯一的半随机数字字符串
- sql - 如何以表名作为值创建新列 - SQL
- boost - 在循环中调用 async_connect 时 Deadline_timer 未触发
- jenkins - Jenkins 共享声明式管道
- laravel - heroku 运行 php artisan migrate 不迁移任何东西
- java - 内部 catch 块引发的异常会发生什么
- flutter - Flutter 中的多个重构滑块
- excel - 优化 Excel 宏 - 速度
- google-drive-api - 谷歌 colab + 驱动器“超出速率限制”