Beispiel #1
0
  public static Collection<Quad> collectQuads(Op op, Collection<Quad> result) {
    if (op instanceof OpLeftJoin) {
      OpLeftJoin x = (OpLeftJoin) op;
      collectQuads(x.getLeft(), result);
      collectQuads(x.getRight(), result);
    } else if (op instanceof OpFilter) {
      OpFilter x = (OpFilter) op;
      collectQuads(x.getSubOp(), result);
    } else if (op instanceof OpJoin) {
      OpJoin x = (OpJoin) op;

      collectQuads(x.getLeft(), result);
      collectQuads(x.getRight(), result);
    } else if (op instanceof OpUnion) {
      System.out.println(
          "Warning: Collecting expressions from unions. Since the same vars may appear within different (parts of) unions, it may be ambiguous to which part the expression refers.");

      OpUnion x = (OpUnion) op;

      collectQuads(x.getLeft(), result);
      collectQuads(x.getRight(), result);
    } else if (op instanceof OpQuadPattern) {
      OpQuadPattern x = (OpQuadPattern) op;
      result.addAll(x.getPattern().getList());
    } else if (op instanceof OpSequence) {
      OpSequence x = (OpSequence) op;
      for (Op element : x.getElements()) {
        collectQuads(element, result);
      }
    } else {
      throw new NotImplementedException("Encountered class: " + op);
    }

    return result;
  }
  public static ExprList collectExprs(Op op, ExprList result) {
    if (op instanceof OpLeftJoin) {
      OpLeftJoin x = (OpLeftJoin) op;

      if (x.getExprs() != null) {
        result.addAll(x.getExprs());
      }

      collectExprs(x.getLeft(), result);
      collectExprs(x.getRight(), result);
    } else if (op instanceof OpFilter) {
      OpFilter x = (OpFilter) op;
      result.addAll(x.getExprs());
      collectExprs(x.getSubOp(), result);
    } else if (op instanceof OpJoin) {
      OpJoin x = (OpJoin) op;

      collectExprs(x.getLeft(), result);
      collectExprs(x.getRight(), result);
    } else if (op instanceof OpUnion) {
      System.out.println(
          "Warning: Collecting expressions from unions. Since the same vars may appear within different (parts of) unions, it may be ambiguous to which part the expression refers.");

      OpUnion x = (OpUnion) op;

      collectExprs(x.getLeft(), result);
      collectExprs(x.getRight(), result);
    } else if (op instanceof OpQuadPattern) {

    } else if (op instanceof OpSequence) {
      OpSequence x = (OpSequence) op;
      for (Op element : x.getElements()) {
        collectExprs(element, result);
      }
    } else {
      throw new RuntimeException("Not implemented. Type: " + op.getClass());
    }

    return result;
  }
 public void visit(OpJoin opJoin) {
   Table left = eval(opJoin.getLeft());
   Table right = eval(opJoin.getRight());
   Table table = evaluator.join(left, right);
   push(table);
 }