]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/ocaml/mathql_interpreter/relation.ml
Relation ok!
[helm.git] / helm / ocaml / mathql_interpreter / relation.ml
index 7e35aad7583eb77420898be280fbae6fd9d1d965..2fbb24bf80f421b4ba1bf8f83f635816da2efef4 100644 (file)
@@ -23,7 +23,7 @@
  * http://www.cs.unibo.it/helm/.
  *)
 
-
+open Union;;
 open Dbconn;;
 open Utility;;
 (*
@@ -53,23 +53,29 @@ let _ = print_string ("RELATION "^usek)
 and t = Unix.time () in
 let result =
  let c = pgc () in
- List.sort
-compare      
+
+let rset_list =  (* lista di singoletti:resource_set di un elemento *)
 (List.fold_left (fun acc (uri,l) ->
                          let tv = pgresult_to_string (c#exec ("select id from registry where uri='" ^ uri ^ "'"))
                          in
                           let qq = "select uri, context from t" ^ tv ^ " where prop_id='" ^ usek ^ "' order by uri asc"
                           in
                            let res = c#exec qq in
+                            
                             (List.map
-                             (function [uri;context] -> (uri,[[(vvar,[context])]])
+                             (function [uri;context] -> [(uri,[[(vvar,[context])]])]
                                        | _ -> assert false ) 
                              res#get_list) @ acc
-           )                 
+                                   )                 
             [] rset                          
 )
-(*Come faccio a togliere i duplicati????*)       
-
+in                    
+                            let rec edup = function
+                               [] -> []
+                             | rs1::tl -> union_ex rs1 (edup tl) 
+                             in 
+                             edup rset_list 
+                              
 
 in
 print_string (" = " ^ string_of_int (List.length result) ^ ": ") ;