コード例 #1
0
ファイル: onto_ontology.class.php プロジェクト: hogsim/PMB
 /**
  * Récupère les cardinalités entre une classe et une propriété
  *
  * @param string uri_class 
  * @param string uri_property 
  * @return onto_restriction
  * @access public
  */
 public function get_restriction($uri_class, $uri_property)
 {
     $restriction = new onto_restriction();
     //recherche des exlusions !
     $query = "select ?distinct where {\n\t\t\t<" . $uri_property . "> pmb:distinctWith ?distinct\n\t\t}";
     if ($this->store->query($query)) {
         if ($this->store->num_rows()) {
             $results = $this->store->get_result();
             foreach ($results as $result) {
                 $restriction->set_new_distinct($this->get_property($uri_class, $result->distinct));
             }
         }
     } else {
         var_dump($this->store->get_errors());
     }
     $query = "select ?max ?min where {\n\t\t\t<" . $uri_class . "> rdf:type <http://www.w3.org/2002/07/owl#Class> .\n\t\t\t<" . $uri_class . "> rdfs:subClassOf ?restrict .\t\n\t\t\t?restrict rdf:type <http://www.w3.org/2002/07/owl#Restriction> .\n\t\t\t?restrict owl:onProperty <" . $uri_property . "> .\t\t\n\t\t\toptional {\n\t\t\t\t?restrict owl:maxCardinality ?max\n\t\t\t} .\n\t\t\toptional {\n\t\t\t\t?restrict owl:minCardinality ?min\n\t\t\t}\n\t\t}";
     if ($this->store->query($query)) {
         if ($this->store->num_rows()) {
             $results = $this->store->get_result();
             foreach ($results as $result) {
                 if ($result->min) {
                     $restriction->set_min($result->min);
                 }
                 if ($result->max) {
                     $restriction->set_max($result->max);
                 }
             }
         }
     } else {
         var_dump($this->store->get_errors());
     }
     return $restriction;
 }
    /**
     *
     *
     * @param property property la propriété concernée
     * @param onto_restriction $restrictions le tableau des restrictions associées à la propriété
     * @param array datas le tableau des datatypes
     * @param string instance_name nom de l'instance
     * @param string flag Flag
     * @return string
     * @static
     * @access public
     */
    public static function get_validation_js($item_uri, $property, $restrictions, $datas, $instance_name, $flag)
    {
        global $msg;
        return '{
			"message": "' . addslashes($property->label) . '",
			"valid" : true,
			"nb_values": 0,
			"error": "",
			"values": new Array(),
			"check": function(){
				this.values = new Array();
				this.nb_values = 0;
				this.valid = true;
				var order = document.getElementById("' . $instance_name . '_' . $property->pmb_name . '_new_order").value;
				for (var i=0; i<=order ; i++){
					var label = document.getElementById("' . $instance_name . '_' . $property->pmb_name . '_"+i+"_value");
					var lang = document.getElementById("' . $instance_name . '_' . $property->pmb_name . '_"+i+"_lang");
					if(label.value != ""){
						if(!this.values[lang.value]){
							this.values[lang.value] = 0;
						}
						this.values[lang.value]++;
						if(this.nb_values < this.values[lang.value]) {
							this.nb_values = this.values[lang.value];
						}
					}
				}
							
				if(this.nb_values < ' . $restrictions->get_min() . '){
					this.valid = false;
					this.error = "min";
				}
				if(this.nb_values > ' . $restrictions->get_max() . '){
					this.valid = false;
					this.error = "max";
				}
				return this.valid;
			},
			"get_error_message": function(){
 				switch(this.error){
 					case "min" :
						this.message = "' . addslashes($msg['onto_error_no_minima']) . '";
						break;
					case "max" : 
						this.message = "' . addslashes($msg['onto_error_too_much_values']) . '";
						break;
 				}
				this.message = this.message.replace("%s","' . addslashes($property->label) . '");			
				return this.message;	
			} 	
		}';
    }