function CreateComputedTrace_sparql2($TypeObsel, $AttributeCond, $condition)
 {
     $ComputedTrace = new ComputedTrace($this->BaseURI, $this->TraceName);
     $source = array(new Trace($this->BaseURI . $this->TraceSourceName));
     $ComputedTrace->config('sparql', $source);
     $ComputedTrace->setSparqlParameter2($TypeObsel, $AttributeCond, $condition);
     if ($ComputedTrace->exist()) {
         $ComputedTrace->Delete();
     }
     $ComputedTrace->sparql();
 }
 function getModelSource()
 {
     foreach ($this->hasSource as $key => $value) {
         if ($value->getType() == "StoredTrace") {
             return $value->getModel();
             break;
         } else {
             $m = new ComputedTrace($value->getUri());
             $m->getModelSource();
         }
     }
 }
 function refresh($json, $after = null, $before = null)
 {
     $trace = $this->TraceOrigin[0];
     $this->name = $json["Name"];
     $formule = $json["formule"];
     $this->formule = $json["formule"];
     $input = $json["input"];
     $variable = array();
     $transformation = $json["Transformation"];
     // verification si la dernière transformation est faite ou non !!
     // si oui pas la peine de refaire toutes les transformation. avec KTBS les obsels se propagent !!!cool non ?
     // si non on fait les transformations.
     $s = sizeof($transformation) - 1;
     $tname = str_replace(' ', '_', $this->name . " {$s}");
     $b = $trace->getBaseUri();
     $trverif = new Trace($b . $tname);
     $c = $json["createdOn"];
     $encode = true;
     if (!$trverif->exist()) {
         $encode = false;
         $k = 0;
         $models = array();
         if ($transformation == null && $c == null) {
             $encode = false;
             goto notransformation;
         }
         if ($transformation == null && $c != null) {
             $encode = true;
             goto notransformation;
         }
     } else {
         $trace = $trverif;
     }
     notransformation:
     $this->ComputedTrace = $trace;
     $reponse = RestfulHelper::getInfo($trace->getUri());
     while ($reponse == null) {
         sleep(2);
         $reponse = RestfulHelper::getInfo($trace->getUri());
     }
     $values = array();
     // $cond = array();
     // 	if($after != null){
     // 		$time =  strtotime($after)*1000;
     // 		$cond[] = 'minb='.$time;
     // 	}
     // 	if($before != null){
     // 		$time =  strtotime($before)*1000;
     // 		$cond[] = 'maxb='.$time;
     // 	}
     // 	$times = implode('&', $cond);
     $Tcomp = new ComputedTrace($trace->getBaseUri(), 'time' . str_replace(' ', '_', $this->name));
     if ($Tcomp->exist()) {
         $Tcomp->Delete();
     }
     $Tcomp->config('filter', array($trace));
     $Tcomp->setFilterParameter($after, $before);
     $Tcomp->filter();
     $trace = new Trace($Tcomp->getUri());
     foreach ($input as $key => $value) {
         $sparql = $value["operation"];
         if ($encode == false) {
             $sparql = urlencode($sparql);
         }
         $URL = null;
         // if(strlen($times) == 0 ){
         $URL = $trace->getUri() . "@obsels?query=" . $sparql;
         // }
         // else{
         // 	$URL = $trace->getUri()."@obsels?".$times."&query=".$sparql;
         // }
         $r = RestfulHelper::httpInfo($URL);
         while ($r == "409") {
             sleep(1);
             $r = RestfulHelper::httpInfo($URL);
         }
         $reponse = RestfulHelper::getInfo($URL);
         $rep = json_decode($reponse, true);
         $res = $rep['results'];
         $resultat = $res['bindings'];
         $val = $resultat[0];
         $keys = array_keys($val);
         $a = $val[$keys[0]];
         $va = $a["value"];
         if (gettype(intval($va)) != "integer") {
             $va = 0;
         }
         $values[$value['name']] = $va;
     }
     $f = $formule;
     foreach ($values as $key => $value) {
         $f = str_replace($key, $value, $f);
     }
     $m = new EvalMath();
     $m->suppress_errors = true;
     $equation = explode("=", $f);
     $res = $m->evaluate($equation[1]);
     $Tcomp->Delete();
     if ($res == false) {
         return array("var" => $equation[0], "val" => "ERROR : Time intervale caused an error");
     } else {
         return array("var" => $equation[0], "val" => $res);
     }
 }