private void processVarExprList(VarExprList varExprList) { Map<Var, Expr> map = varExprList.getExprs() ; for ( Entry<Var, Expr> e : map.entrySet() ) { defines.add(e.getKey()) ; e.getValue().varsMentioned(filterMentions); } }
private void processVarExprList(VarExprList varExprList) { Map<Var, Expr> map = varExprList.getExprs() ; for ( Entry<Var, Expr> e : map.entrySet() ) { defines.add(e.getKey()) ; e.getValue().varsMentioned(assignMentions); } }
@Override public void visit(OpExtend opExtend) { for(Entry<Var, Expr> v : opExtend.getVarExprList().getExprs().entrySet()) { add(processVar(v.getKey())); processExpr(v.getValue()); } }
public Op make(ItemList list) { BuilderLib.checkLength(3, 4, list, "Group") ; // GroupBy VarExprList vars = BuilderExpr.buildNamedExprList(list.get(1).getList()) ; List<ExprAggregator> aggregators = new ArrayList<ExprAggregator>() ; if ( list.size() == 4 ) { // Aggregations : assume that the exprs are legal. VarExprList y = BuilderExpr.buildNamedExprList(list.get(2).getList()) ; // Aggregations need to know the name of the variable they are associated with // (so it can be set by the aggregation calculation) // Bind aggregation to variable for ( Entry<Var, Expr> entry : y.getExprs().entrySet() ) { if ( ! ( entry.getValue() instanceof ExprAggregator ) ) BuilderLib.broken(list, "Not a aggregate expression: "+entry.getValue()) ; ExprAggregator eAgg = (ExprAggregator)entry.getValue() ; eAgg.setVar(entry.getKey()) ; aggregators.add(eAgg) ; } } Op sub = build(list, list.size()-1) ; Op op = new OpGroup(sub,vars, aggregators) ; return op ; } } ;
/** * returns all variables mentioned in a query * @param query * @return */ public static Set<Var> getAllVariables(Query query) { Set<Var> vars= getAllVariables(query.getQueryPattern()); if (query.hasGroupBy() && query.getGroupBy()!=null && query.getGroupBy().getExprs()!=null) { for (Map.Entry<Var, Expr> e: query.getGroupBy().getExprs().entrySet()) { vars.add(e.getKey()); ExprVars.varsMentioned(vars, e.getValue()); } } if (query.hasHaving() && query.getHavingExprs()!=null) { for (Expr e: query.getHavingExprs()) { ExprVars.varsMentioned(vars, e); } } if (query.hasAggregators() && query.getAggregators()!=null) { for (ExprAggregator e: query.getAggregators()) { ExprVars.varsMentioned(vars, e); } } for (String v: query.getResultVars()) { vars.add(Var.alloc(v)); } return vars; }
String query(String query) { LOGGER.info("Using JENA:"); Query q=QueryFactory.create(query); LOGGER.info("-- Query:\n"+q); LOGGER.info("-- Base: "+q.getBaseURI()); LOGGER.info("-- Prefixes: "+q.getPrefixMapping()); LOGGER.info("-- Variables: "+q.getProjectVars()); Set<Var> variables=new HashSet<Var>(q.getProjectVars()); for(Entry<Var, Expr> entry:q.getProject().getExprs().entrySet()) { Var shadowing = entry.getKey(); VariableShadowingDetector detector = new VariableShadowingDetector(new IndentUtils(),shadowing); entry.getValue().visit(detector); if(detector.isShadowing()) { variables.remove(shadowing); variables.add(detector.getShadowed()); } } LOGGER.info("-- Graph URIS: "+q.getGraphURIs()); LOGGER.info("-- Named graphd URIS: "+q.getNamedGraphURIs()); List<String> search=q.getNamedGraphURIs(); q.getQueryPattern().visit(new ElementVisitorImplementation(search,variables)); return null; }
@Override public void visit(OpGroup opGroup) { for(Entry<Var, Expr> e : opGroup.getGroupVars().getExprs().entrySet()) { add(processVar(e.getKey())); for(Var v : e.getValue().getVarsMentioned()) { add(processVar(v)); } } for(ExprAggregator e : opGroup.getAggregators()) { add(processVar(e.getAggVar().asVar())); if (e.getExpr() != null) { for(Var v : e.getExpr().getVarsMentioned()) { add(processVar(v)); } } if (e.getAggregator().getExpr() != null) { for(Var v : e.getAggregator().getExpr().getVarsMentioned()) { add(processVar(v)); } } } }