使用在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:  ...  ...  ...  ...  ... "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" ...  ...  ...  ...  ...  ...  ...  ...  ...  ...  ...  ...  ...  ... "(" ... "!" ... "+" ... "-" ... 

是否有另一种方法在SPARQL查询中使用字符串变量,就像在类似的场景中一样。 提前致谢

我假设jobCategory是文字/标签? 简单直接询问标签。

 String queryString = "Select ?a ?b"+ " Where {  \"" + jobCategory +"\"}"; 

我的情况是它是查询看起来像的URI。

 String queryString = "Select ?a ?b"+ " Where {   <" + jobCategory+ ">}"; 

我有一个解决这个问题的方法。 我使用regex来获得结果

 "filter(regex(?a, \"" + jobCategory + "\"))"