我正在尝试使用 Jena 4.3.0 ARQ Parser 解析此查询:
sparql_Opt_query=""" 前缀 ns1: 前缀 sql: 前缀 bif: 选择 ?name bif:get_keyword(?name,?top_comp,0) 在哪里 { ?s ns1:has_type ns1:公司。 ?s ns1:has_label ?name。 过滤器( sql:ContainsKey(?top_comp,?name)) { 选择 sql:getTopSimilarCompanies('IBM','5','ComplEx') ?top_comp where { } } } 按 DESC 排序 (?Score)"""; 查询 query_opt = QueryFactory.create(sparql_Opt_query) ; 操作 op_opt = 代数.compile(query_opt) ;
然后得到了这个异常:
线程“主”org.apache.jena.query.QueryParseException 中的异常:已经在范围内使用的变量:?.0 in (( http://www.bif.com/get_keyword ?name ?top_comp 0) AS ?. 0) 在 org.apache.jena.sparql.lang.SyntaxVarScope.checkExpr(SyntaxVarScope.java:166) 在 org.apache.jena.sparql.lang.SyntaxVarScope.lambda$checkExprListAssignment$0(SyntaxVarScope.java:126) 在 java.base/ java.util.LinkedHashMap.forEach(LinkedHashMap.java:723) at org.apache.jena.sparql.core.VarExprList.forEachExpr(VarExprList.java:70) at org.apache.jena.sparql.lang.SyntaxVarScope.checkExprListAssignment( SyntaxVarScope.java:121) 在 org.apache.jena.sparql.lang.SyntaxVarScope.checkQueryScope(SyntaxVarScope.java:84) 在 org.apache.jena.sparql.lang.SyntaxVarScope.check(SyntaxVarScope.java:56) 在 org .apache.jena.sparql.lang.SPARQLParser.validateParsedQuery(SPARQLParser.java:51) 在 org.apache.jena.sparql.lang.SPARQLParser.parse(SPARQLParser.java:34) 在 org.apache.jena.query.QueryFactory .parse(QueryFactory.java:144) 在 org.apache.jena.query.QueryFactory。create(QueryFactory.java:83) at org.apache.jena.query.QueryFactory.create(QueryFactory.java:56) at org.apache.jena.query.QueryFactory.create(QueryFactory.java:44) at arq.examples .algebra.ParseSPARQLQuery.main(ParseSPARQLQuery.java:79)