]> matita.cs.unibo.it Git - helm.git/commitdiff
let in scope corrected and new database format support
authorlordi <??>
Wed, 19 Jun 2002 12:53:55 +0000 (12:53 +0000)
committerlordi <??>
Wed, 19 Jun 2002 12:53:55 +0000 (12:53 +0000)
helm/ocaml/mathql_interpreter/letin.ml
helm/ocaml/mathql_interpreter/letin.mli
helm/ocaml/mathql_interpreter/mqint.ml
helm/ocaml/mathql_interpreter/use.ml

index 3cf1fb617582391445c3036a5d921e3aaac64e82..160a7a164dcd63254c9c657371e9b557e68b0258 100644 (file)
@@ -55,7 +55,11 @@ let letref_ex rvar =
       try
        List.assoc rvar pool
       with
-       Not_found -> let _ = print_endline "nun ce sta" in []
+       Not_found -> []
      )
 ;;
 
+let letdispose () =
+ let _ = letin_pool = ref None in ()
+;;
+
index b2b6ffda6c29301dcb89e6e25e04806fe21f9183..d221ddd2e00286d720072607c9b26e781e353350 100644 (file)
@@ -25,3 +25,4 @@
 
 val letin_ex : MathQL.mqlvar -> Mathql_semantics.result -> Mathql_semantics.result
 val letref_ex : MathQL.mqlvar -> Mathql_semantics.result
+val letdispose : unit -> unit
index 34cfc09869d418377c2e9ba36737e6f4886cec57..3a0a5fb310b277a4729a36d5da17e30b144c9209 100644 (file)
@@ -39,6 +39,8 @@ open Use;;
 open Select;;
 open Letin;;
 
+let prop_pool = ref None;;
+
 let fi_to_string fi =
  match fi with
     (None, _)   ->
@@ -56,10 +58,38 @@ let fi_to_string fi =
      ")"
 ;;
 
+let see_prop_pool () =
+ let _ = print_endline "eccomi" in
+ List.iter
+  (fun elem -> print_endline (fst elem ^ ": " ^ snd elem))
+  (match !prop_pool with Some l -> l | _ -> print_endline "ciao"; assert false)
+;;
+
 (*
  * inizializzazione della connessione al database
  *)
-let init () = Dbconn.init ();;
+let init () =
+ let _ = Dbconn.init () in
+  let c = pgc () in
+   let res = 
+    c#exec "select name,id from property where ns_id in (select id from namespace where url='http://www.cs.unibo.it/helm/schemas/mattone.rdf#')"
+   in
+    prop_pool := Some
+     (
+      List.map
+       (function
+           a::b::_ -> (a, b)
+         | _       -> print_endline "no"; assert false
+       )
+       res#get_list
+     )
+;;
+
+let get_prop_id prop =
+ if prop="refObj" then "F"
+ else if prop="backPointer" then "B"
+ else List.assoc prop (match !prop_pool with Some l -> l | _ -> assert false)
+;;
 
 (* execute_ex env q                                                   *)
 (*  [env] is the attributed uri environment in which the query [q]    *)
@@ -71,9 +101,9 @@ let rec execute_ex env =
     MQSelect (apvar, alist, abool) ->
      select_ex env apvar (execute_ex env alist) abool
  |  MQUsedBy (alist, asvar) ->
-     use_ex (execute_ex env alist) asvar "F" (*"refObj"*)
+     use_ex (execute_ex env alist) asvar (get_prop_id "refObj")      (* "F" (*"refObj"*) *)
  |  MQUse (alist, asvar) ->
-     use_ex (execute_ex env alist) asvar "B" (*"backPointer"*)
+     use_ex (execute_ex env alist) asvar (get_prop_id "backPointer") (* "B" (*"backPointer"*) *)
  |  MQPattern (apreamble, apattern, afragid) ->
      pattern_ex (apreamble, apattern, afragid)
  |  MQUnion (l1, l2) ->
@@ -93,6 +123,7 @@ let rec execute_ex env =
         execute_ex env l2
        (*CSC: end of the interesting code *)
       in
+       letdispose ();
        print_string ("LETIN = " ^ string_of_int (List.length res) ^ ": ") ;
        print_endline (string_of_float (Unix.time () -. t) ^ "s") ;
        flush stdout ;
index ed8a855ec1f86b994bd184f0d1736bb71061c079..93ed9a8a4a722e1ca329fd803fa57386271d12f3 100644 (file)
@@ -109,7 +109,7 @@ let result =
         (c#exec ("select id from registry where uri='" ^ uri ^ "'"))
       in
       let qq =
-       "select uri, context from t" ^ tv ^ " where back_for='" ^ usek ^
+       "select uri, context from t" ^ tv ^ " where prop_id='" ^ usek ^
         "' order by uri asc"
       in
       let res = c#exec qq in