public function __construct($type, $id, $isbd = "") { if ($id * 1) { $id = onto_common_uri::get_uri($id); } parent::__construct($type, $id, $isbd); }
/** * 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)); }
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; }
/** * 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; }
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; }
/** * 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; }