public function __construct($type, $id, $isbd = "")
 {
     if ($id * 1) {
         $id = onto_common_uri::get_uri($id);
     }
     parent::__construct($type, $id, $isbd);
 }
示例#2
0
 /**
  * Retourne l'URI du concept
  */
 public function get_uri()
 {
     if (!$this->uri) {
         $this->uri = onto_common_uri::get_uri($this->id);
     }
     return $this->uri;
 }
 /**
  *
  * Retourne une liste des éléments utilisable pour l'autocomplétion (retourne une liste vide si pas de recherche implémentée pour le type d'item
  *
  * @return array $elements
  */
 public function get_ajax_searched_elements($class_uri)
 {
     $search_class_name = $this->get_searcher_class_name($class_uri);
     $elements = array('label' => "[" . $this->get_label($class_uri) . "]", 'elements' => array());
     if ($this->params->datas && $search_class_name) {
         $searcher = new $search_class_name($this->params->datas . "*");
         if ($searcher->get_nb_results()) {
             $results = $searcher->get_sorted_result("default", 0, 10);
         } else {
             $results = array();
         }
         foreach ($results as $item) {
             $elements['elements'][onto_common_uri::get_uri($item)] = $this->get_data_label(onto_common_uri::get_uri($item));
         }
     }
     return $elements;
 }
 public function set_vedette_element_from_database()
 {
     $ontology = new ontology($this->params['id_ontology']);
     $this->isbd = $ontology->get_instance_label(onto_common_uri::get_uri($this->id));
 }
示例#5
0
 public function maj($object_id, $object_uri = "", $datatype = "all")
 {
     if ($object_id == 0 && $object_uri != "") {
         $object_id = onto_common_uri::get_id($object_uri);
     }
     if ($object_id != 0 && !$object_uri) {
         $object_uri = onto_common_uri::get_uri($object_id);
     }
     if (!count($this->tab_code_champ)) {
         $this->init();
     }
     $tab_words_insert = $tab_fields_insert = array();
     $this->get_sparql_result($object_uri);
     $this->delete_index($object_id, $datatype);
     //on a un tableau de résultat, on peut le travailler...
     foreach ($this->tab_code_champ as $field_id => $element) {
         foreach ($element as $column => $infos) {
             if (isset($this->sparql_result[$column])) {
                 $field_order = 1;
                 foreach ($this->sparql_result[$column] as $key => $values) {
                     foreach ($values as $key2 => $value) {
                         if (is_string($value)) {
                             $language = $key;
                             //fields (contenu brut)
                             $tab_fields_insert[] = "('" . $object_id . "','" . $infos['champ'] . "','" . $infos['ss_champ'] . "','" . $field_order . "','" . addslashes($value) . "','" . $language . "','" . $infos['pond'] . "','" . $autority_num . "')";
                             //words (contenu éclaté)
                             $tab_tmp = explode(' ', strip_empty_words($value));
                             $word_position = 1;
                             foreach ($tab_tmp as $word) {
                                 $num_word = indexation::add_word($word, $language);
                                 $tab_words_insert[] = "(" . $object_id . "," . $infos["champ"] . "," . $infos["ss_champ"] . "," . $num_word . "," . $infos["pond"] . ",{$field_order},{$word_position})";
                                 $word_position++;
                             }
                         } else {
                             $language = $key2;
                             $autority_num = onto_common_uri::get_id($key);
                             foreach ($value as $val) {
                                 //fields (contenu brut)
                                 $tab_fields_insert[] = "('" . $object_id . "','" . $infos['champ'] . "','" . $infos['ss_champ'] . "','" . $field_order . "','" . addslashes($val) . "','" . $language . "','" . $infos['pond'] . "','" . $autority_num . "')";
                                 //words (contenu éclaté)
                                 $tab_tmp = explode(' ', strip_empty_words($val));
                                 $word_position = 1;
                                 foreach ($tab_tmp as $word) {
                                     $num_word = indexation::add_word($word, $language);
                                     $tab_words_insert[] = "(" . $object_id . "," . $infos["champ"] . "," . $infos["ss_champ"] . "," . $num_word . "," . $infos["pond"] . ",{$field_order},{$word_position})";
                                     $word_position++;
                                 }
                             }
                         }
                         $field_order++;
                     }
                 }
             } else {
                 continue;
             }
         }
     }
     $this->save_elements($tab_words_insert, $tab_fields_insert);
     return true;
 }
示例#6
0
 /**
  * Retourne l'item le plus approprié pour définir l'URI passée en paramètre
  *
  * @param string class_uri URI de la classe de l'ontologie à instancier
  * @param string uri URI de l'instance à créer
  *
  * @return onto_common_item $item
  *
  * @access public
  */
 public function get_item($class_uri, $uri)
 {
     $item_class = "onto_" . $this->ontology->name . "_" . $this->get_class_pmb_name($class_uri) . "_item";
     if (!class_exists($item_class)) {
         $item_class = "onto_" . $this->ontology->name . "_item";
     }
     if (!class_exists($item_class)) {
         $item_class = "onto_common_item";
     }
     $item = new $item_class($this->ontology->get_class($class_uri), $uri);
     $item->set_assertions($this->get_assertions($uri));
     if (!$uri) {
         //pas d'uri, on instancie les assertions par défaut...
         $assertions = array();
         foreach ($this->ontology->get_class_properties($class_uri) as $uri_property) {
             $property = $this->ontology->get_property($class_uri, $uri_property);
             if (count($property->default_value)) {
                 global ${$property->default_value['value']};
                 if (isset(${$property->default_value['value']})) {
                     $assertions[] = new onto_assertion($item->get_uri(), $uri_property, onto_common_uri::get_uri(${$property->default_value['value']}), $property->range[0], array('type' => "uri", 'display_label' => $this->get_data_label(onto_common_uri::get_uri(${$property->default_value['value']}))));
                 }
             }
         }
         if (count($assertions)) {
             $item->set_assertions($assertions);
         }
     }
     return $item;
 }
