fr.inria.corese.kgram.core.Query.getProperAndSubSelectNode()方法的使用及代码示例

x33g5p2x  于2022-01-28 转载在 其他  
字(5.3k)|赞(0)|评价(0)|浏览(165)

本文整理了Java中fr.inria.corese.kgram.core.Query.getProperAndSubSelectNode方法的一些代码示例,展示了Query.getProperAndSubSelectNode的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Query.getProperAndSubSelectNode方法的具体详情如下:
包路径:fr.inria.corese.kgram.core.Query
类名称:Query
方法名:getProperAndSubSelectNode

Query.getProperAndSubSelectNode介绍

[英]get node with going in select sub query go into its own select because order by may reuse a select variable use case: transformer find node for select & group by
[中]进入选择子查询获取节点进入其自己的选择,因为order by可能会重用选择变量用例:transformer find node for select&group by

代码示例

代码示例来源:origin: fr.inria.corese/kgram

  1. /**
  2. * Used by aggregate, stack is empty, search in query go also into subquery
  3. * select because outer query may reference an inner variable in an outer
  4. * aggregate use case: select count(?x) as ?count where { {select ?x where
  5. * {...}} }
  6. */
  7. @Override
  8. public Node getQueryNode(String name) {
  9. Node node = query.getProperAndSubSelectNode(name);
  10. return node;
  11. }

代码示例来源:origin: fr.inria.corese/compiler

  1. Node getProperAndSubSelectNode(Query q, String name) {
  2. Node node;
  3. if (Query.test) {
  4. node = q.getSelectNodes(name);
  5. } else {
  6. node = q.getProperAndSubSelectNode(name);
  7. }
  8. return node;
  9. }

代码示例来源:origin: Wimmics/corese

  1. Node getProperAndSubSelectNode(Query q, String name) {
  2. Node node;
  3. if (Query.test) {
  4. node = q.getSelectNodes(name);
  5. } else {
  6. node = q.getProperAndSubSelectNode(name);
  7. }
  8. return node;
  9. }

代码示例来源:origin: fr.inria.corese/kgram

  1. public List<Node> getNodes(Filter f) {
  2. List<String> lVar = f.getVariables();
  3. ArrayList<Node> lNode = new ArrayList<Node>();
  4. for (String var : lVar) {
  5. Node node = getProperAndSubSelectNode(var);
  6. if (node != null && !lNode.contains(node)) {
  7. lNode.add(node);
  8. }
  9. }
  10. return lNode;
  11. }

代码示例来源:origin: fr.inria.corese/kgram

  1. void getAggNodes(Expr exp, ArrayList<Node> lNode) {
  2. if (exp.type() == ExprType.VARIABLE) {
  3. Node node = getProperAndSubSelectNode(exp.getLabel());
  4. if (node != null && !lNode.contains(node)) {
  5. lNode.add(node);
  6. }
  7. } else {
  8. for (Expr ee : exp.getExpList()) {
  9. getAggNodes(ee, lNode);
  10. }
  11. }
  12. }

代码示例来源:origin: fr.inria.corese/kgram

  1. /**
  2. * TODO: remove duplicates in getVariables()
  3. * use case:
  4. * function us:fun(?x){let (select ?x where {}) {}}
  5. * variable ?x appears twice in the stack because it is redefined in the let clause
  6. */
  7. public Mapping getMapping(Query q) {
  8. ArrayList<Node> lvar = new ArrayList();
  9. ArrayList<Node> lval = new ArrayList();
  10. for (Expr var : getVariables()) {
  11. Node node = q.getProperAndSubSelectNode(var.getLabel());
  12. if (node != null && ! lvar.contains(node)) {
  13. lvar.add(node);
  14. lval.add(get(var));
  15. }
  16. }
  17. Mapping m = Mapping.create(lvar, lval);
  18. return m;
  19. }

代码示例来源:origin: fr.inria.corese/kgram

  1. /**
  2. * TODO: remove duplicates in getVariables()
  3. * use case:
  4. * function us:fun(?x){let (select ?x where {}) {}}
  5. * variable ?x appears twice in the stack because it is redefined in the let clause
  6. */
  7. public static Mapping create(Query q, Binder b) {
  8. ArrayList<Node> lvar = new ArrayList();
  9. ArrayList<Node> lval = new ArrayList();
  10. for (Expr var : b.getVariables()) {
  11. Node node = q.getProperAndSubSelectNode(var.getLabel());
  12. if (node != null && !lvar.contains(node)) {
  13. lvar.add(node);
  14. lval.add(b.get(var));
  15. }
  16. }
  17. Mapping m = Mapping.create(lvar, lval);
  18. return m;
  19. }

