Package lupos.engine.operators.application

Examples of lupos.engine.operators.application.CollectResult


   */
  @Override
  public BasicOperator deserialize(final JSONObject serializedOperator) throws JSONException {
    final Result result = new Result();
    if (this.application == null) {
      this.application = new CollectResult(false);
    }
    result.addApplication(this.application);
    return result;

  }
View Full Code Here


   * @param operatorCreator the creator for the operators of the subgraph
   * @return the query result and the set of variables of the query result of the evaluated operator graph
   * @throws JSONException in case of any parse exceptions
   */
  public static Tuple<QueryResult, Set<Variable>> evaluateSubgraph(final String subgraphSerializedAsJSONString, final Dataset dataset, final IOperatorCreator operatorCreator) throws JSONException {
    final CollectResult collectResult = new CollectResult(true);
    final SubgraphContainerFormatter formatter = new SubgraphContainerFormatter(dataset, operatorCreator, collectResult);
    final Root root = formatter.deserialize(new JSONObject(subgraphSerializedAsJSONString));

    // some initializations
    root.deleteParents();
    root.setParents();
    root.detectCycles();
    root.sendMessage(new BoundVariablesMessage());

    Class<? extends Bindings> instanceClass = null;
    if (Bindings.instanceClass == BindingsArrayVarMinMax.class
        || Bindings.instanceClass == BindingsArrayPresortingNumbers.class) {
      // is BindingsArrayVarMinMax or BindingsArrayPresortingNumbers
      // necessary? Or is only BindingsArray sufficient?
      @SuppressWarnings("serial")
      final SimpleOperatorGraphVisitor sogv = new SimpleOperatorGraphVisitor() {
        public boolean found = false;

        @Override
        public Object visit(final BasicOperator basicOperator) {
          if (basicOperator instanceof FastSort) {
            this.found = true;
          }
          return null;
        }

        @Override
        public boolean equals(final Object o) {
          if (o instanceof Boolean) {
            return this.found == (Boolean) o;
          } else {
            return super.equals(o);
          }
        }
      };
      root.visit(sogv);
      if (sogv.equals(false)) {
        instanceClass = Bindings.instanceClass;
        Bindings.instanceClass = BindingsArray.class;
      }
    }

    final BindingsFactory bindingsFactory= BindingsFactory.createBindingsFactory(CommonCoreQueryEvaluator.getAllVariablesOfQuery(root));
    root.sendMessage(new BindingsFactoryMessage(bindingsFactory));

    // evaluate subgraph!
    root.sendMessage(new StartOfEvaluationMessage());
    root.startProcessing();
    root.sendMessage(new EndOfEvaluationMessage());

    if (instanceClass != null) {
      Bindings.instanceClass = instanceClass;
    }
    return new Tuple<QueryResult, Set<Variable>>(collectResult.getResult(), new HashSet<Variable>(LocalExecutor.getVariables(root)));
  }
