@Override public IDatatype eval(Expr exp, Environment env, Producer p) { if (env.getEval() == null) { logger.error("Environment getEval() = null in: "); logger.info(exp.toString()); } IDatatype dt = ((Expression) exp).eval(this, (Binding) env.getBind(), env, p); if (dt == null) { DatatypeValue res = env.getVisitor().error(env.getEval(), exp, EMPTY); if (res != null) { return (IDatatype) res; } } return dt; }
@Override public IDatatype eval(Expr exp, Environment env, Producer p) { if (env.getEval() == null) { logger.error("Environment getEval() = null in: "); logger.info(exp.toString()); } IDatatype dt = ((Expression) exp).eval(this, (Binding) env.getBind(), env, p); if (dt == null) { DatatypeValue res = env.getVisitor().error(env.getEval(), exp, EMPTY); if (res != null) { return (IDatatype) res; } } return dt; }
public IDatatype error(Computer eval, Binding b, Environment env, Producer p, IDatatype... param) { return (IDatatype) env.getVisitor().error(env.getEval(), this, param); }
public IDatatype overload(Environment env, IDatatype res, IDatatype... param) { return (IDatatype) env.getVisitor().overload(env.getEval(), this, res, param); }
Function getFunction(Computer eval, Environment env, IDatatype dt, int n) { String name = dt.stringValue(); Function function = (Function) eval.getDefineGenerate(this, env, name, n); if (function == null) { if (dt.pointerType() == Pointerable.EXPRESSION_POINTER) { // lambda expression, arity is not correct } else if (env.getEval() != null) { env.getEval().getSPARQLEngine().getLinkedFunction(name); function = (Function) eval.getDefineGenerate(this, env, name, n); if (function == null) { logger.error("Undefined function: " + name); } } } return function; }
int getSlice(Query q, Node serv, Environment env, Mappings map) { // former: q.getGlobalQuery().getSlice(); return env.getEval().getVisitor().slice(serv, map); }
int getTimeout(Query q, Node serv, Environment env) { Integer time = (Integer) q.getGlobalQuery().getPragma(Pragma.TIMEOUT); if (time == null) { return env.getEval().getVisitor().timeout(serv); } return time; }
int getSlice(Query q, Node serv, Environment env, Mappings map) { // former: q.getGlobalQuery().getSlice(); return env.getEval().getVisitor().slice(serv, map); }
int getTimeout(Query q, Node serv, Environment env) { Integer time = (Integer) q.getGlobalQuery().getPragma(Pragma.TIMEOUT); if (time == null) { return env.getEval().getVisitor().timeout(serv); } return time; }
map.setEval(env.getEval()); if (map.getBind() == null) {
/** * use case: result of st:apply-templates-all() list = list of ?out results * of templates create Mappings (?out = value) apply st:aggregate(?out) on * Mappings Use the st:aggregate of the query q that called * st:apply-templates-all() if q is member of this transformation, otherwise * get the st:profile of this transformation to get the appropriate * st:aggregate definition if any */ IDatatype result(Environment env, List<Node> list) { Query q = (env == null) ? null : env.getQuery(); Query tq = (q != null && contains(q)) ? q : qe.getTemplate(); Memory mem = new Memory(exec.getMatcher(), exec.getEvaluator()); exec.getEvaluator().init(mem); if (env != null){ mem.share(mem.getBind(), env.getBind()); mem.setEval(env.getEval()); } mem.init(tq); Node out = tq.getExtNode(OUT, true); Mappings map = Mappings.create(tq); for (Node node : list) { map.add(Mapping.create(out, node)); } mem.setResults(map); // execute st:aggregate(?out) Node node = map.apply(exec.getEvaluator(), tq.getTemplateGroup(), mem, exec.getProducer()); return (IDatatype) node.getDatatypeValue(); }
/** * use case: result of st:apply-templates-all() list = list of ?out results * of templates create Mappings (?out = value) apply st:aggregate(?out) on * Mappings Use the st:aggregate of the query q that called * st:apply-templates-all() if q is member of this transformation, otherwise * get the st:profile of this transformation to get the appropriate * st:aggregate definition if any */ IDatatype result(Environment env, List<Node> list) { Query q = (env == null) ? null : env.getQuery(); Query tq = (q != null && contains(q)) ? q : qe.getTemplate(); Memory mem = new Memory(exec.getMatcher(), exec.getEvaluator()); exec.getEvaluator().init(mem); if (env != null){ mem.share(mem.getBind(), env.getBind()); mem.setEval(env.getEval()); } mem.init(tq); Node out = tq.getExtNode(OUT, true); Mappings map = Mappings.create(tq); for (Node node : list) { map.add(Mapping.create(out, node)); } mem.setResults(map); // execute st:aggregate(?out) Node node = map.apply(exec.getEvaluator(), tq.getTemplateGroup(), mem, exec.getProducer()); return (IDatatype) node.getDatatypeValue(); }