使用在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 + "\"))"