/** * Inialisation de l'instance d'onto_store_arc2 dans self::store * @return void * @access private */ private static function init() { if (!is_object(self::$store)) { $onto_store_config = array('db_name' => DATA_BASE, 'db_user' => USER_NAME, 'db_pwd' => USER_PASS, 'db_host' => SQL_SERVER, 'store_name' => 'rdfstore', 'max_errors' => 100, 'store_strip_mb_comp_str' => 0); self::$store = new onto_store_arc2($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#")); } }
/** * Retourne le détail d'un concept * @return array Tableau des différentes propriétés du concept */ public function get_details() { global $lang; $details = array(); $query = "select * where {\n\t\t\t\t<" . $this->uri . "> rdf:type skos:Concept .\n\t\t\t\t<" . $this->uri . "> skos:prefLabel ?label .\t\t\n\t\t\t\toptional {\n\t\t\t\t\t<" . $this->uri . "> skos:altLabel ?altlabel\n\t\t\t\t} . \n\t\t\t\toptional {\n\t\t\t\t\t<" . $this->uri . "> skos:note ?note\n\t\t\t\t} .\n\t\t\t\toptional {\n\t\t\t\t\t<" . $this->uri . "> <http://www.w3.org/2004/02/skos/core#Note> ?notebnf\n\t\t\t\t} .\t\t\t\n\t\t\t\toptional {\n\t\t\t\t\t<" . $this->uri . "> skos:related ?related .\n\t\t\t\t\toptional {\t\t\n\t\t\t\t\t\t?related skos:prefLabel ?relatedlabel\t\n\t\t\t\t\t}\n\t\t\t\t} .\n\t\t\t\toptional {\n\t\t\t\t\t<" . $this->uri . "> skos:related ?related .\n\t\t\t\t\toptional {\t\t\n\t\t\t\t\t\t?related skos:prefLabel ?relatedlabel\t\n\t\t\t\t\t}\n\t\t\t\t} .\n\t\t\t\toptional {\n\t\t\t\t\t<" . $this->uri . "> owl:sameAs ?sameas .\n\t\t\t\t\toptional {\t\t\n\t\t\t\t\t\t?sameas skos:prefLabel ?sameaslabel\t\n\t\t\t\t\t}\n\t\t\t\t} .\n\t\t\t\toptional {\n\t\t\t\t\t<" . $this->uri . "> rdfs:seeAlso ?seealso .\n\t\t\t\t\toptional {\t\t\n\t\t\t\t\t\t?seealso skos:prefLabel ?seealsolabel\t\n\t\t\t\t\t}\n\t\t\t\t} .\n\t\t\t\toptional {\n\t\t\t\t\t<" . $this->uri . "> skos:exactMatch ?exactmatch .\n\t\t\t\t\toptional {\t\t\n\t\t\t\t\t\t?exactmatch skos:prefLabel ?exactmatchlabel\t\n\t\t\t\t\t}\n\t\t\t\t} .\n\t\t\t\toptional {\n\t\t\t\t\t<" . $this->uri . "> skos:closeMatch ?closematch .\n\t\t\t\t\toptional {\t\t\n\t\t\t\t\t\t?closematch skos:prefLabel ?closematchlabel\t\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}"; skos_datastore::query($query); if (skos_datastore::num_rows()) { $results = skos_datastore::get_result(); foreach ($results as $result) { foreach ($result as $property => $value) { switch ($property) { //cas des literaux case "altlabel": if (!isset($details['http://www.w3.org/2004/02/skos/core#altLabel'])) { $details['http://www.w3.org/2004/02/skos/core#altLabel'] = array(); } if (isset($result->{$propery . "_lang"}) == substr($lang, 0, 2)) { if (!in_array($value, $details['http://www.w3.org/2004/02/skos/core#altLabel'])) { $details['http://www.w3.org/2004/02/skos/core#altLabel'][] = $value; } break; } else { if (!in_array($value, $details['http://www.w3.org/2004/02/skos/core#altLabel'])) { $details['http://www.w3.org/2004/02/skos/core#altLabel'][] = $value; } } break; case "hiddenlabel": if (!isset($details['http://www.w3.org/2004/02/skos/core#hiddenLabel'])) { $details['http://www.w3.org/2004/02/skos/core#hiddenLabel'] = array(); } if (isset($result->hiddenlabel_lang) == substr($lang, 0, 2)) { if (!in_array($value, $details['http://www.w3.org/2004/02/skos/core#hiddenLabel'])) { $details['http://www.w3.org/2004/02/skos/core#hiddenLabel'][] = $value; } break; } else { if (!in_array($value, $details['http://www.w3.org/2004/02/skos/core#altLabel'])) { $details['http://www.w3.org/2004/02/skos/core#altLabel'][] = $value; } } break; case "related": if (!isset($details['http://www.w3.org/2004/02/skos/core#related'])) { $details['http://www.w3.org/2004/02/skos/core#related'] = array(); } if ($result->related_type == "uri") { //on cherche si l'URI est connu dans notre système $id = onto_common_uri::get_id($value); $detail = array('uri' => $value); if (isset($result->relatedlabel)) { $detail['label'] = $result->relatedlabel; } if ($id) { $detail['id'] = $id; } if (!in_array($detail, $details['http://www.w3.org/2004/02/skos/core#related'])) { $details['http://www.w3.org/2004/02/skos/core#related'][] = $detail; } } break; case "sameas": if (!isset($details['http://www.w3.org/2002/07/owl#sameAs'])) { $details['http://www.w3.org/2002/07/owl#sameAs'] = array(); } if ($result->sameas_type == "uri") { //on cherche si l'URI est connu dans notre système $id = onto_common_uri::get_id($value); $detail = array('uri' => $value); if (isset($result->sameaslabel)) { $detail['label'] = $result->sameaslabel; } if ($id) { $detail['id'] = $id; } if (!in_array($detail, $details['http://www.w3.org/2002/07/owl#sameAs'])) { $details['http://www.w3.org/2002/07/owl#sameAs'][] = $detail; } } break; case "note": if (!isset($details['http://www.w3.org/2004/02/skos/core#note'])) { $details['http://www.w3.org/2004/02/skos/core#note'] = array(); } if (isset($result->note_lang) == substr($lang, 0, 2)) { if (!in_array($value, $details['http://www.w3.org/2004/02/skos/core#note'])) { $details['http://www.w3.org/2004/02/skos/core#note'][] = $value; } break; } else { if (!in_array($value, $details['http://www.w3.org/2004/02/skos/core#note'])) { $details['http://www.w3.org/2004/02/skos/core#note'][] = $value; } } break; case "notebnf": if (!isset($details['http://www.w3.org/2004/02/skos/core#note'])) { $details['http://www.w3.org/2004/02/skos/core#note'] = array(); } if (isset($result->notebnf_lang) == substr($lang, 0, 2)) { if (!in_array($value, $details['http://www.w3.org/2004/02/skos/core#note'])) { $details['http://www.w3.org/2004/02/skos/core#note'][] = $value; } break; } else { if (!in_array($value, $details['http://www.w3.org/2004/02/skos/core#note'])) { $details['http://www.w3.org/2004/02/skos/core#note'][] = $value; } } break; case "seealso": if (!isset($details['http://www.w3.org/2000/01/rdf-schema#seeAlso'])) { $details['http://www.w3.org/2000/01/rdf-schema#seeAlso'] = array(); } if ($result->seealso_type == "uri") { //on cherche si l'URI est connu dans notre système $id = onto_common_uri::get_id($value); $detail = array('uri' => $value); if (isset($result->seealsolabel)) { $detail['label'] = $result->seealsolabel; } if ($id) { $detail['id'] = $id; } if (!in_array($detail, $details['http://www.w3.org/2000/01/rdf-schema#seeAlso'])) { $details['http://www.w3.org/2000/01/rdf-schema#seeAlso'][] = $detail; } } break; case "exactmatch": if (!isset($details['http://www.w3.org/2004/02/skos/core#exactMatch'])) { $details['http://www.w3.org/2004/02/skos/core#exactMatch'] = array(); } if ($result->exactmatch_type == "uri") { //on cherche si l'URI est connu dans notre système $id = onto_common_uri::get_id($value); $detail = array('uri' => $value); if (isset($result->exactmatchlabel)) { $detail['label'] = $result->exactmatchlabel; } if ($id) { $detail['id'] = $id; } if (!in_array($detail, $details['http://www.w3.org/2004/02/skos/core#exactMatch'])) { $details['http://www.w3.org/2004/02/skos/core#exactMatch'][] = $detail; } } break; case "closematch": if (!isset($details['http://www.w3.org/2004/02/skos/core#closeMatch'])) { $details['http://www.w3.org/2004/02/skos/core#closeMatch'] = array(); } if ($result->closematch_type == "uri") { //on cherche si l'URI est connu dans notre système $id = onto_common_uri::get_id($value); $detail = array('uri' => $value); if (isset($result->closematchlabel)) { $detail['label'] = $result->closematchlabel; } if ($id) { $detail['id'] = $id; } if (!in_array($detail, $details['http://www.w3.org/2004/02/skos/core#closeMatch'])) { $details['http://www.w3.org/2004/02/skos/core#closeMatch'][] = $detail; } } break; } } } } return $details; }