Package lupos.engine.operators.singleinput

Examples of lupos.engine.operators.singleinput.AddBinding


    return false;
  }

  @Override
  protected void init() {
    final AddBinding add1 = new AddBinding(null, null);
    final AddBinding add2 = new AddBinding(null, null);
    final Filter filter = new Filter();

    add1.setSucceedingOperator(new OperatorIDTuple(add2, 0));
    add2.setPrecedingOperator(add1);
    add2.setSucceedingOperator(new OperatorIDTuple(filter, 0));
    filter.setPrecedingOperator(add2);

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


public class RuleConstantPropagationOverJoin extends Rule {

  @Override
  protected void init() {
    final AddBinding add = new AddBinding(null, null);
    final Join join = new Join();

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

    subGraphMap = new HashMap<BasicOperator, String>();
    subGraphMap.put(add, "add");
    subGraphMap.put(join, "join");
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 AddBinding add = (AddBinding) mso.get("add");
    final Join join = (Join) mso.get("join");
    boolean afterJoin = true;
    final List<BasicOperator> joinPrec = new LinkedList<BasicOperator>();
    joinPrec.addAll(join.getPrecedingOperators());
    for (final BasicOperator bo : joinPrec) {
      // check if Filter(Add.Var = Add.Constant) must be put to a join
      // operand in order to fulfill the join condition
      if (!bo.equals(add)
          && bo.getUnionVariables().contains(add.getVar())) {
        try {
          final Filter filter = new Filter("FILTER( "
              + add.getVar().toString() + " = "
              + add.getLiteral().toString() + " )");
          filter.setIntersectionVariables(bo.getUnionVariables());
          filter.setUnionVariables(bo.getUnionVariables());
          // we assume that
          filter.setSucceedingOperators(bo.getSucceedingOperators());
          bo.setSucceedingOperator(new OperatorIDTuple(filter, 0));
          join.removePrecedingOperator(bo);
          join.addPrecedingOperator(filter);
          filter.setPrecedingOperator(bo);
          afterJoin = false;
          added.add(filter);
        } catch (final ParseException e) {
          System.err.println(e);
          e.printStackTrace();
        }
      }
    }
    // remove add
    for (final BasicOperator bo : add.getPrecedingOperators()) {
      bo.removeSucceedingOperator(add);
      bo.addSucceedingOperators(add.getSucceedingOperators());
      join.addPrecedingOperator(bo);
    }
    join.removePrecedingOperator(add);
    join.getIntersectionVariables().remove(add.getVar());
    // must add be put after the join?
    if (afterJoin) {
      add.setSucceedingOperators(join.getSucceedingOperators());
      add.setPrecedingOperator(join);
      join.setSucceedingOperator(new OperatorIDTuple(add, 0));
      for (final OperatorIDTuple oid : add.getSucceedingOperators()) {
        oid.getOperator().removePrecedingOperator(join);
        oid.getOperator().addPrecedingOperator(add);
      }
    } else
      deleted.add(add);
View Full Code Here

  }

  @Override
  protected void init() {
    // Define left side of rule
    final AddBinding add = new AddBinding(null, null);
    final Filter filter = new Filter();

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

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

              || right instanceof lupos.sparql1_1.ASTInteger
              || right instanceof lupos.sparql1_1.ASTStringLiteral
              || right instanceof lupos.sparql1_1.ASTDoubleCircumflex) {
            constant = LazyLiteral.getLiteral(right);

            final AddBinding add = (AddBinding) mso.get("add");
            if (add.getVar().equals(var)
                || add.getVar().equals(varInference)) {
              if (add.getLiteral().equals(constant))
                return false;
              else
                return true;
            }
          }
View Full Code Here

    aboveFilter.setSucceedingOperators(filter.getSucceedingOperators());

    triplePattern.replace(var, constant);
    triplePattern.replace(varInference, constant);

    final AddBinding addBinding = new AddBinding(var, constant);
    added.add(addBinding);

    addBinding.setSucceedingOperators(triplePattern
        .getSucceedingOperators());

    triplePattern.setSucceedingOperator(new OperatorIDTuple(addBinding, 0));

    rootOperator.deleteParents();
View Full Code Here

 
  private AddBinding add;

  @Override
  protected void init() {
    final AddBinding add = new AddBinding(null, null);
    final Filter filter = new Filter();

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

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

public class RuleConstantPropagationFromAddToGenerate extends Rule {

  @Override
  protected void init() {
    final AddBinding add = new AddBinding(null, null);
    final Generate generate = new Generate();

    add.setSucceedingOperator(new OperatorIDTuple(generate, -1));
    generate.setPrecedingOperator(add);

    subGraphMap = new HashMap<BasicOperator, String>();
    subGraphMap.put(add, "add");
    subGraphMap.put(generate, "generate");
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 AddBinding add = (AddBinding) mso.get("add");
    final Generate generate = (Generate) mso.get("generate");
    generate.replaceItems(add.getVar(), add.getLiteral());
    // remove add
    for (final BasicOperator bo : add.getPrecedingOperators()) {
      bo.removeSucceedingOperator(add);
      bo.getSucceedingOperators().addAll(add.getSucceedingOperators());
      generate.addPrecedingOperator(bo);
    }
    deleted.add(add);
    generate.removePrecedingOperator(add);
    alreadyAppliedTo = new HashSet<BasicOperator>();
View Full Code Here

  @Override
  protected boolean checkPrecondition(final Map<String, BasicOperator> mso) {
    final Filter filter = (Filter) mso.get("filter");
    if (filter.getPrecedingOperators().size() > 1)
      return false;
    final AddBinding add1 = (AddBinding) mso.get("add1");
    if (add1.getPrecedingOperators().size() > 1)
      return false;
    final AddBinding add2 = (AddBinding) mso.get("add2");

    lupos.sparql1_1.Node filterNode = filter.getNodePointer();
    if (filterNode.jjtGetNumChildren() > 0) {
      filterNode = filterNode.jjtGetChild(0);

      // filter must be an unequality expression of 2 variables...
      if (filterNode instanceof lupos.sparql1_1.ASTNotEqualsNode) {
        final lupos.sparql1_1.Node leftNode = filterNode.jjtGetChild(0);
        final lupos.sparql1_1.Node rightNode = filterNode.jjtGetChild(1);
        if (rightNode instanceof lupos.sparql1_1.ASTVar
            && leftNode instanceof lupos.sparql1_1.ASTVar) {

          // both variables must be the same ones as in the 2 Add
          // operators...
          final Variable leftFilterVar = new Variable(
              ((lupos.sparql1_1.ASTVar) leftNode).getName());
          final Variable rightFilterVar = new Variable(
              ((lupos.sparql1_1.ASTVar) rightNode).getName());
          if ((add1.getVar().equalsNormalOrVariableInInferenceRule(
              leftFilterVar) && add2.getVar()
              .equalsNormalOrVariableInInferenceRule(
                  rightFilterVar))
              || (add1.getVar()
                  .equalsNormalOrVariableInInferenceRule(
                      rightFilterVar) && add2.getVar()
                  .equalsNormalOrVariableInInferenceRule(
                      leftFilterVar))) {

            // if literals of the variables in the add operators are
            // unequal, rule must be applied
            if (add1.getLiteral().compareTo(add2.getLiteral()) != 0) {
              eliminateOnlyFilter = true;
            } else
              eliminateOnlyFilter = false;
            return true;
          }
View Full Code Here

TOP

Related Classes of lupos.engine.operators.singleinput.AddBinding

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.