DATA_BASE, 'db_user' => USER_NAME, 'db_pwd' => USER_PASS, 'db_host' => SQL_SERVER, /* store */ 'store_name' => 'ontology_pmb_entities', /* stop after 100 errors */ 'max_errors' => 100, 'store_strip_mb_comp_str' => 0 ); self::$store = new onto_store_arc2_extended($onto_store_config); self::$store->set_namespaces(array( "skos" => "http://www.w3.org/2004/02/skos/core#", "dc" => "http://purl.org/dc/elements/1.1", "dct" => "http://purl.org/dc/terms/", "owl" => "http://www.w3.org/2002/07/owl#", "rdf" => "http://www.w3.org/1999/02/22-rdf-syntax-ns#", "rdfs" => "http://www.w3.org/2000/01/rdf-schema#", "xsd" => "http://www.w3.org/2001/XMLSchema#", "pmb" => "http://www.pmbservices.fr/ontology#" )); //chargement de l'ontologie dans son store $reset = self::$store->load($class_path."/rdf/ontologies_pmb_entities.rdf", onto_parametres_perso::is_modified()); onto_parametres_perso::load_in_store(self::$store, $reset); } } public static function get_store(){ self::init(); return self::$store; } /** * Exécute une nouvelle requête SPARQL sur le store de l'ontologie SKOS * @param query string

Requête SPARQL a lancer sur le store ARC2

* @return bool * @access public */ public static function query($query){ self::init(); return self::$store->query($query); } /** * Retourne le nombre de lignes de la dernière requete SPARQL sur le store de l'ontologie SKOS * @return

Nombre de lignes pour la dernière requete
FALSE si le store n'est pas initialisé

* @access public */ public static function num_rows(){ if(is_object(self::$store)){ return self::$store->num_rows(); } return false; } /** * Retourne le résulat de la dernière requete SPARQL sur le store de l'ontologie SKOS * @return

Tableau du résultat pour la dernière requete
FALSE si le store n'est pas initialisé

* @access public */ public static function get_result(){ if(is_object(self::$store)){ return self::$store->get_result(); } return false; } /** * Retoune le label PMB d'une propriété d'une classe de l'ontologie SKOS. Interroge le store si nécessaire * @param class_uri string

URI de la classe associée

* @param property_uri string

URI de la propriéte dont on veut le label PMB

* @return

Retourne le label associé

* @access public */ public static function get_property_label($class_uri,$property_uri){ if(!isset(self::$labels[$class_uri])){ self::get_properties_labels($class_uri); } if(isset(self::$labels[$class_uri][$property_uri])){ return self::$labels[$class_uri][$property_uri]['label']; }else{ return $property_uri; } } /** * Retoune les labels PMB des propriétés d'une classe de l'ontologie SKOS. Interroge le store si nécessaire * @param class_uri string

URI de la classe associée

* @return

Retourne le tableau de labels associés

* @access public */ public static function get_properties_labels($class_uri){ // on trouve les libellés? if(!isset(self::$labels[$class_uri])){ //on recherche toutes les propriétés associés $query = "select * where { ?property rdf:type . ?property rdfs:label ?label . ?property pmb:name ?name . optional { ?property rdfs:domain ?domain } }"; self::query($query); if(self::$store->num_rows()){ $result = self::$store->get_result(); //init de la static pour la classe concernée self::$labels[$class_uri] = array(); foreach ($result as $property){ if(!isset($property->domain) || $property->domain == $class_uri){ self::$labels[$class_uri][$property->property] = array( 'pmb_name' => $property->name ); self::$labels[$class_uri][$property->property]['label'] = self::calc_label($class_uri, $property->property,$property->label); } } } } return self::$labels[$class_uri]; } /** * Récupère le libellé approprié d'une propriété d'une classe d'ontologie dans les messages PMB. * @param class_uri string

URI de la classe associée

* @param property_uri string

URI de la propriéte dont on veut le label PMB

* @param default_label string

Libellé récupéré dans le store de l'ontologie

* @return

Retourne le libellé le plus approprié pour la propriété d'une classe de l'ontologie

* @access private */ private static function calc_label($class_uri, $property_uri,$default_label = ""){ global $msg; if(isset($msg['onto_skos_'.self::$labels[$class_uri][$property_uri]['pmb_name']])){ //le message PMB spécifique pour l'ontologie courante $label = $msg['onto_skos_'.self::$labels[$class_uri][$property_uri]['pmb_name']]; }else if (isset($msg['onto_common_'.self::$labels[$class_uri][$property_uri]['pmb_name']])){ //le message PMB générique $label = $msg['onto_common_'.self::$labels[$class_uri][$property_uri]['pmb_name']]; }else { $label = $default_label; } return $label; } }