Examples of TriplePattern


Examples of lupos.engine.operators.tripleoperator.TriplePattern

public class RuleOptimizeReplaceByPat extends Rule {

  @Override
  protected void init() {
    final TriplePattern pat = new TriplePattern();
    final ReplaceVar replaceVar = new ReplaceVar();

    pat.setSucceedingOperator(new OperatorIDTuple(replaceVar, 0));
    replaceVar.setPrecedingOperator(pat);

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

Examples of lupos.engine.operators.tripleoperator.TriplePattern

    startNode = replaceVar;
  }

  @Override
  protected boolean checkPrecondition(final Map<String, BasicOperator> mso) {
    final TriplePattern pat = (TriplePattern) mso.get("pat");
    // Because of time aspects triplepattern should not have more than one
    // successor
    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;
    } else {
      final Projection proj = (Projection) op;
      final Object[] projVars = proj.getProjectedVariables().toArray();
      final Item[] patItems = pat.getItems();
      for (int i = 0; i < patItems.length; i++) {
        // Only if a variable in TriplePattern is not projected later
        // (TP creates temporary tuples)
        if (patItems[i].isVariable()) {
          if (!arrayContains(projVars, (Variable) patItems[i])) {
View Full Code Here

Examples of lupos.engine.operators.tripleoperator.TriplePattern

  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 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();
    final LinkedList<Variable> replaceVarRight = replaceVar
        .getSubstitutionsVariableRight();
    final Object[] projVars = proj.getProjectedVariables().toArray();
    final Item[] patItems = pat.getItems();

    Variable var;
    Variable newTripleVar;

    // Before transformation: TriplePattern generates (p,lit) ,
    // ReplaceVar makes (y,lit) [because it has the tupel (y,p)] and
    // the Projection deletes (p,lit)
    // => Transformation replaces p by y in TriplePattern directly
    for (int i = 0; i < patItems.length; i++) {
      if (patItems[i].isVariable()) {
        var = (Variable) patItems[i];
        if (!arrayContains(projVars, var)) {
          final LinkedList<Integer> indices = getPositions(
              replaceVarRight, var);
          // Variable can be substituted by a ReplaceVar-variable
          if (indices.size() > 0) {
            newTripleVar = replaceVarLeft.get(indices.getFirst());
            // Replacement in TriplePattern
            pat.replace(var, newTripleVar);
            // Replacement same Replacement in ReplaceVar
            for (int a = 1; a < indices.size(); a++) {
              replaceVarRight.set(indices.get(a), newTripleVar);
            }
            // Delete the Tupel for Replacement
            replaceVar.removeSubstitutionVars(indices.getFirst());
          }
        }
      }
    }

    // Delete empty ReplaceVar
    if (replaceVar.getSubstitutionsVariableLeft().size() == 0) {
      final OperatorIDTuple succ = replaceVar.getSucceedingOperators()
          .get(0);
      pat.addSucceedingOperator(succ);
      pat.removeSucceedingOperator(replaceVar);
      succ.getOperator().removePrecedingOperator(replaceVar);
      succ.getOperator().addPrecedingOperator(pat);

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

Examples of lupos.engine.operators.tripleoperator.TriplePattern

   * @throws JSONException
   */
  public static Map<Variable, Tuple<Literal, Literal>> getMinMax(final String minMaxRequestSerializedAsJSONString, final Dataset dataset, final IOperatorCreator operatorCreator) throws JSONException {
    final JSONObject json = new JSONObject(minMaxRequestSerializedAsJSONString);
    final Collection<Variable> vars = Helper.createVariablesFromJSON(json);
    final TriplePattern tp = Helper.createTriplePatternFromJSON(json);
    final Collection<TriplePattern> tps = new LinkedList<TriplePattern>();
    tps.add(tp);
    final BasicIndexScan indexScan = operatorCreator.createIndexScan(operatorCreator.createRoot(dataset), tps);
    final BindingsFactory bindingsFactory = BindingsFactory.createBindingsFactory(tp.getVariables());
    indexScan.setBindingsFactory(bindingsFactory);
    tp.setBindingsFactory(bindingsFactory);

    return indexScan.getMinMax(tp, vars);
  }
View Full Code Here

Examples of lupos.engine.operators.tripleoperator.TriplePattern

                if (literal != null) {
                  itemArray[i] = literal;
                }
              }
            }
            newTriplePatterns.add(new TriplePattern(itemArray));
          }
          basicIndex.setTriplePatterns(newTriplePatterns);
        } else {
          // TODO Filter
          // node.clone(false)
View Full Code Here

Examples of lupos.engine.operators.tripleoperator.TriplePattern

    final List<OperatorIDTuple> pats = rootOperator
        .getSucceedingOperators();

    final LinkedList<OperatorIDTuple> possiblePats = new LinkedList<OperatorIDTuple>();
    // Find possible TriplePattern objects
    TriplePattern pat;
    for (int a = 0; a < pats.size(); a++) {
      if (pats.get(a).getOperator() instanceof TriplePattern) {
        pat = (TriplePattern) pats.get(a).getOperator();
        if (matchPossible(generate.getValueOrVariable(),
            pat.getItems(), doNotConnectInferenceRules)) {
          possiblePats.add(new OperatorIDTuple(pat, 0));
          pat.addPrecedingOperator(generate);
        }
      }
    }
    rootOperator.removePrecedingOperator(generate);
    // Set new successors of Generate object
View Full Code Here

Examples of lupos.engine.operators.tripleoperator.TriplePattern

public class RuleReplaceGenPat extends Rule {

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

    generate.setSucceedingOperator(new OperatorIDTuple(pat, -1));

    pat.setPrecedingOperator(generate);

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

Examples of lupos.engine.operators.tripleoperator.TriplePattern

      final Map<String, BasicOperator> mso,
      final BasicOperator rootOperator) {
    final Collection<BasicOperator> deleted = new LinkedList<BasicOperator>();
    final Collection<BasicOperator> added = new LinkedList<BasicOperator>();
    final Generate generate = (Generate) mso.get("generate");
    final TriplePattern pat = (TriplePattern) mso.get("pat");
    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);
      }

      for (int i = 0; i < order.size() - 1; i++) {
        order.get(i + 1).setPrecedingOperator(order.get(i));
        order.get(i).setSucceedingOperator(
            new OperatorIDTuple(order.get(i + 1), 0));
      }

      final LinkedList<OperatorIDTuple> succs = (LinkedList<OperatorIDTuple>) pat
          .getSucceedingOperators();
      for (int i = 0; i < succs.size(); i++) {
        succs.get(i).getOperator()
            .addPrecedingOperator(order.getLast());
      }

      final LinkedList<OperatorIDTuple> sops = new LinkedList<OperatorIDTuple>();
      sops.addAll(pat.getSucceedingOperators());
      order.getLast().setSucceedingOperators(sops);
    } else {
      final LinkedList<BasicOperator> pres = (LinkedList<BasicOperator>) generate
          .getPrecedingOperators();
      final LinkedList<OperatorIDTuple> succs = (LinkedList<OperatorIDTuple>) pat
          .getSucceedingOperators();
      BasicOperator pre;
      BasicOperator succ;
      for (int i = 0; i < pres.size(); i++) {
        pre = pres.get(i);
        pre.removeSucceedingOperator(generate);
        for (int x = 0; x < succs.size(); x++) {
          pre.addSucceedingOperator(succs.get(x));
          succ = succs.get(x).getOperator();
          succ.removePrecedingOperator(pat);
          succ.addPrecedingOperator(pre);
        }
      }
    }