View Full Code Here

   * @throws IOException
   */
  private static Tuple<QueryResult, Set<Variable>> evaluateSubgraph(
      final String subgraphSerializedAsJSONString, final Dataset dataset,
      final IOperatorCreator operatorCreator, final ISubgraphExecutor<?> sgExecuter) throws JSONException {
    final CollectResult collectResult = new CollectResult(true);
    final SubgraphContainerFormatter formatter = new SubgraphContainerFormatter(dataset, operatorCreator, collectResult,sgExecuter);
    final Root root = formatter.deserialize(new JSONObject(subgraphSerializedAsJSONString));

    // some initializations
    root.deleteParents();
    root.setParents();
    root.detectCycles();
    root.sendMessage(new BoundVariablesMessage());


    Class<? extends Bindings> instanceClass = null;
    if (Bindings.instanceClass == BindingsArrayVarMinMax.class
        || Bindings.instanceClass == BindingsArrayPresortingNumbers.class) {
      // is BindingsArrayVarMinMax or BindingsArrayPresortingNumbers
      // necessary? Or is only BindingsArray sufficient?
      @SuppressWarnings("serial")
      final SimpleOperatorGraphVisitor sogv = new SimpleOperatorGraphVisitor() {
        public boolean found = false;

        @Override
        public Object visit(final BasicOperator basicOperator) {
          if (basicOperator instanceof FastSort) {
            this.found = true;
          }
          return null;
        }

        @Override
        public boolean equals(final Object o) {
          if (o instanceof Boolean) {
            return this.found == (Boolean) o;
          } else {
            return super.equals(o);
          }
        }
      };
      root.visit(sogv);
      if (sogv.equals(false)) {
        instanceClass = Bindings.instanceClass;
        Bindings.instanceClass = BindingsArray.class;
      }
    }


    root.physicalOptimization();
    root.deleteParents();
    root.setParents();
    root.detectCycles();
    //MoveFilter to SubgraphContainer rule
    final AfterPhysicalOptimizationDistributedRulePackage refie = new AfterPhysicalOptimizationDistributedRulePackage();
    refie.applyRules(root);

    // evaluate subgraph!
    final BindingsFactory bindingsFactory= BindingsFactory.createBindingsFactory(CommonCoreQueryEvaluator.getAllVariablesOfQuery(root));
    root.sendMessage(new BindingsFactoryMessage(bindingsFactory));

    root.sendMessage(new StartOfEvaluationMessage());
    root.startProcessing();
    root.sendMessage(new EndOfEvaluationMessage());

    if (instanceClass != null) {
      Bindings.instanceClass = instanceClass;
    }
    //Result is back ..
    return new Tuple<QueryResult, Set<Variable>>(collectResult.getResult(), new HashSet<Variable>(LocalExecutor.getVariables(root)));
  }
View Full Code Here

    this.setIndexScanGenerator(this.indexScanCreator_Stream);
  }

  @Override
  public void visit(final lupos.sparql1_1.ASTStream node) {
    final CollectResult cr = new CollectResult(false);
    this.result.addApplication(cr);
    if (node.isTriples()) {
      this.indexScanCreator_Stream.setStream(new StreamTriples(cr, node.getValue()));
    } else {
      this.indexScanCreator_Stream.setStream(new StreamDuration(cr, node.getValue()));
View Full Code Here

        window = new WindowInstancesDuration(slidingNumber, iri);
        break;
    }
    if (this.indexScanCreator_Stream.getStream() == null) {
      System.out.println("Query uses Window operations, but did not define a stream, asssuming STREAM INTERMEDIATERESULT TRIPLES 1");
      final CollectResult cr = new CollectResult(false);
      this.result.addApplication(cr);
      this.indexScanCreator_Stream.setStream(new StreamTriples(cr, 1));
    }
    this.indexScanCreator_Stream.getStream().addSucceedingOperator(new OperatorIDTuple(window, 0));
    final PatternMatcher currentPatternMatcher = new PatternMatcher();
View Full Code Here

    final Result oldResult = evaluator_param.getResultOperator();
    final Map<Variable, Integer> oldBindingsFactory = evaluator_param.getBindingsFactory().getPosVariables();

    final Result result = setupEvaluator(evaluator_param, (Root) collection.deepClone());

    final CollectResult cr = new CollectResult(false);
    result.addApplication(cr);

    evaluator_param.logicalOptimization();
    evaluator_param.physicalOptimization();
    try {
      evaluator_param.evaluateQuery();
    } catch (final Exception e1) {
      e1.printStackTrace();
    }
    final QueryResult queryResult = cr.getResult();
    this.queryResultsForExistNodes.put(node, this.transformQueryResult(queryResult));
    evaluator_param.setRootNode(oldRoot);
    evaluator_param.setResult(oldResult);
    evaluator_param.getBindingsFactory().setPosVariables(oldBindingsFactory);
  }
View Full Code Here

TOP

Related Classes of lupos.engine.operators.application.CollectResult

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.