-(* Copyright (C) 2000, HELM Team.
- *
- * This file is part of HELM, an Hypertextual, Electronic
- * Library of Mathematics, developed at the Computer Science
- * Department, University of Bologna, Italy.
- *
- * HELM is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * HELM is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HELM; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston,
- * MA 02111-1307, USA.
- *
- * For details, see the HELM World-Wide-Web page,
- * http://cs.unibo.it/helm/.
- *)
-
-(*
- *
- *)
-
-open Dbconn;;
-open Utility;;
-open Intersect;;
-
-
-let getpid p =
- if (p = "refObj") then "F"
- else "B"
-;;
-
-(*
- * implementazione delle funzioni dublin core
- *)
-let rec property_ex rop path inv = function
- [] -> []
- | s::tl -> let mprop = fst path in
- print_endline mprop;
- 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 *)
- | "backPointer" ->
- print_endline mprop;
- let mpid = getpid mprop in
- let res =
- let c = pgc () 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
- append (res,(property_ex rop path inv tl))
-
- (*Rimane da capire cosa restituire nelle inverse!!!!*)
-
-
- | "refRel"
- | "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 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
- append (res,(property_ex 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 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
- print_endline q;
- pgresult_to_string_list (c#exec q)
- in
- append (res,(property_ex rop path inv tl))
- else
- let res =
- let c = pgc () in
- let q = ("select " ^ mprop ^ ".value from " ^ mprop ^ " where " ^ mprop ^ ".uri = '" ^ s ^ "'") in
- pgresult_to_string_list (c#exec q)
- in
- append (res,(property_ex rop path inv tl))
-
-;;
-