X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;ds=sidebyside;f=helm%2Focaml%2Fmathql_interpreter%2Fproperty.ml;h=1158d30122c8a45896b90cb33e10255bb1858c9d;hb=00bcf4e9f02d1f456b3468eba3de21c1309e5796;hp=6052c2072842ee14caecda71d660082def1a1621;hpb=d6dd3cb8ee6718a0992a87e15a4b98b438d0f30d;p=helm.git diff --git a/helm/ocaml/mathql_interpreter/property.ml b/helm/ocaml/mathql_interpreter/property.ml index 6052c2072..1158d3012 100644 --- a/helm/ocaml/mathql_interpreter/property.ml +++ b/helm/ocaml/mathql_interpreter/property.ml @@ -44,7 +44,11 @@ let rec property_ex rop path inv = function [] -> [] | s::tl -> let mprop = fst path in print_endline mprop; - let prop = List.hd (snd path) in + let l_sub_p = snd path in + + let prop = (if (l_sub_p <> []) then List.hd l_sub_p + else "") + in match mprop with "refObj" (* in base al valore di prop restituisco i valori del relativo campo della tabella relativa all'uri rappresentata da s *) @@ -53,8 +57,8 @@ let rec property_ex rop path inv = function let mpid = getpid mprop in let res = let c = pgc () in - let tv = pgresult_to_string (c#exec ("select id from registry where uri='" ^ s ^ "'")) in - let q = "select t" ^ tv ^ "." ^ prop ^ " from t" ^ tv ^ " where prop_id= '" ^ mpid ^ "'" in + let tv = pgresult_to_string (c#exec ("select distinct id from registry where uri='" ^ s ^ "' order by id")) in + let q = "select distinct t" ^ tv ^ "." ^ prop ^ " from t" ^ tv ^ " where prop_id= '" ^ mpid ^ "' order by t" ^ tv ^ "." ^ prop in print_endline q; pgresult_to_string_list (c#exec q) in @@ -68,7 +72,7 @@ let rec property_ex rop path inv = function if inv then (* restituisco gli uri che il valore della prop richiesta uguale a s *) let res = let c = pgc () in - let q = ("select h" ^ mprop ^ ".uri from h" ^ mprop ^ " where h" ^ mprop ^ "." ^ prop ^ "= '" ^ s ^ "'") in + let q = ("select distinct h" ^ mprop ^ ".uri from h" ^ mprop ^ " where h" ^ mprop ^ "." ^ prop ^ "= '" ^ s ^ "' order by h" ^ mprop ^ ".uri") in print_endline q; pgresult_to_string_list (c#exec q) in @@ -77,19 +81,20 @@ let rec property_ex rop path inv = function else let res = (* restituisco il valore della prop relativo all'uri rappresentato da s*) let c = pgc () in - let q = ("select h" ^ mprop ^ "." ^ prop ^" from h" ^ mprop ^ " where h" ^ mprop ^ ".uri = '" ^ s ^ "'") in + let q = ("select distinct h" ^ mprop ^ "." ^ prop ^" from h" ^ mprop ^ " where h" ^ mprop ^ ".uri = '" ^ s ^ "' order by h" ^ mprop ^ "." ^ prop) in pgresult_to_string_list (c#exec q) in append (res,(property_ex rop path inv tl)) - | _ -> (* metadati DC !!!! Controllare se i nomi delle tabelle cominciano con h !!!!*) + print_endline "DC"; if inv then let res = let c = pgc () in let q = ("select " ^ mprop ^ ".uri from " ^ mprop ^ " where " ^ mprop ^ ".value = '" ^ s ^ "'") in - pgresult_to_string_list (c#exec q) + print_endline q; + pgresult_to_string_list (c#exec q) in append (res,(property_ex rop path inv tl)) else