    // TriplePattern can have more predecessors then Generate..
    pat.removePrecedingOperator(generate);
    if (pat.getPrecedingOperators().size() == 0)
      deleted.add(pat);
    // System.out.println(pat.getPrecedingOperators());
    deleted.add(generate);

    rootOperator.deleteParents();
View Full Code Here

Examples of org.apache.clerezza.rdf.core.sparql.query.TriplePattern

      return false;
    }
    if (!(obj instanceof TriplePattern)) {
      return false;
    }
    final TriplePattern other = (TriplePattern) obj;
    if (!this.subject.equals(other.getSubject())) {
      return false;
    }
    if (!this.predicate.equals(other.getPredicate())) {
      return false;
    }
    if (!this.object.equals(other.getObject())) {
      return false;
    }
    return true;
  }
View Full Code Here

Examples of org.ontoware.rdf2go.model.TriplePattern

      System.out.println(foundTaggedJava.next().getSubject());
    }
    foundTaggedJava.close();
   
    // finding statements 'tagged with "Python"' with a triple pattern
    TriplePattern taggedAsPythonPattern = model.createTriplePattern(Variable.ANY, hasTag, tagPython);
    ClosableIterator<? extends Statement> foundTaggedPython;
    foundTaggedPython = model.findStatements(taggedAsPythonPattern);
    System.out.println("Everything tagged 'Python':");
    while (foundTaggedPython.hasNext()) {
      System.out.println(foundTaggedPython.next().getSubject());
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. 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.