X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Focaml%2Fmathql_interpreter%2Fproperty.ml;h=34a75aa9a3b4b7922fb0d0f0a6dfcef2f7b0bf90;hb=d59d2f93956bcbe4dd7bb3407e3c53de8b66c003;hp=071d2884c74a86147445a2a35f8e34a3b7edb888;hpb=c6f5d71b58dc74658cdaeab24fe26c7e989dc175;p=helm.git diff --git a/helm/ocaml/mathql_interpreter/property.ml b/helm/ocaml/mathql_interpreter/property.ml index 071d2884c..34a75aa9a 100644 --- a/helm/ocaml/mathql_interpreter/property.ml +++ b/helm/ocaml/mathql_interpreter/property.ml @@ -40,10 +40,10 @@ let getpid p = (* * implementazione delle funzioni dublin core *) -let rec property_ex rop path inv = function +let rec property_ex handle rop path inv = function [] -> [] | s::tl -> let mprop = fst path in - print_endline mprop; + prerr_endline mprop; let l_sub_p = snd path in let prop = (if (l_sub_p <> []) then List.hd l_sub_p @@ -53,16 +53,19 @@ let rec property_ex rop path inv = function "refObj" (* in base al valore di prop restituisco i valori del relativo campo della tabella relativa all'uri rappresentata da s *) | "backPointer" -> - print_endline mprop; + prerr_endline mprop; 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 - print_endline q; + let c = MQIConn.pgc handle in + let quoted_s = + Str.global_substitute (Str.regexp "'") + (function _ -> "\\'") s in + let tv = pgresult_to_string (c#exec ("select distinct id from registry where uri='" ^ quoted_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 + prerr_endline q; pgresult_to_string_list (c#exec q) in - append (res,(property_ex rop path inv tl)) + append (res,(property_ex handle rop path inv tl)) (*Rimane da capire cosa restituire nelle inverse!!!!*) @@ -71,40 +74,45 @@ let rec property_ex rop path inv = function | "refSort" -> 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 - print_endline q; + let c = MQIConn.pgc handle in + let q = ("select distinct h" ^ mprop ^ ".uri from h" ^ mprop ^ " where h" ^ mprop ^ "." ^ prop ^ "= '" ^ s ^ "' order by h" ^ mprop ^ ".uri") in + prerr_endline q; pgresult_to_string_list (c#exec q) in - append (res,(property_ex rop path inv tl)) + append (res,(property_ex handle rop path inv tl)) 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 c = MQIConn.pgc handle in + let quoted_s = + Str.global_substitute (Str.regexp "'") + (function _ -> "\\'") s in + let q = ("select distinct h" ^ mprop ^ "." ^ prop ^" from h" ^ mprop ^ " where h" ^ mprop ^ ".uri = '" ^ quoted_s ^ "' order by h" ^ mprop ^ "." ^ prop) in pgresult_to_string_list (c#exec q) in - append (res,(property_ex rop path inv tl)) - + append (res,(property_ex handle rop path inv tl)) | _ -> (* metadati DC !!!! Controllare se i nomi delle tabelle cominciano con h !!!!*) - print_endline "DC"; + prerr_endline "DC"; if inv then let res = - let c = pgc () in + let c = MQIConn.pgc handle in let q = ("select " ^ mprop ^ ".uri from " ^ mprop ^ " where " ^ mprop ^ ".value = '" ^ s ^ "'") in - print_endline q; + prerr_endline q; pgresult_to_string_list (c#exec q) in - append (res,(property_ex rop path inv tl)) + append (res,(property_ex handle rop path inv tl)) else let res = - let c = pgc () in - let q = ("select " ^ mprop ^ ".value from " ^ mprop ^ " where " ^ mprop ^ ".uri = '" ^ s ^ "'") in + let c = MQIConn.pgc handle in + let quoted_s = + Str.global_substitute (Str.regexp "'") + (function _ -> "\\'") s in + let q = ("select " ^ mprop ^ ".value from " ^ mprop ^ " where " ^ mprop ^ ".uri = '" ^ quoted_s ^ "'") in pgresult_to_string_list (c#exec q) in - append (res,(property_ex rop path inv tl)) + append (res,(property_ex handle rop path inv tl)) ;;