/** * Retourne la liste des URI des propriétés avec les domain et range (propriété * properties_uri) * * @return void * @access public */ public function get_properties() { if (!$this->properties_uri) { $query = "select * where {\n\t\t\t\t?property rdf:type <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .\n\t\t\t\t?property rdfs:label ?label .\n\t\t\t\t?property pmb:name ?name . \n\t\t\t\toptional {\n\t\t\t\t\t?property rdfs:range ?range\n\t\t\t\t} .\n\t\t\t\toptional {\n\t\t\t\t\t?property rdfs:domain ?domain\n\t\t\t\t}\n\t\t\t\toptional {\n\t\t\t\t\t?property pmb:datatype ?datatype\n\t\t\t\t} .\n\t\t\t\toptional {\n\t\t\t\t\t?property pmb:defaultValueType ?default_value .\n\t\t\t\t\t?property pmb:defaultValue ?default_value_name\n\t\t\t\t} . \n\t\t\t\toptional {\n\t\t\t\t\t?property pmb:flag ?flag\t\t\t\t\n\t\t\t\t}\n\t\t\t}"; if ($this->store->query($query)) { if ($this->store->num_rows()) { $result = $this->store->get_result(); foreach ($result as $elem) { if (!isset($this->properties_uri[$elem->property])) { $this->properties_uri[$elem->property] = new onto_property(); $this->properties_uri[$elem->property]->uri = $elem->property; $this->properties_uri[$elem->property]->name = $elem->label; $this->properties_uri[$elem->property]->pmb_name = $elem->name; $this->properties_uri[$elem->property]->pmb_datatype = $elem->datatype; } if ($elem->domain) { $this->properties_uri[$elem->property]->domain[] = $elem->domain; } if ($elem->range) { if (!$this->properties_uri[$elem->property]->range) { $this->properties_uri[$elem->property]->range = array(); } //il faut gérer le cas du noeud blanc if ($elem->range_type == "bnode") { $this->properties_uri[$elem->property]->range = array_merge($this->properties_uri[$elem->property]->range, $this->get_recursive_blank_range($elem->range)); } else { if (!in_array($elem->range, $this->properties_uri[$elem->property]->range)) { $this->properties_uri[$elem->property]->range[] = $elem->range; } } } if ($elem->default_value) { $this->properties_uri[$elem->property]->default_value = array('value' => $elem->default_value_name, 'type' => $elem->default_value); } if ($elem->flag) { if (!$this->properties_uri[$elem->property]->flags) { $this->properties_uri[$elem->property]->flags = array(); } $this->properties_uri[$elem->property]->flags[] = $elem->flag; } } } //on vérifie, si aucun domaine précisé, on peut mettre la propriété partout foreach ($this->properties_uri as $property_uri => $property) { if (!count($property->domain)) { foreach ($this->classes_uris as $class_uri => $class) { $this->properties_uri[$property_uri]->domain[] = $class_uri; } } } } else { highlight_string(print_r($this->store->get_errors(), true)); } } return $this->properties_uri; }
/** * Fonction d'accès aux requetes sparql dans l'onto store * renvoi le nombre de résultat * * @return integer num rows */ public function onto_num_rows() { if ($this->onto_store->num_rows()) { return $this->onto_store->num_rows(); } elseif ($errs = $this->onto_store->get_errors()) { print "<br>Erreurs: <br>"; print "<pre>"; print_r($errs); print "</pre><br>"; } return false; }