function getListOfBases()
 {
     $cont = RestfulHelper::getInfo($this->uri);
     $cont = json_decode($cont, true);
     $bases = $cont['hasBase'];
     return $bases;
 }
 function Delete()
 {
     $reponse = RestfulHelper::getInfo($this->uri);
     RestfulHelper::Delete($this->uri, $reponse);
 }
 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);
     }
 }
 function getListOfTypes()
 {
     $res = RestfulHelper::getInfo($this->uri);
     $res = json_decode($res, true);
     $def = $res["@graph"];
     $j = 0;
     $supertypes = array();
     for ($i = 1; $i < sizeof($def); $i++) {
         $ty = $def[$i];
         if (in_array('hasSuperObselType', array_keys($ty))) {
             foreach ($ty['hasSuperObselType'] as $key => $value) {
                 if (!in_array($value, $supertypes)) {
                     $supertypes[] = $value;
                 }
             }
         }
     }
     for ($i = 1; $i < sizeof($def); $i++) {
         $ty = $def[$i];
         if (strripos($ty["@id"], "/") == false) {
             if (!in_array($ty["@id"], $supertypes)) {
                 $this->listOfTypes[$j] = str_replace('#', "", $ty["@id"]);
                 $j++;
             }
         }
     }
     return $this->listOfTypes;
 }
 function getListOfModels()
 {
     /*This method return the list of models in this base.*/
     $listOfModel = array();
     if ($this->exist() == true) {
         $responce = RestfulHelper::getInfo($this->uri);
         $json_responce = json_decode($responce, true);
         $contains = $json_responce['contains'];
         foreach (array_keys($contains) as $key) {
             $val = $contains[$key]["@id"];
             $val = str_replace('./', '', $val);
             if ($val[strlen($val) - 1] != '/') {
                 $listOfModel[] = $val;
             }
         }
         $this->listOfModel = $listOfModel;
         return $this->listOfModel;
     } else {
         return false;
     }
 }
 function setNewOrigin($newOrigin)
 {
     /*  Verify the format of the time */
     $this->hasOrigin = $newOrigin;
     $reponse = RestfulHelper::getInfo($this->uri);
     $obj = json_decode($reponse, true);
     $obj['origin'] = $this->hasOrigin;
     $query = json_encode($obj);
     RestfulHelper::json_getEtagAndPut($this->uri, $query);
 }