代码示例来源:origin: fr.inria.corese/kgram

  1. Exp buildCst(Exp exp, int type){
  2. Filter ff = exp.getFilter();
  3. Expr ee = ff.getExp();
  4. Node node = query.getProperAndSubSelectNode(ff.getVariables().get(0));
  5. if (node != null){
  6. // variable ?x
  7. Exp bind = Exp.create(type, Exp.create(Exp.NODE, node));
  8. List<Expr> list = new ArrayList<Expr>();
  9. list.add(getConstants(ee).get(0));
  10. bind.setObject(list);
  11. return bind;
  12. }
  13. return null;
  14. }

代码示例来源:origin: fr.inria.corese/kgram

  1. /**
  2. * ! bound(?x)
  3. */
  4. void not(Exp exp){
  5. Filter ff = exp.getFilter();
  6. Expr ee = ff.getExp();
  7. Pattern pat = new Pattern(BOOLEAN, NOT, new Pattern(FUNCTION, BOUND, VARIABLE));
  8. if (matcher.match(pat, ee)){
  9. // ! bound(?x)
  10. List<String> list = ff.getVariables();
  11. if (list.size()>0){
  12. Node node = query.getProperAndSubSelectNode(list.get(0));
  13. if (node != null){
  14. exp.setNode(node);
  15. exp.status(true);
  16. }
  17. }
  18. }
  19. }

代码示例来源:origin: fr.inria.corese/kgram

  1. /**
  2. * Generate or retrieve index of node If node is in a sub query, return the
  3. * index of the outer node corresponding to node and rec.
  4. */
  5. int qIndex(Query query, Node node) {
  6. int n = index(node);
  7. if (query != this && query.inSelect(node)) {
  8. // get the outer node for this sub select sNode
  9. Node oNode = query.getOuterQuery().getProperAndSubSelectNode(node.getLabel());
  10. if (oNode != null) {
  11. n = qIndex(query.getOuterQuery(), oNode);
  12. }
  13. }
  14. return n;
  15. }

代码示例来源:origin: fr.inria.corese/kgram

  1. void in(Exp exp) {
  2. Filter ff = exp.getFilter();
  3. Expr expr = ff.getExp();
  4. List<String> lvar = ff.getVariables();
  5. Expr var = expr.getExp(0);
  6. if (! var.isVariable()){
  7. return;
  8. }
  9. List<Expr> values = expr.getExp(1).getExpList();
  10. List<Expr> list = new ArrayList<Expr>();
  11. //all has to be constants
  12. for (Expr e : values) {
  13. if (e.type() != CONSTANT) {
  14. return;
  15. }
  16. list.add(e);
  17. }
  18. Node node = query.getProperAndSubSelectNode(lvar.get(0));
  19. if (node != null) {
  20. Exp bind = Exp.create(Exp.OPT_BIND, Exp.create(Exp.NODE, node));
  21. bind.setObject(list);
  22. exp.add(bind);
  23. }
  24. }

代码示例来源:origin: fr.inria.corese/kgram

  1. /**
  2. * ?x = cst1 || ?x = cst2
  3. */
  4. void or(Exp exp){
  5. Filter ff = exp.getFilter();
  6. Expr ee = ff.getExp();
  7. Pattern pat = new Pattern(BOOLEAN, OR, new Pattern(TERM, EQ, VARIABLE, CONSTANT));
  8. pat.setRec(true);
  9. pat.setMatchConstant(false);
  10. if (matcher.match(pat, ee)) {
  11. Node node = query.getProperAndSubSelectNode(ff.getVariables().get(0));
  12. if (node != null){
  13. List<Expr> list = getConstants(ee);
  14. Exp bind = Exp.create(Exp.OPT_BIND, Exp.create(Exp.NODE, node));
  15. bind.setObject(list);
  16. exp.add(bind);
  17. }
  18. }
  19. }

代码示例来源:origin: fr.inria.corese/kgram

  1. Node qNode = query.getProperAndSubSelectNode(var);
  2. if (qNode != null) {
  3. n = qIndex(query, qNode);

相关文章