Package lupos.engine.operators.multiinput.join

Examples of lupos.engine.operators.multiinput.join.Join


    startNode = join;
  }

  @Override
  protected boolean checkPrecondition(final Map<String, BasicOperator> mso) {
    final Join join = (Join) mso.get("join");
    int numberLeftOperands = 0;
    int numberRightOperands = 0;
    for (final BasicOperator prec : join.getPrecedingOperators()) {
      if (prec.getOperatorIDTuple(join).getId() == 1)
        numberRightOperands++;
      else
        numberLeftOperands++;
    }
View Full Code Here


  public Tuple<Collection<BasicOperator>, Collection<BasicOperator>> transformOperatorGraph(
      final Map<String, BasicOperator> mso,
      final BasicOperator rootOperator) {
    final Collection<BasicOperator> deleted = new LinkedList<BasicOperator>();
    final Collection<BasicOperator> added = new LinkedList<BasicOperator>();
    final Join join = (Join) mso.get("join");
    final LinkedList<BasicOperator> leftOperands = new LinkedList<BasicOperator>();
    final LinkedList<BasicOperator> rightOperands = new LinkedList<BasicOperator>();
    for (final BasicOperator prec : join.getPrecedingOperators()) {
      final OperatorIDTuple oidt = prec.getOperatorIDTuple(join);
      if (prec.getOperatorIDTuple(join).getId() == 0)
        leftOperands.add(prec);
      else
        rightOperands.add(prec);
View Full Code Here

      final TriplePattern tp2) {
    try {
      final Filter f1 = new Filter(filter1);
      final Filter f2 = new Filter(filter2);
      final Generate g = new Generate(tp, a, b, c);
      final Join join = new Join();
      f1.addSucceedingOperator(new OperatorIDTuple(join, 0));
      f2.addSucceedingOperator(new OperatorIDTuple(join, 1));
      join.addSucceedingOperator(new OperatorIDTuple(g, 0));
      tp1.setSucceedingOperator(new OperatorIDTuple(f1, 0));
      tp2.setSucceedingOperator(new OperatorIDTuple(f2, 0));
      final Collection<TriplePattern> ctp1 = new LinkedList<TriplePattern>();
      ctp1.add(tp1);
      ic.addSucceedingOperator(new OperatorIDTuple(ic.newIndexScan(
View Full Code Here

      final Item b, final Item c, final String filter1,
      final TriplePattern tp1, final TriplePattern tp2) {
    try {
      final Filter f1 = new Filter(filter1);
      final Generate g = new Generate(tp, a, b, c);
      final Join join = new Join();
      f1.addSucceedingOperator(new OperatorIDTuple(join, 0));
      join.addSucceedingOperator(new OperatorIDTuple(g, 0));
      tp1.setSucceedingOperator(new OperatorIDTuple(f1, 0));
      tp2.setSucceedingOperator(new OperatorIDTuple(join, 1));
      final Collection<TriplePattern> ctp1 = new LinkedList<TriplePattern>();
      ctp1.add(tp1);
      ic.addSucceedingOperator(new OperatorIDTuple(ic.newIndexScan(
View Full Code Here

        for (final TriplePattern tp : tsi.getTriplePattern()) {
          pm.add(tp);
          tp.setPrecedingOperator(pm);
        }
      else {
        final Join j = new Join();
        j.setSucceedingOperator(tsi.getSucceedingOperators().get(0));
        int i = 0;
        final HashSet<Variable> unionVariables = new HashSet<Variable>();
        final HashSet<Variable> intersectionVariables = new HashSet<Variable>();
        intersectionVariables.addAll(tsi.getTriplePattern().iterator()
            .next().getUnionVariables());
        for (final TriplePattern tp : tsi.getTriplePattern()) {
          final LinkedList<OperatorIDTuple> succeedingOperatorsTP = new LinkedList<OperatorIDTuple>();
          succeedingOperatorsTP.add(new OperatorIDTuple(j, i));
          tp.addSucceedingOperators(succeedingOperatorsTP);
          j.addPrecedingOperator(tp);
          pm.add(tp);
          tp.addPrecedingOperator(pm);
          unionVariables.addAll(tp.getUnionVariables());
          intersectionVariables.retainAll(tp.getUnionVariables());
          i++;
        }
        j.setUnionVariables(unionVariables);
        j.setIntersectionVariables(intersectionVariables);
      }
    }
  }
View Full Code Here

public class RuleGenerateAddOverJoin extends Rule {

  @Override
  protected void init() {
    final GenerateAddEnv genAdd = new GenerateAddEnv();
    final Join join = new Join();

    genAdd.setSucceedingOperator(new OperatorIDTuple(join, -1));
    join.setPrecedingOperator(genAdd);

    subGraphMap = new HashMap<BasicOperator, String>();
    subGraphMap.put(genAdd, "genAdd");
    subGraphMap.put(join, "join");
View Full Code Here

    startNode = genAdd;
  }

  @Override
  protected boolean checkPrecondition(final Map<String, BasicOperator> mso) {
    final Join join = (Join) mso.get("join");
    final GenerateAddEnv genAdd = (GenerateAddEnv) mso.get("genAdd");

    final Object[] joinVars = join.getIntersectionVariables().toArray();
    final Object[] v = genAdd.getConstants().keySet().toArray();

    // If there is minimum one substitution which can be pulled down
    for (int i = 0; i < v.length; i++) {
      // Otherwise join could trigger after transformation
View Full Code Here

  @Override
  public Tuple<Collection<BasicOperator>, Collection<BasicOperator>> transformOperatorGraph(
      final Map<String, BasicOperator> mso,
      final BasicOperator rootOperator) {
    final GenerateAddEnv genAdd = (GenerateAddEnv) mso.get("genAdd");
    final Join join = (Join) mso.get("join");

    final LinkedList<BasicOperator> pres = (LinkedList<BasicOperator>) genAdd
        .getPrecedingOperators();
    final LinkedList<OperatorIDTuple> succs = (LinkedList<OperatorIDTuple>) join
        .getSucceedingOperators();

    final int index = genAdd.getOperatorIDTuple(join).getId();

    BasicOperator pre;
    for (int i = 0; i < pres.size(); i++) {
      pre = pres.get(i);
      pre.addSucceedingOperator(new OperatorIDTuple(join, index));
      pre.removeSucceedingOperator(genAdd);
      join.addPrecedingOperator(pre);
    }

    join.removePrecedingOperator(genAdd);
    join.setSucceedingOperator(new OperatorIDTuple(genAdd, 0));

    genAdd.setPrecedingOperator(join);
    genAdd.setSucceedingOperators(succs);

    BasicOperator succ;
View Full Code Here

      if (!visited.contains(tp)) {
        BasicIndexScan idx;
        if (succ.size() == 1) {
          if (succ.size() == 1
              && succ.get(0).getOperator() instanceof Join) {
            final Join tj = findTopJoin((Join) succ.get(0)
                .getOperator());
            if (tj != null) {
              // final List<Join> bottomJoins = new
              // LinkedList<Join>();
              // final boolean complete = findBottomJoins(tj,
              // null,
              // bottomJoins);

              // final List<TriplePattern> tps =
              // collectPredTPs(tj,
              // bottomJoins, visited);

              final List<TriplePattern> tps = new LinkedList<TriplePattern>();
              final boolean complete = collectPredTPs(tj, tps);

              visited.addAll(tps);

              idx = ic.newIndexScan(null, tps, null);

              final HashSet<Variable> hsv = new HashSet<Variable>();
              for (final TriplePattern stp : tps) {
                hsv.addAll(stp.getUnionVariables());
              }

              idx.setIntersectionVariables(hsv);
              idx.setUnionVariables(hsv);

              if (complete) {
                idx.setSucceedingOperators(tj
                    .getSucceedingOperators());
              } else {
                for (final BasicOperator prec : tj
                    .getPrecedingOperators()) {
                  if (collectPredTPs(prec,
                      new LinkedList<TriplePattern>())) {
                    final int operandID = prec
                    .getOperatorIDTuple(tj).getId();
View Full Code Here

    // ic.sendMessage(new BoundVariablesMessage());
  }

  private static Join findTopJoin(final Join j) {
    // Join lastJoin = null;
    Join curJoin = j;
    while (true) {
      final List<OperatorIDTuple> succ = curJoin.getSucceedingOperators();
      // for (final BasicOperator op : curJoin.getPrecedingOperators()) {
      // if (!(op instanceof Join || op instanceof TriplePattern))
      // return lastJoin;
      // }
      if (succ.size() != 1
View Full Code Here

TOP

Related Classes of lupos.engine.operators.multiinput.join.Join

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.