Package lupos.engine.operators.singleinput.generate

Examples of lupos.engine.operators.singleinput.generate.Generate


      }
      construct.setTemplates(patterns);
      // Fuer jedes Triplepattern in Construct ein Generate fuer Inferenz erstellen
      // wird, falls es keinen Consumer gibt, spaeter wieder entfernt
      for (final TriplePattern pattern : construct.getTemplates()) {
        final Generate generateTriplesOp = new Generate(pattern.getItems());
        generateTriplesOp.addPrecedingOperator(subOperator);
        subOperator.addSucceedingOperator(new OperatorIDTuple(generateTriplesOp, subOperator.getSucceedingOperators().size()));
        generateTriplesOp.addPrecedingOperator(subOperator);
        // TripleProduzenten registrieren
        this.add(this.tripleProducer, new KeyTriplePattern(pattern), generateTriplesOp);
      }
      resultOps.add(construct);
    }
View Full Code Here


        .getSucceedingOperators();
    final LinkedList<Generate> generates = RDFSRuleEngine0.generates;

    for (int i = 0; i < generates.size(); i++) {
      System.out.println("Connects Generate number " + i);
      final Generate generate = generates.get(i);
      final LinkedList<OperatorIDTuple> possiblePats = new LinkedList<OperatorIDTuple>();

      TriplePattern pat;
      for (int a = 0; a < pats.size(); a++) {
        pat = (TriplePattern) pats.get(a).getOperator();
        if (matchPossible(generate.getValueOrVariable(), pat.getItems())) {
          possiblePats.add(new OperatorIDTuple(pat, 0));
          pat.addPrecedingOperator(generate);
        }
      }
      if (possiblePats.size() > 0) {
        try {
          Thread.sleep(50);
        } catch (final InterruptedException e) {
          System.err.println(e);
          e.printStackTrace();
        }
        System.out.println(generate.toString() + "----"
            + possiblePats.toString());
        generate.setSucceedingOperators(possiblePats);
        for (int p = 0; p < possiblePats.size(); p++) {
          pat = (TriplePattern) possiblePats.get(p).getOperator();
          pat.addPrecedingOperator(generate);
        }
      } else {
        generate
            .setSucceedingOperators(new LinkedList<OperatorIDTuple>());
      }
    }

    rootOperator.deleteParents();
