Beispiel #1
0
 /**
  * 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;
 }
Beispiel #2
0
 /**
  * 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;
 }