Package lupos.engine.operators

Examples of lupos.engine.operators.BasicOperator


  private BasicIndexScan getIndexScan(final BasicOperator root) {
    final List<OperatorIDTuple> succs = root.getSucceedingOperators();
    if (succs == null | succs.size() == 0)
      return null;
    for (final OperatorIDTuple succ : succs) {
      final BasicOperator op = succ.getOperator();
      if (op instanceof BasicIndexScan) {
        return (BasicIndexScan) op;
      } else {
        BasicIndexScan res = null;
        /*
 
View Full Code Here


    final int index = replaceLit.getOperatorIDTuple(filter).getId();

    // If everything could be pushed downwards, the old ReplaceLit can be
    // deleted
    if (replaceLit.getSubstitutionsLiteralLeft().size() == 0) {
      BasicOperator pre;
      for (int i = 0; i < pres.size(); i++) {
        pre = pres.get(i);
        pre.addSucceedingOperator(new OperatorIDTuple(filter, index));
        pre.removeSucceedingOperator(replaceLit);
        filter.addPrecedingOperator(pre);
      }
      filter.removePrecedingOperator(replaceLit);
      deleted.add(replaceLit);
    }

    // Insert the new ReplaceLit under the Join
    filter.setSucceedingOperator(new OperatorIDTuple(replaceLitUnder, 0));

    replaceLitUnder.setPrecedingOperator(filter);
    replaceLitUnder.setSucceedingOperators(succs);

    BasicOperator succ;
    for (int i = 0; i < succs.size(); i++) {
      succ = succs.get(i).getOperator();
      succ.addPrecedingOperator(replaceLitUnder);
      succ.removePrecedingOperator(filter);
    }

    rootOperator.deleteParents();
    rootOperator.setParents();
    rootOperator.detectCycles();
View Full Code Here

    if (pat.getSucceedingOperators().size() != 1) {
      return false;
    }

    final ReplaceVar replaceVar = (ReplaceVar) mso.get("replaceVar");
    BasicOperator op = replaceVar.getSucceedingOperators().get(0)
        .getOperator();
    // Ignore ReplaceLit and get the Projection
    if (op instanceof ReplaceLit) {
      op = op.getSucceedingOperators().get(0).getOperator();
    }
    if (!(op instanceof Projection)) {
      System.err
          .println("Replace has not Projection as direct successor or after its ReplaceLit => Correct RuleOptimizeReplaceByPat!!!");
      return false;
View Full Code Here

    final Collection<BasicOperator> deleted = new LinkedList<BasicOperator>();
    final Collection<BasicOperator> added = new LinkedList<BasicOperator>();
    final TriplePattern pat = (TriplePattern) mso.get("pat");
    final ReplaceVar replaceVar = (ReplaceVar) mso.get("replaceVar");

    BasicOperator op = replaceVar.getSucceedingOperators().get(0)
        .getOperator();
    if (op instanceof ReplaceLit) {
      op = op.getSucceedingOperators().get(0).getOperator();
    }
    final Projection proj = (Projection) op;

    final LinkedList<Variable> replaceVarLeft = replaceVar
        .getSubstitutionsVariableLeft();
View Full Code Here

    return false;
  }

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

    return !checkRecursiveForJoinOrOptional(join)
        && super.checkPrecondition(mso);
  }
View Full Code Here

    startNode = a;
  }

  @Override
  protected boolean checkPrecondition(final Map<String, BasicOperator> mso) {
    final BasicOperator join = mso.get("join");
    if (isBLOCKWISE()
        && (join instanceof MergeJoinWithoutSorting || join instanceof MergeWithoutSortingOptional)) {
      // blockwise does not work for merge joins/optionals!
      return false;
    } else
View Full Code Here

      final Map<String, BasicOperator> mso,
      final BasicOperator rootOperator) {
    final Collection<BasicOperator> deleted = new LinkedList<BasicOperator>();
    final Collection<BasicOperator> added = new LinkedList<BasicOperator>();
    OperatorIDTuple tuple;
    final BasicOperator join = mso.get("join");
    final List<BasicOperator> pre = join.getPrecedingOperators();

    join.setPrecedingOperators(new LinkedList<BasicOperator>());

    for (final BasicOperator op : pre) {
      if (op instanceof ParallelOperand
          || op instanceof QueryResultInBlocks) {
        join.addPrecedingOperator(op);
        continue;
      }

      final Operator par = new ParallelOperand();
      par.addPrecedingOperator(op);
      added.add(par);

      final Operator maybequeryresultinblocks;
      if (isBLOCKWISE()) {
        maybequeryresultinblocks = new QueryResultInBlocks();
        added.add(maybequeryresultinblocks);
        par.setSucceedingOperator(new OperatorIDTuple(
            maybequeryresultinblocks, 0));
        maybequeryresultinblocks.addPrecedingOperator(par);
      } else {
        maybequeryresultinblocks = par;
      }
      tuple = op.getOperatorIDTuple(join);
      op.replaceOperatorIDTuple(tuple, new OperatorIDTuple(par, 0));

      join.addPrecedingOperator(maybequeryresultinblocks);
      maybequeryresultinblocks.addSucceedingOperator(new OperatorIDTuple(
          join, tuple.getId()));
    }

    rootOperator.detectCycles();
View Full Code Here

    final LinkedList<BasicOperator> pres = (LinkedList<BasicOperator>) projection
        .getPrecedingOperators();
    final LinkedList<OperatorIDTuple> succs = (LinkedList<OperatorIDTuple>) replaceVar
        .getSucceedingOperators();

    BasicOperator pre;
    for (int i = 0; i < pres.size(); i++) {
      pre = pres.get(i);
      pre.addSucceedingOperator(new OperatorIDTuple(replaceVar_new, 0));
      pre.removeSucceedingOperator(projection);
    }

    replaceVar_new.setPrecedingOperators(pres);
    replaceVar_new
        .setSucceedingOperator(new OperatorIDTuple(projection, 0));
View Full Code Here

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

    // If everything could be pushed downwards, the old ReplaceLit can be
    // deleted
    if (replaceLit.getSubstitutionsLiteralLeft().size() == 0) {
      BasicOperator pre;
      for (int i = 0; i < pres.size(); i++) {
        pre = pres.get(i);
        pre.addSucceedingOperator(new OperatorIDTuple(join, index));
        pre.removeSucceedingOperator(replaceLit);
        join.addPrecedingOperator(pre);
      }
      join.removePrecedingOperator(replaceLit);
      deleted.add(replaceLit);
    }

    // Insert the new ReplaceLit under the Join
    // (only if there is not already an equivalent ReplaceLit!)
    if (!((join.getSucceedingOperators().size() == 1)
        && (join.getSucceedingOperators().get(0).getOperator() instanceof ReplaceLit) && (replaceLitUnder
        .equals(join.getSucceedingOperators().get(0).getOperator())))) {
      join.setSucceedingOperator(new OperatorIDTuple(replaceLitUnder, 0));

      replaceLitUnder.setPrecedingOperator(join);
      replaceLitUnder.setSucceedingOperators(succs);
      added.add(replaceLitUnder);
    }

    BasicOperator succ;
    for (int i = 0; i < succs.size(); i++) {
      succ = succs.get(i).getOperator();
      succ.addPrecedingOperator(replaceLitUnder);
      succ.removePrecedingOperator(join);
    }

    rootOperator.deleteParents();
    rootOperator.setParents();
    rootOperator.detectCycles();
View Full Code Here

          "Generate has more predecessors => Correct RuleSplitGenerate!!!"));
    } else {
      final List<OperatorIDTuple> succs = generate
          .getSucceedingOperators();

      final BasicOperator pre = pres.get(0);

      Generate generate_new;

      pre.removeSucceedingOperator(generate);
      deleted.add(generate);

      // For each successor
      for (int i = 0; i < succs.size(); i++) {
        // generate a new Generate and connect it to the i-th successor
        generate_new = new Generate((TriplePattern) succs.get(i)
            .getOperator(), generate.getValueOrVariable());
        added.add(generate_new);
        // connect the new one instead of the old Generate to the
        // predecessors
        generate_new.setPrecedingOperators(pres);
        pre.addSucceedingOperator(new OperatorIDTuple(generate_new, 0));
      }

      rootOperator.deleteParents();
      rootOperator.setParents();
      rootOperator.detectCycles();
View Full Code Here

TOP

Related Classes of lupos.engine.operators.BasicOperator

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.