示例#7
0
 public static function get_selector_breadcrumb($controler, $params)
 {
     $breadcrumb = $controler->handle_breadcrumb();
     $return = '';
     if (sizeof($breadcrumb)) {
         foreach ($breadcrumb as $key => $parent_id) {
             if ($return) {
                 $return .= ' > ';
             }
             $return .= "<a href='" . $params->base_url . "&parent_id=" . $parent_id . "'>" . $controler->get_data_label(onto_common_uri::get_uri($parent_id)) . '</a>';
         }
     }
     return $return;
 }
示例#8
0
 /**
  * Retourne une liste hierarchisée
  * 
  * @param string $class_uri
  * @param onto_param $params
  * @return array
  */
 public function get_hierarchized_list($class_uri, $params)
 {
     global $lang;
     $page = $params->page - 1;
     $displayLabel = $this->handler->get_display_label(self::$concept_uri);
     $query = $filter = "";
     $query .= "select ?elem ?label where {\n\t\t\t?elem rdf:type <" . self::$concept_uri . "> .";
     $counted = false;
     if (!$params->parent_id) {
         //retourne les top concepts
         if ($params->only_top_concepts) {
             $more = "\n\t\t\t\t\t?elem <" . $displayLabel . "> ?label";
             if ($params->concept_scheme == 0) {
                 $more .= " . ?elem pmb:showInTop owl:Nothing";
                 $count_query = "select count(?elem) as ?nb where{ ?elem pmb:showInTop owl:Nothing }";
                 $this->handler->data_query($count_query);
                 if ($this->handler->data_num_rows()) {
                     $counted = true;
                     $result = $this->handler->data_result();
                     $nb_elements = $result[0]->nb;
                 }
             } else {
                 if ($params->concept_scheme != -1) {
                     $more .= " .\t?elem skos:topConceptOf <" . onto_common_uri::get_uri($params->concept_scheme) . ">";
                     $count_query = "select count(?elem) as ?nb where{ ?elem skos:topConceptOf <" . onto_common_uri::get_uri($params->concept_scheme) . "> }";
                     $this->handler->data_query($count_query);
                     if ($this->handler->data_num_rows()) {
                         $counted = true;
                         $result = $this->handler->data_result();
                         $nb_elements = $result[0]->nb;
                     }
                 } else {
                     $more .= " .\t?elem skos:topConceptOf ?top";
                 }
             }
         } else {
             $more = "\r\n\t\t\t\t\t?elem <" . $displayLabel . "> ?label";
             if ($params->concept_scheme == 0) {
                 /*
                  * 
                  * TODO : HACK à reprendre un jour
                  * 
                  */
                 $more .= " . ?elem pmb:showInTop owl:Nothing";
             } else {
                 // Sinon on affiche les top concepts de tous les schémas y compris sans schema
                 /*
                  * 
                  * TODO : HACK à reprendre un jour
                  * 
                  */
                 $more .= " . optional { ?elem pmb:showInTop ?scheme";
                 if ($params->concept_scheme != -1) {
                     // On n'affiche qu'un schéma
                     $filter .= " (?scheme = <" . onto_common_uri::get_uri($params->concept_scheme) . ">)";
                 }
                 $more .= " }";
                 if ($filter) {
                     $more .= " filter (" . $filter . ")\n\t\t\t\t\t\t";
                 }
             }
         }
         $query .= $more;
         $nb_elements = $this->handler->get_nb_elements(self::$concept_uri, $more);
     } else {
         //retourne les enfants du parent
         $more = "\r\n\t\t\t\t\t?elem <" . $displayLabel . "> ?label .\r\n\t\t\t\t\t?elem <http://www.w3.org/2004/02/skos/core#broader> <" . onto_common_uri::get_uri($params->parent_id) . ">";
         if ($params->concept_scheme == 0) {
             // On affiche les concepts qui n'ont pas de schéma
             $more .= " .\n\t\t\t\t\t\toptional {\n\t\t\t\t\t\t\t?elem <http://www.w3.org/2004/02/skos/core#inScheme> ?scheme\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfilter (!bound(?scheme))\n\t\t\t\t\t\t";
         } else {
             if ($params->concept_scheme != -1) {
                 // On n'affiche qu'un schéma
                 $more .= " .\n\t\t\t\t\t\t?elem <http://www.w3.org/2004/02/skos/core#inScheme> <" . onto_common_uri::get_uri($params->concept_scheme) . ">  \r\n\t\t\t\t\t\t";
             }
         }
         $query .= $more;
         $nb_elements = $this->handler->get_nb_elements(self::$concept_uri, $more);
     }
     $query .= " } group by ?elem order by ?label limit " . $params->nb_per_page;
     $query .= " offset " . $page * $params->nb_per_page;
     $this->handler->data_query($query);
     $results = $this->handler->data_result();
     $list = array('nb_total_elements' => $nb_elements, 'nb_onto_element_per_page' => $params->nb_per_page, 'page' => $page);
     $list['elements'] = array();
     if ($this->handler->data_num_rows()) {
         foreach ($results as $result) {
             if (!$list['elements'][$result->elem]['default']) {
                 $list['elements'][$result->elem]['default'] = $result->label;
             }
             if (substr($lang, 0, 2) == $result->label_lang) {
                 $list['elements'][$result->elem][$result->label_lang] = $result->label;
             }
         }
     }
     return $list;
 }