check_values()) { if(onto_common_uri::is_temp_uri($item->get_uri())){ $item->replace_temp_uri(); } $assertions = $item->get_assertions(); $nb_assertions = count($assertions); $i = 0; if ($errs = $this->data_store->get_errors()) { print "
Erreurs:
"; print "
";
				var_dump($errs);
				print "

"; } $subjects_deleted = array(); // On peut y aller $query = "insert into { "; foreach ($assertions as $assertion) { if (!in_array($assertion->get_subject(), $subjects_deleted)) { $pmb_id = 0; //on stocke l'id de l'entité en base SQL s'il existe $query_pmb_id = ' select ?pmb_id where { <'.$assertion->get_subject().'> pmb:identifier ?pmb_id }'; $this->data_store->query($query_pmb_id); if ($this->data_store->num_rows()) { $pmb_id = $this->data_store->get_result()[0]->pmb_id; } // On supprime tous les triplets correspondant à cette uri pour les mettre à jour par la suite $query_delete = "delete { <".$assertion->get_subject()."> ?prop ?obj }"; $this->data_store->query($query_delete); $subjects_deleted[] = $assertion->get_subject(); //puis on commence par ré-insèrer l'id de l'entité en base SQL dans le store if ($pmb_id) { if (!$this->data_store->num_rows()) { $query_insert = 'insert into { <'.$assertion->get_subject().'> pmb:identifier "'.$pmb_id.'" . }'; $this->data_store->query($query_insert); } } } if ($assertion->offset_get_object_property("type") == "literal"){ $object = "'".addslashes($assertion->get_object())."'"; $object_properties = $assertion->get_object_properties(); if($object_properties['lang']){ $object.="@".$object_properties['lang']; } }else{ $object = "<".addslashes($assertion->get_object()).">"; if ($assertion->offset_get_object_property("type") == "uri"){ if ($assertion->get_object_type()) { if (is_numeric($assertion->get_object())) { $uri = "<".addslashes($opac_url_base.$this->get_class_pmb_name($assertion->get_object_type()).'#'.$assertion->get_object()).">"; $object = $uri; //on teste si le triplet n'existe pas déjà $query_bis = " select ?object_type where { ".$uri." <".addslashes($assertion->get_object_type())."> . ".$uri." ?object_type }"; $this->data_store->query($query_bis); if (!$this->data_store->num_rows()) { $object .= " .\n"; //sujet $object .= $uri; //prédicat $object .= ' pmb:identifier '; //objet $object .= '"'.addslashes($assertion->get_object()).'"'; $object .= " .\n"; //sujet $object .= $uri; //prédicat $object .= ' '; //objet $object .= '<'.addslashes($assertion->get_object_type()).'>'; if ($assertion->get_object_properties()['display_label']) { $object .= " .\n"; //sujet $object .= $uri; //prédicat $object .= ' pmb:displayLabel '; //objet $object .= '"'.$assertion->get_object_properties()['display_label'].'"'; } } } } } } $query.= "<".addslashes($assertion->get_subject())."> <".addslashes($assertion->get_predicate())."> ".$object; if ($area_id && !$i) { $query .= " .\n <".addslashes($assertion->get_subject())."> pmb:area ".$area_id; } //on ne rentre qu'une seule, afin de ne pas écraser le display label if($assertion->get_object_properties()['type'] == "uri" && !$i) { $display_label = $item->get_label($this->get_display_label($assertion->get_object())); $query .= " .\n <".addslashes($assertion->get_subject())."> pmb:displayLabel '".addslashes($display_label)."'"; } $i++; if ($i < $nb_assertions) { $query.=" ."; } $query.="\n"; } $query.="}"; $this->data_store->query($query); if ($errs = $this->data_store->get_errors()) { print "
Erreurs:
"; print "
";print_r($errs);print "

"; }else{ $index = onto_index::get_instance(); $index->set_handler($this); $index->maj(0,$item->get_uri()); } } else { return $item->get_checking_errors(); } return true; } // end of member function save } // end of onto_handler