View Full Code Here

  private LinkedList<BasicOperator> disconnect;
  private LinkedList<BasicOperator> instead;

  @Override
  protected void init() {
    final Generate generate = new Generate();

    subGraphMap = new HashMap<BasicOperator, String>();
    subGraphMap.put(generate, "generate");

    startNode = generate;
View Full Code Here

    HashMap<Variable, Item> bindings = new HashMap<Variable, Item>();
    Item[] triple = null;
    for (final BasicOperator bo : path) {
      if (bo instanceof Generate) {
        triple = new Item[3];
        final Generate generate = (Generate) bo;
        for (int i = 0; i < 3; i++) {
          Item item = generate.getValueOrVariable()[i];
          if (item.isVariable()) {
            if (bindings.get(item) != null) {
              item = bindings.get(item);
            }
          }
          triple[i] = item;
        }
        // is a constant triple generated?
        if (!triple[0].isVariable() && !triple[1].isVariable()
            && !triple[2].isVariable()) {
          disconnect.add(path.get(1));
          final Generate generateInstead = new Generate(triple);
          final LinkedList<OperatorIDTuple> llo = new LinkedList<OperatorIDTuple>();
          llo.addAll(bo.getSucceedingOperators());
          // delete path from the successors:
          final int index = path.indexOf(new OperatorIDTuple(bo, -1));
          final BasicOperator afterInPath = (index == path.size() - 1) ? path
              .get(0)
              : path.get(index + 1);
          llo.remove(new OperatorIDTuple(afterInPath, -1));
          generateInstead.setSucceedingOperators(llo);
          instead.add(generateInstead);
          return true;
        }
      }
      if (bo instanceof TriplePattern) {
        bindings = new HashMap<Variable, Item>();
        final Item[] items = ((TriplePattern) bo).getItems();
        int i = 0;
        for (final Item item : items) {
          if (item.isVariable()) {
            bindings.put((Variable) item, triple[i]);
          } else {
            if (!((Literal) item).equals(triple[i])) {
              if (!triple[i].isVariable()) {
                System.out
                    .println("RuleEliminateInfinityLoop: The generated triple will not be consumed by the succeeding triple pattern!");
                return false;
              }
            }
          }
          i++;
        }
      }
    }
    // is again the same triple generated as by the first call of the first
    // generate?
    if (path.get(0) instanceof Generate) {
      triple = new Item[3];
      final Generate generate = (Generate) path.get(0);
      for (int i = 0; i < 3; i++) {
        Item item = generate.getValueOrVariable()[i];
        if (item.isVariable()) {
          if (bindings.get(item) != null) {
            item = bindings.get(item);
          }
        }
        triple[i] = item;
      }
      // is a constant triple generated or the same triple as by the first
      // call of this generate?
      if ((!triple[0].isVariable() || triple[0].equals(generate
          .getValueOrVariable()[0]))
          && (!triple[1].isVariable() || triple[0].equals(generate
              .getValueOrVariable()[1]))
          && (!triple[2].isVariable() || triple[2].equals(generate
              .getValueOrVariable()[0]))) {
        disconnect.add(path.get(1));
        final Generate generateInstead = new Generate(triple);
        final LinkedList<OperatorIDTuple> llo = new LinkedList<OperatorIDTuple>();
        llo.addAll(path.get(0).getSucceedingOperators());
        // delete path from the successors:
        llo.remove(new OperatorIDTuple(path.get(1), -1));
        generateInstead.setSucceedingOperators(llo);
        instead.add(generateInstead);
        return true;
      }
    }
    return false;
View Full Code Here

    return false;
  }

  @Override
  protected boolean checkPrecondition(final Map<String, BasicOperator> mso) {
    final Generate generate = (Generate) mso.get("generate");
    // this check is simplified! It is not considered that on the path are
    // many succeeding nodes,
    // such the infinity loop cannot be broken in the simple way implemented
    // here...
    final LinkedList<LinkedList<BasicOperator>> resultList = checkInfinityLoop(generate);
View Full Code Here

      final BasicOperator rootOperator) {
    // (new OperatorGraphNew(rootOperator.deepClone(), -1, false))
    // .displayOperatorGraph("Before...", null);
    final Collection<BasicOperator> deleted = new LinkedList<BasicOperator>();
    final Collection<BasicOperator> added = new LinkedList<BasicOperator>();
    final Generate generate = (Generate) mso.get("generate");

    for (final BasicOperator d : disconnect) {
      generate.removeSucceedingOperator(d);
      d.removePrecedingOperator(generate);
    }
    for (final BasicOperator i : instead) {
      // ??????????????? the following is questionable ???????????????????
      for (final BasicOperator d : disconnect) {
        i.removeSucceedingOperator(d);
      }
      // ??????????????? the previous is questionable ???????????????????
      for (final BasicOperator previous : generate
          .getPrecedingOperators()) {
        previous.addSucceedingOperator(new OperatorIDTuple(i, 0));
        i.addPrecedingOperator(previous);
      }
      added.add(i);
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

      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>();
    if (deleted.size() > 0 || added.size() > 0)
      return new Tuple<Collection<BasicOperator>, Collection<BasicOperator>>(
          added, deleted);
    else
View Full Code Here

public class RuleFactorOutUnionInGenerate extends Rule {

  @Override
  protected void init() {
    final Union union = new Union();
    final Generate generate = new Generate();

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

    subGraphMap = new HashMap<BasicOperator, String>();
    subGraphMap.put(union, "union");
    subGraphMap.put(generate, "generate");
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 Union union = (Union) mso.get("union");
    final Generate generate = (Generate) mso.get("generate");
    final List<BasicOperator> unionOperands = union.getPrecedingOperators();
    generate.removePrecedingOperator(union);
    deleted.add(union);
    boolean firstTime = true;
    if (generate.getPrecedingOperators().size() > 0) {
      firstTime = false;
    }
    for (final BasicOperator toMove : unionOperands) {
      Generate generateNew;
      if (firstTime) {
        // use existing generate operator
        generateNew = generate;
        firstTime = false;
      } else {
        // clone join operator plus its other operands
        generateNew = new Generate();
        generateNew.cloneFrom(generate);
        added.add(generateNew);
      }
      generateNew.setPrecedingOperator(toMove);

      toMove.setSucceedingOperator(new OperatorIDTuple(generateNew, 0));
    }
    if (deleted.size() > 0 || added.size() > 0)
      return new Tuple<Collection<BasicOperator>, Collection<BasicOperator>>(
View Full Code Here

TOP

Related Classes of lupos.engine.operators.singleinput.generate.Generate

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.