1 (* Copyright (C) 2000, HELM Team.
3 * This file is part of HELM, an Hypertextual, Electronic
4 * Library of Mathematics, developed at the Computer Science
5 * Department, University of Bologna, Italy.
7 * HELM is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation; either version 2
10 * of the License, or (at your option) any later version.
12 * HELM is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with HELM; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place - Suite 330, Boston,
22 * For details, see the HELM World-Wide-Web page,
23 * http://www.cs.unibo.it/helm/.
27 * funzioni di utilita' generale
33 * converte il risultato di una query in una lista di stringhe
36 * l: Postgres.result; risultato della query
38 * output: string list; lista di stringhe (una per tupla)
40 * assumo che il risultato della query sia
41 * costituito da un solo valore per tupla
44 * verificare che l sia effettivamente costruita come richiesto
46 let pgresult_to_string_list l = List.map (List.hd) l#get_list;;
49 * converte il risultato di una query in una stringa
52 * l: Postgres.result; risultato della query
54 * output: string; valore dell'unica tupla del risultato
56 * mi aspetto che il risultato contenga una sola tupla
57 * formata da un solo valore
60 * verificare che l sia costruita come richiesto
62 let pgresult_to_string l =
65 | t -> List.hd (List.hd t)
70 * x: 'a; chiave di cui settare il valore
71 * v: 'b; valore da assegnare alla chiave
72 * l: ('a * 'b) list; lista di coppie in cui effettuare
75 * output: ('a * 'b) list; lista di coppie contenente (x, v)
78 * gestire i casi in cui in l compaiono piu' coppie (x, _)
79 * si sostituiscono tutte? se ne sostituisce una e si eliminano
83 let rec spila testa key value lista =
85 [] -> testa @ [(key, value)]
86 | (j, _)::tl when j = key -> testa @ [(key, value)] @ tl
87 | hd::tl -> spila (testa @ [hd]) key value tl
94 * p: string; nome della proprieta'
96 * output: string; id interno associato alla proprieta'
98 let helm_property_id p =
100 let q1 = "select att0 from namespace where att1='http://www.cs.unibo.it/helm/schemas/mattone.rdf#'" in
101 let ns = pgresult_to_string (c#exec q1) in
102 let q2 = ("select att0 from property where att2='" ^ p ^ "' and att1=" ^ ns) in
103 let retval = pgresult_to_string (c#exec q2) in
104 (*let _ = print_endline ("utility:q2: " ^ q2 ^ " : " ^ retval) in*)
110 * c: string; nome della classe
112 * output: string; id interno associato alla classe
114 let helm_class_id cl =
116 let ns = pgresult_to_string (c#exec ("select att0 from namespace where att1='http://www.cs.unibo.it/helm/schemas/mattone.rdf#'")) in
117 pgresult_to_string (c#exec ("select att0 from class where att2='" ^ cl ^ "' and att1=" ^ ns))