Package lupos.engine.operators.multiinput.join

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


  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 ReplaceVar replaceVar = (ReplaceVar) mso.get("replaceVar");

    // Generate a clone
    final ReplaceVar originalClone = new ReplaceVar();
    originalClone.setSubstitutionsVariableLeft(replaceVar
        .getSubstitutionsVariableLeft());
    originalClone.setSubstitutionsVariableRight(replaceVar
        .getSubstitutionsVariableRight());

    final LinkedList<BasicOperator> pres = (LinkedList<BasicOperator>) join
        .getPrecedingOperators();

    BasicOperator pre;
    final LinkedList<Integer> indices = new LinkedList<Integer>();
    // Remark the operator-IDs of the precessors
    for (int i = 0; i < pres.size(); i++) {
      pre = pres.get(i);
      indices.add(pre.getOperatorIDTuple(join).getId());
    }

    ReplaceVar rep;
    Projection projectionPre;
    for (int i = 0; i < pres.size(); i++) {
      pre = pres.get(i);

      // Calculate the new ReplaceVar which will be replaced between the
      // i-th precessor and the join
      rep = getReplaceAfterPre(replaceVar, originalClone, pre, join);

      // Calculate projection after precessor and new ReplaceVar
      projectionPre = getProjectionAfterReplace(rep, pre);

      added.add(rep);
      added.add(projectionPre);

      pre.setSucceedingOperator(new OperatorIDTuple(rep, 0));
      rep.setPrecedingOperator(pre);
      rep.setSucceedingOperator(new OperatorIDTuple(projectionPre, 0));

      projectionPre.setPrecedingOperator(rep);
      projectionPre.setSucceedingOperator(new OperatorIDTuple(join,
          indices.get(i)));
      join.setPrecedingOperator(projectionPre);
    }

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


    // }

    // 2. Joins erstellen
    Iterator<BasicOperator> opIt = operands.iterator();
    if (operands.size() > 1) {
      Join bottomJoin = new Join();
      BasicOperator op1 = opIt.next();
      // op1.removeFromOperatorGraph();
      // op1.getPrecedingOperators().clear();
      // headOperator.addSucceedingOperator(op1);
      op1.addSucceedingOperator(new OperatorIDTuple(bottomJoin, 0));
      BasicOperator op2 = opIt.next();
      // op2.removeFromOperatorGraph();
      // op2.getPrecedingOperators().clear();
      // headOperator.addSucceedingOperator(op2);
      op2.addSucceedingOperator(new OperatorIDTuple(bottomJoin, 1));
      while (opIt.hasNext()) {
        Join tempJoin = new Join();
        BasicOperator operand = opIt.next();
        // operand.removeFromOperatorGraph();
        // operand.getPrecedingOperators().clear();
        // headOperator.addSucceedingOperator(operand);
        operand.setSucceedingOperator(new OperatorIDTuple(tempJoin, 0));
View Full Code Here

  }

  @Override
  public BasicOperator createIndexScanAndConnectWithRoot(final OperatorIDTuple opID, final Collection<TriplePattern> triplePatterns, final Item graphConstraint) {
    if(triplePatterns.size()>1){
      final Join join = new Join();
      int i=0;
      for(final TriplePattern tp : triplePatterns){
        this.currentPatternMatcher.add(tp);
        tp.addSucceedingOperator(new OperatorIDTuple(join, i));
        i++;
      }
      if(opID!=null) {
        join.addSucceedingOperator(opID);
      }
      return join;
    } else if(triplePatterns.size()==1){
      final TriplePattern tp = triplePatterns.iterator().next();
      if(opID!=null) {
View Full Code Here

        final InMemoryDistinct memoryDistinct = new InMemoryDistinct();
        final Filter filter = new Filter("(" + subject + " != " + object + ")");

        startingOperator.addSucceedingOperator(new OperatorIDTuple(filter,0));
        startingOperator.addSucceedingOperator(connection.getOperatorIDTuple());
        final Join intermediateJoinOperator = new Join();
        replaceVar.addSucceedingOperator(new OperatorIDTuple(memoryDistinct,0));
        memoryDistinct.addSucceedingOperator(new OperatorIDTuple(intermediateJoinOperator,1));
        filter.addSucceedingOperator(new OperatorIDTuple(intermediateJoinOperator,0));
        filter.addSucceedingOperator(new OperatorIDTuple(replaceVar,0));
        intermediateJoinOperator.addSucceedingOperator(new OperatorIDTuple(replaceVari,0));
        replaceVari.addSucceedingOperator(new OperatorIDTuple(replaceVar,0));
        replaceVari.addSucceedingOperator(connection.getOperatorIDTuple());

        if(subjectIsALiteral && !objectIsALiteral){
          final Filter firstFilter = new Filter("(" + subject + " = " + realSubject +")");
View Full Code Here

          replaceVari.addSubstitution((Variable)graphConstraint, (Variable)graphConstraint);
        }

        startingOperator.addSucceedingOperator(new OperatorIDTuple(filter,0));
        startingOperator.addSucceedingOperator(new OperatorIDTuple(union,1));
        final Join intermediateJoinOperator = new Join();
        replaceVar.addSucceedingOperator(new OperatorIDTuple(memoryDistinct,0));
        memoryDistinct.addSucceedingOperator(new OperatorIDTuple(intermediateJoinOperator,1));
        filter.addSucceedingOperator(new OperatorIDTuple(intermediateJoinOperator,0));
        filter.addSucceedingOperator(new OperatorIDTuple(replaceVar,0));
        intermediateJoinOperator.addSucceedingOperator(new OperatorIDTuple(replaceVari,0));
        replaceVari.addSucceedingOperator(new OperatorIDTuple(replaceVar,0));
        replaceVari.addSucceedingOperator(new OperatorIDTuple(union,1));
        union.addSucceedingOperator(new OperatorIDTuple(projection,0));

        //Zero Operator
View Full Code Here

          replaceVari.addSubstitution((Variable)graphConstraint, (Variable)graphConstraint);
        }

        startingOperator.addSucceedingOperator(new OperatorIDTuple(filter,0));
        startingOperator.addSucceedingOperator(new OperatorIDTuple(projection,0));
        final Join intermediateJoinOperator = new Join();
        replaceVar.addSucceedingOperator(new OperatorIDTuple(memoryDistinct,0));
        memoryDistinct.addSucceedingOperator(new OperatorIDTuple(intermediateJoinOperator,1));
        filter.addSucceedingOperator(new OperatorIDTuple(intermediateJoinOperator,0));
        filter.addSucceedingOperator(new OperatorIDTuple(replaceVar,0));
        intermediateJoinOperator.addSucceedingOperator(new OperatorIDTuple(replaceVari,0));
        replaceVari.addSucceedingOperator(new OperatorIDTuple(replaceVar,0));
        replaceVari.addSucceedingOperator(new OperatorIDTuple(projection,0));

      } catch (final ParseException e) {
        System.out.println(e);
View Full Code Here

  }

  @Override
  public BasicOperator visit(final ASTPathSequence node, final OperatorConnection connection,
      final Item graphConstraint, final Variable subject, final Variable object, final Node subjectNode, final Node objectNode) {
    final Join join = new Join();
    final Variable v = this.getVariable(subject.toString(), object.toString(), "b");
//    final Node n0 = node.jjtGetChild(0);
//    if(n0 instanceof ASTQuotedURIRef){
//      final Item[] items = {subject, getItem(node.jjtGetChild(0)), v};
//      final TriplePattern tp = new TriplePattern(items);
//      final LinkedList<TriplePattern> temp = new LinkedList<TriplePattern>();
//      temp.add(tp);
//      this.indexScanCreator.createIndexScanAndConnectWithRoot(new OperatorIDTuple(join, 0), temp, graphConstraint);
//    } else {
      final BasicOperator startingOperator2 = node.jjtGetChild(0).accept(this, connection, graphConstraint, subject, v, subjectNode, objectNode);
      startingOperator2.addSucceedingOperator(new OperatorIDTuple(join, 0));
//    }
    final BasicOperator startingOperator = node.jjtGetChild(1).accept(this, connection, graphConstraint, v, object, subjectNode, objectNode);
    startingOperator.addSucceedingOperator(new OperatorIDTuple(join,1));
    final Projection projection = new Projection();
    projection.addProjectionElement(subject);
    projection.addProjectionElement(object);
    if(graphConstraint!=null && graphConstraint.isVariable() && !graphConstraint.equals(getItem(subjectNode)) && !graphConstraint.equals(getItem(objectNode))) {
      projection.addProjectionElement((Variable)graphConstraint);
    }
    join.addSucceedingOperator(new OperatorIDTuple(projection,0));
    return projection;
  }
View Full Code Here

    for (int i = 0; i < numberChildren; i++) {
      if (node.jjtGetChild(i) instanceof ASTBindings) {

        // Inserting the join operation
        final ComputeBindings computeBindings = new ComputeBindings(this.getQueryResultFromValuesClause((ASTBindings)node.jjtGetChild(i)));
        final Join join = new Join();
        join.addSucceedingOperator(this.result);

        computeBindings.addSucceedingOperator(new OperatorIDTuple(join,1));

        this.indexScanCreator.createEmptyIndexScanAndConnectWithRoot(new OperatorIDTuple(computeBindings, 0));
        lastOperator = join;
View Full Code Here

        numberJoinPartner++;
      }
      numberJoinPartner+=multipleOccurencesToJoin.size();

      if (numberJoinPartner > 1) {
        final Join joinOperator = new Join();
        connection.connect(joinOperator);
        int j = 0;
        for (int i = 0; i < node.jjtGetNumChildren(); i++) {
          final Node n = node.jjtGetChild(i);
          connection.setOperatorConnection(joinOperator, j);
View Full Code Here

                  for(final OperatorIDTuple opID: bi.getSucceedingOperators()){
                    opID.getOperator().addPrecedingOperator(newTP);
                  }
                } else {
                  bi.getTriplePattern().remove(tp);
                  final Join join = new Join();
                  join.setUnionVariables(bi.getUnionVariables());
                  bi.recomputeVariables();
                  tp.recomputeVariables();
                  final HashSet<Variable> joinVars = new HashSet<Variable>(tp.getUnionVariables());
                  joinVars.retainAll(bi.getUnionVariables());
                  join.setIntersectionVariables(joinVars);
                  for(final OperatorIDTuple opID: bi.getSucceedingOperators()){
                    final BasicOperator suc = opID.getOperator();
                    suc.removePrecedingOperator(bi);
                    suc.addPrecedingOperator(join);
                  }
                  join.setSucceedingOperators(bi.getSucceedingOperators());
                  bi.setSucceedingOperator(new OperatorIDTuple(join, 0));
                  join.addPrecedingOperator(bi);

                  final LinkedList<TriplePattern> tpList = new LinkedList<TriplePattern>();
                  tpList.add(tp);
                  final BasicIndexScan newIndex = ((Root)rootQuery).newIndexScan(new OperatorIDTuple(join, 1), tpList, bi.getGraphConstraint());
                  newIndex.recomputeVariables();
                  join.addPrecedingOperator(newIndex);
                  rootQuery.addSucceedingOperator(newIndex);
                  newIndex.addPrecedingOperator(rootQuery);
                  newTP.addSucceedingOperator(new OperatorIDTuple(join, 1));
                  join.addPrecedingOperator(newTP);

                  toBeConnectedTo.add(newIndex);
                }
              }
            }
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.