Package lupos.engine.operators.singleinput.filter

Examples of lupos.engine.operators.singleinput.filter.Filter


public class RuleGenerateAddOverFilter extends Rule {

  @Override
  protected void init() {
    final GenerateAddEnv genAdd = new GenerateAddEnv();
    final Filter filter = new Filter();

    genAdd.setSucceedingOperator(new OperatorIDTuple(filter, 0));
    filter.setPrecedingOperator(genAdd);

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


    startNode = genAdd;
  }

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

    final Object[] filterVars = filter.getUsedVariables().toArray();
    final Object[] v = genAdd.getConstants().keySet().toArray();
    for (int i = 0; i < v.length; i++) {
      if (arrayContains(filterVars, (Variable) v[i])) {
        return false;
      }
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 Filter filter = (Filter) mso.get("filter");

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

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

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

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

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

    BasicOperator succ;
View Full Code Here

public class RuleReplaceLitOverFilter extends Rule {

  @Override
  protected void init() {
    final ReplaceLit replaceLit = new ReplaceLit();
    final Filter filter = new Filter();

    replaceLit.setSucceedingOperator(new OperatorIDTuple(filter, -1));
    filter.setPrecedingOperator(replaceLit);

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

    startNode = replaceLit;
  }

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

    final Object[] filterVars = filter.getUsedVariables().toArray();
    final LinkedList<Variable> v = replaceLit.getSubstitutionsLiteralLeft();

    // If there is minimum one substitution which can be pulled down
    for (int i = 0; i < v.size(); i++) {
      if (!arrayContains(filterVars, v.get(i))) {
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>();
    final ReplaceLit replaceLit = (ReplaceLit) mso.get("replaceLit");
    final Filter filter = (Filter) mso.get("filter");

    final ReplaceLit replaceLitUnder = new ReplaceLit();
    added.add(replaceLitUnder);
    final Collection<Variable> vars = new HashSet<Variable>();
    vars.addAll(filter.getIntersectionVariables());
    replaceLitUnder.setIntersectionVariables(vars);
    replaceLitUnder.setUnionVariables(vars);

    final Object[] filterVars = filter.getUsedVariables().toArray();
    final LinkedList<Variable> replaceLitLeft = replaceLit
        .getSubstitutionsLiteralLeft();
    final LinkedList<Literal> replaceLitRight = replaceLit
        .getSubstitutionsLiteralRight();
    Variable var;
    Literal lit;
    for (int i = replaceLitLeft.size() - 1; i >= 0; i--) {
      var = replaceLitLeft.get(i);
      // Split ReplaceLit and pull only not intersection variables
      // downwards
      if (!arrayContains(filterVars, var)) {
        lit = replaceLitRight.get(i);
        replaceLitUnder.addSubstitution(var, lit);
        replaceLit.removeSubstitutionVars(i);
        replaceLitUnder.getIntersectionVariables().add(var); // var is
        // also
        // added
        // to
        // unionVariables
        // as
        // they
        // are
        // the
        // same
        // objects
        // !
      }
    }

    final LinkedList<BasicOperator> pres = (LinkedList<BasicOperator>) replaceLit
        .getPrecedingOperators();
    final LinkedList<OperatorIDTuple> succs = (LinkedList<OperatorIDTuple>) filter
        .getSucceedingOperators();
    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;
View Full Code Here

    final Item[] patItems = pat.getItems();
    final Item[] generateItems = generate.getValueOrVariable();

    // System.out.println(generate.toString() + "---" + pat.toString());

    Filter filter = null;
    final ReplaceVar replaceVar = new ReplaceVar();
    replaceVar.setIntersectionVariables(new HashSet<Variable>());
    replaceVar.setUnionVariables(replaceVar.getIntersectionVariables());

    final LinkedList<Variable> addBindingsVar = new LinkedList<Variable>();
    final LinkedList<Literal> addBindingsLit = new LinkedList<Literal>();

    String filterConstraint = "Filter( ";
    for (int i = 0; i < 3; i++) {
      final Item patItem = patItems[i];
      final Item generateItem = generateItems[i];
      if ((!patItem.isVariable()) && generateItem.isVariable()) {
        filterConstraint += generateItems[i].toString() + " = "
            + patItems[i].toString() + " && ";
      } else if (patItem.isVariable() && generateItem.isVariable()) {
        replaceVar.addSubstitution((Variable) patItem,
            (Variable) generateItem);
        replaceVar.getIntersectionVariables().add((Variable) patItem);
      } else if (patItem.isVariable() && (!generateItem.isVariable())) {
        addBindingsVar.add((Variable) patItem);
        addBindingsLit.add((Literal) generateItem);
      } else if (!patItem.isVariable() && !generateItem.isVariable()
          && !generateItem.equals(patItem)) {
        // cannot match, remove generate.
        for (final BasicOperator parent : generate
            .getPrecedingOperators())
          parent.removeSucceedingOperator(generate);
        generate.getPrecedingOperators().clear();
        generate.removeFromOperatorGraph();
        return null;
      }
    }

    // If (?x = ?a) and (?x = ?b) then (valueOf(?a) = value(?b)) must be
    // fulfilled
    for (int i = 0; i < 2; i++) {
      for (int x = i + 1; x < 3; x++) {
        if (patItems[i].equals(patItems[x])) {
          filterConstraint += generateItems[i].toString() + " = "
              + generateItems[x].toString() + " && ";
        }
      }
    }

    if (!filterConstraint.equals("Filter( ")) {
      filterConstraint = filterConstraint.substring(0,
          filterConstraint.length() - 3)
          + ") ";

      try {
        final ASTFilterConstraint ASTfilter = (ASTFilterConstraint) SPARQL1_1Parser
            .parseFilter(filterConstraint);
        filter = new Filter(ASTfilter);
      } catch (final Exception e) {
        System.err
            .println("This should never happen in RuleReplaceGenPat!");
        System.err.println(e);
        e.printStackTrace();
      }
    }

    // Only Operators with a not empty definition are put into the
    // operatorgraph
    final LinkedList<BasicOperator> order = new LinkedList<BasicOperator>();
    if (filter != null) {
      order.add(filter);
      added.add(filter);
    }

    final int substVar = replaceVar.getSubstitutionsVariableLeft().size();

    if (substVar > 0) {
      order.add(replaceVar);
      added.add(replaceVar);
    } else {
      final Projection p = new Projection();
      p.setIntersectionVariables(new HashSet<Variable>());
      p.setUnionVariables(p.getUnionVariables());
      order.add(p);
      added.add(p);
    }
    if (addBindingsVar.size() > 0) {
      final Iterator<Literal> lit_it = addBindingsLit.iterator();
      final HashSet<Variable> hsv = new HashSet<Variable>();
      hsv.addAll(replaceVar.getUnionVariables());
      for (final Variable v : addBindingsVar) {
        final AddBinding ab = new AddBinding(v, lit_it.next());
        hsv.add(v);
        ab.setIntersectionVariables((HashSet<Variable>) hsv.clone());
        ab.setUnionVariables(ab.getIntersectionVariables());
        order.add(ab);
        added.add(ab);
      }
    }

    // In case that Generate or TriplePattern has minimum one variable, than
    // minimum one operator has to be inserted
    if (order.size() > 0) {
      final List<BasicOperator> pres = (List<BasicOperator>) generate
          .getPrecedingOperators();
      BasicOperator pre;
      for (int i = 0; i < pres.size(); i++) {
        pre = pres.get(i);
        pre.addSucceedingOperator(new OperatorIDTuple(order.getFirst(),
            0));
        if (filter != null) {
          Collection<Variable> vars = filter
              .getIntersectionVariables();
          if (vars == null)
            vars = new HashSet<Variable>();
          vars.addAll(pre.getIntersectionVariables());
          filter.setIntersectionVariables(vars);
          filter.setUnionVariables(vars);
        }
        pre.removeSucceedingOperator(generate);
        order.getFirst().addPrecedingOperator(pre);
      }
View Full Code Here

        if(!subjectIsALiteral && !objectIsALiteral){
          startingOperator.addSucceedingOperator(connection.getOperatorIDTuple());
        }
        else
          if(subjectIsALiteral && !objectIsALiteral){
            final Filter filter = new Filter("(" + subject + " = " + realSubject +")");
            final Projection projection = new Projection();
            projection.addProjectionElement(object);
            if(graphConstraint!=null && graphConstraint.isVariable() && !graphConstraint.equals(getItem(subjectNode)) && !graphConstraint.equals(getItem(objectNode))) {
              projection.addProjectionElement((Variable)graphConstraint);
            }

            filter.addSucceedingOperator(new OperatorIDTuple(projection,0));
            projection.addSucceedingOperator(connection.getOperatorIDTuple());
            startingOperator.addSucceedingOperator(new OperatorIDTuple(filter,0));

          }
          else
            if(!subjectIsALiteral && objectIsALiteral){
              final Filter filter = new Filter("(" + object + " = " + realObject + ")");
              final Projection projection = new Projection();
              projection.addProjectionElement(subject);
              if(graphConstraint!=null && graphConstraint.isVariable() && !graphConstraint.equals(getItem(subjectNode)) && !graphConstraint.equals(getItem(objectNode))) {
                projection.addProjectionElement((Variable)graphConstraint);
              }

              filter.addSucceedingOperator(new OperatorIDTuple(projection,0));
              projection.addSucceedingOperator(connection.getOperatorIDTuple());
              startingOperator.addSucceedingOperator(new OperatorIDTuple(filter,0));

            }
            else
              if(subjectIsALiteral && objectIsALiteral){
                final Filter firstFilter = new Filter("(" + object + " = " + realObject + ")");
                final Filter secondFilter = new Filter("(" + subject + " = " + realSubject + ")");
                final Projection firstProjection = new Projection();
                firstProjection.addProjectionElement(subject);
                if(graphConstraint!=null && graphConstraint.isVariable() && !graphConstraint.equals(getItem(subjectNode)) && !graphConstraint.equals(getItem(objectNode))) {
                  firstProjection.addProjectionElement((Variable)graphConstraint);
                }
                final Projection secondProjection = new Projection();
                secondProjection.addProjectionElement(object);
                if(graphConstraint!=null && graphConstraint.isVariable() && !graphConstraint.equals(getItem(subjectNode)) && !graphConstraint.equals(getItem(objectNode))) {
                  secondProjection.addProjectionElement((Variable)graphConstraint);
                }

                firstFilter.addSucceedingOperator(new OperatorIDTuple(firstProjection,0));
                firstProjection.addSucceedingOperator(new OperatorIDTuple(secondFilter, 0));
                secondFilter.addSucceedingOperator(new OperatorIDTuple(secondProjection,0));
                secondProjection.addSucceedingOperator(connection.getOperatorIDTuple());
                startingOperator.addSucceedingOperator(new OperatorIDTuple(firstFilter,0));
              }
      }
      catch( final Exception e){
        e.printStackTrace();
        System.out.println(e);
      }
    } else {
      // alternative way to evaluate (...)?, (...)* and (...)+ without using the Closure and PathLengthZero operators!
      try{
        Variable subject;
        Variable object;
        Item realSubject = null;
        Item realObject = null;
        boolean subjectIsALiteral = false;
        boolean objectIsALiteral = false;
        Item itm = getItem(tripleSet.jjtGetChild(0));
        if (!itm.isVariable()){
          subject = this.getVariable(getItem(tripleSet.jjtGetChild(0)).toString(), getItem(tripleSet.jjtGetChild(2)).toString(), "interimSubject");
          realSubject = itm;
          subjectIsALiteral = true;
        } else {
          subject = (Variable) itm;
        }
        final Node subjectNode = tripleSet.jjtGetChild(0);
        itm = getItem(tripleSet.jjtGetChild(2));
        if (!itm.isVariable()){
          object = this.getVariable(getItem(tripleSet.jjtGetChild(0)).toString(), getItem(tripleSet.jjtGetChild(2)).toString(), "interimObject");
          realObject = itm;
          objectIsALiteral = true;
        } else {
          object = (Variable) itm;
        }
        final Node objectNode = tripleSet.jjtGetChild(2);
        final ReplaceVar replaceVar = new ReplaceVar();
        replaceVar.addSubstitution(object, subject);
        final Variable variable = this.getVariable(subject.toString(), object.toString(), "interimVariable");
        replaceVar.addSubstitution(variable, object);
        if(graphConstraint!=null && graphConstraint.isVariable() && !graphConstraint.equals(getItem(subjectNode)) && !graphConstraint.equals(getItem(objectNode))) {
          replaceVar.addSubstitution((Variable)graphConstraint, (Variable)graphConstraint);
        }
        final ReplaceVar replaceVari = new ReplaceVar();
        replaceVari.addSubstitution(subject, subject);
        replaceVari.addSubstitution(object, variable);
        if(graphConstraint!=null && graphConstraint.isVariable() && !graphConstraint.equals(getItem(subjectNode)) && !graphConstraint.equals(getItem(objectNode))) {
          replaceVari.addSubstitution((Variable)graphConstraint, (Variable)graphConstraint);
        }

        final BasicOperator startingOperator =tripleSet.jjtGetChild(1).jjtGetChild(0).accept(this, connection, graphConstraint, subject, object, subjectNode, objectNode);

        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 +")");
          final Filter secondFilter = new Filter("(" + subject + " = " + realSubject +")");
          final Projection firstProjection = new Projection();
          firstProjection.addProjectionElement(object);
          if(graphConstraint!=null && graphConstraint.isVariable() && !graphConstraint.equals(getItem(subjectNode)) && !graphConstraint.equals(getItem(objectNode))) {
            firstProjection.addProjectionElement((Variable)graphConstraint);
          }
          final Projection secondProjection = new Projection();
          secondProjection.addProjectionElement(object);
          if(graphConstraint!=null && graphConstraint.isVariable() && !graphConstraint.equals(getItem(subjectNode)) && !graphConstraint.equals(getItem(objectNode))) {
            secondProjection.addProjectionElement((Variable)graphConstraint);
          }

          firstFilter.addSucceedingOperator(new OperatorIDTuple(firstProjection,0));
          secondFilter.addSucceedingOperator(new OperatorIDTuple(secondProjection,0));

          firstProjection.addSucceedingOperator(connection.getOperatorIDTuple());
          secondProjection.addSucceedingOperator(connection.getOperatorIDTuple());

          replaceVari.addSucceedingOperator(new OperatorIDTuple(secondFilter,0));
          replaceVari.removeSucceedingOperator(connection.getOperatorIDTuple().getOperator());

          startingOperator.addSucceedingOperator(new OperatorIDTuple(firstFilter,0));
          startingOperator.removeSucceedingOperator(connection.getOperatorIDTuple().getOperator());

        }

        if(!subjectIsALiteral && objectIsALiteral){
          final Filter firstFilter = new Filter("(" + object + " = " + realObject + ")");
          final Filter secondFilter = new Filter("(" + object + " = " + realObject + ")");
          final Projection firstProjection = new Projection();
          firstProjection.addProjectionElement(subject);
          if(graphConstraint!=null && graphConstraint.isVariable() && !graphConstraint.equals(getItem(subjectNode)) && !graphConstraint.equals(getItem(objectNode))) {
            firstProjection.addProjectionElement((Variable)graphConstraint);
          }
          final Projection secondProjection = new Projection();
          secondProjection.addProjectionElement(subject);
          if(graphConstraint!=null && graphConstraint.isVariable() && !graphConstraint.equals(getItem(subjectNode)) && !graphConstraint.equals(getItem(objectNode))) {
            secondProjection.addProjectionElement((Variable)graphConstraint);
          }

          firstFilter.addSucceedingOperator(new OperatorIDTuple(firstProjection,0));
          secondFilter.addSucceedingOperator(new OperatorIDTuple(secondProjection,0));

          firstProjection.addSucceedingOperator(connection.getOperatorIDTuple());
          secondProjection.addSucceedingOperator(connection.getOperatorIDTuple());

          replaceVari.addSucceedingOperator(new OperatorIDTuple(secondFilter,0));
          replaceVari.removeSucceedingOperator(connection.getOperatorIDTuple().getOperator());

          startingOperator.addSucceedingOperator(new OperatorIDTuple(firstFilter,0));
          startingOperator.removeSucceedingOperator(connection.getOperatorIDTuple().getOperator());

        }
        if(subjectIsALiteral && objectIsALiteral){
          final Filter firstFilter = new Filter("(" + object + " = " + realObject + ")");
          final Filter secondFilter = new Filter("(" + subject + " = " + realSubject + ")");
          final Filter thirdFilter = new Filter("(" + object + " = " + realObject + ")");
          final Filter fourthFilter = new Filter("(" + subject + " = " + realSubject + ")");
          final Projection firstProjection = new Projection();
          firstProjection.addProjectionElement(subject);
          if(graphConstraint!=null && graphConstraint.isVariable() && !graphConstraint.equals(getItem(subjectNode)) && !graphConstraint.equals(getItem(objectNode))) {
            firstProjection.addProjectionElement((Variable)graphConstraint);
          }
          final Projection secondProjection = new Projection();
          secondProjection.addProjectionElement(object);
          if(graphConstraint!=null && graphConstraint.isVariable() && !graphConstraint.equals(getItem(subjectNode)) && !graphConstraint.equals(getItem(objectNode))) {
            secondProjection.addProjectionElement((Variable)graphConstraint);
          }
          final Projection thirdProjection = new Projection();
          thirdProjection.addProjectionElement(subject);
          if(graphConstraint!=null && graphConstraint.isVariable() && !graphConstraint.equals(getItem(subjectNode)) && !graphConstraint.equals(getItem(objectNode))) {
            thirdProjection.addProjectionElement((Variable)graphConstraint);
          }
          final Projection fourthProjection = new Projection();
          fourthProjection.addProjectionElement(object);
          if(graphConstraint!=null && graphConstraint.isVariable() && !graphConstraint.equals(getItem(subjectNode)) && !graphConstraint.equals(getItem(objectNode))) {
            fourthProjection.addProjectionElement((Variable)graphConstraint);
          }

          firstFilter.addSucceedingOperator(new OperatorIDTuple(firstProjection,0));
          secondFilter.addSucceedingOperator(new OperatorIDTuple(secondProjection,0));
          thirdFilter.addSucceedingOperator(new OperatorIDTuple(thirdProjection,0));
          fourthFilter.addSucceedingOperator(new OperatorIDTuple(fourthProjection,0));

          firstProjection.addSucceedingOperator(new OperatorIDTuple(secondFilter, 0));
          secondProjection.addSucceedingOperator(connection.getOperatorIDTuple());
          thirdProjection.addSucceedingOperator(new OperatorIDTuple(fourthFilter, 0));
          fourthProjection.addSucceedingOperator(connection.getOperatorIDTuple());
View Full Code Here

      }

      final Union union = new Union();
      final InMemoryDistinct memoryDistinct = new InMemoryDistinct();
      try {
        final Filter filter = new Filter("(" + subject + " != " + object + ")");

        final ReplaceVar replaceVar = new ReplaceVar();
        replaceVar.addSubstitution(object, subject);
        final Variable variable = this.getVariable(subject.toString(), object.toString(), "interimVariable");
        replaceVar.addSubstitution(variable, object);
        if(graphConstraint!=null && graphConstraint.isVariable() && !graphConstraint.equals(getItem(subjectNode)) && !graphConstraint.equals(getItem(objectNode))) {
          replaceVar.addSubstitution((Variable)graphConstraint, (Variable)graphConstraint);
        }
        final ReplaceVar replaceVari = new ReplaceVar();
        replaceVari.addSubstitution(subject, subject);
        replaceVari.addSubstitution(object, variable);
        if(graphConstraint!=null && graphConstraint.isVariable() && !graphConstraint.equals(getItem(subjectNode)) && !graphConstraint.equals(getItem(objectNode))) {
          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));
View Full Code Here

        projection.addProjectionElement((Variable)graphConstraint);
      }

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

        replaceVar.addSubstitution(object, subject);
        final Variable variable = this.getVariable(subject.toString(), object.toString(), "interimVariable");
        replaceVar.addSubstitution(variable, object);
        if(graphConstraint!=null && graphConstraint.isVariable() && !graphConstraint.equals(getItem(subjectNode)) && !graphConstraint.equals(getItem(objectNode))) {
          replaceVar.addSubstitution((Variable)graphConstraint, (Variable)graphConstraint);
        }
        replaceVari.addSubstitution(subject, subject);
        replaceVari.addSubstitution(object, variable);
        if(graphConstraint!=null && graphConstraint.isVariable() && !graphConstraint.equals(getItem(subjectNode)) && !graphConstraint.equals(getItem(objectNode))) {
          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) {
View Full Code Here

TOP

Related Classes of lupos.engine.operators.singleinput.filter.Filter

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.