From: Claudio Sacerdoti Coen Date: Tue, 22 Oct 2002 08:30:06 +0000 (+0000) Subject: The two interpreters are now both in mathql_interpreter. The one actually X-Git-Tag: BEFORE_METADATA_FOR_SORT_AND_REL~20 X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=commitdiff_plain;h=37939472ad665d3c071bf53bf4f484744d6453e0;p=helm.git The two interpreters are now both in mathql_interpreter. The one actually used can be choosed setting a global reference. --- diff --git a/helm/ocaml/mathql_interpreter_galax/.cvsignore b/helm/ocaml/mathql_interpreter_galax/.cvsignore deleted file mode 100644 index 6b3eba302..000000000 --- a/helm/ocaml/mathql_interpreter_galax/.cvsignore +++ /dev/null @@ -1 +0,0 @@ -*.cm[iaox] *.cmxa diff --git a/helm/ocaml/mathql_interpreter_galax/.depend b/helm/ocaml/mathql_interpreter_galax/.depend deleted file mode 100644 index a4f0ecccc..000000000 --- a/helm/ocaml/mathql_interpreter_galax/.depend +++ /dev/null @@ -1,32 +0,0 @@ -diff.cmi: mathql_semantics.cmo -sortedby.cmi: mathql_semantics.cmo -select.cmi: mathql_semantics.cmo -intersect.cmi: mathql_semantics.cmo -union.cmi: mathql_semantics.cmo -pattern.cmi: mathql_semantics.cmo -use.cmi: mathql_semantics.cmo -letin.cmi: mathql_semantics.cmo -eval.cmo: eval.cmi -eval.cmx: eval.cmi -func.cmo: func.cmi -func.cmx: func.cmi -diff.cmo: mathql_semantics.cmo diff.cmi -diff.cmx: mathql_semantics.cmx diff.cmi -sortedby.cmo: func.cmi mathql_semantics.cmo sortedby.cmi -sortedby.cmx: func.cmx mathql_semantics.cmx sortedby.cmi -select.cmo: func.cmi mathql_semantics.cmo select.cmi -select.cmx: func.cmx mathql_semantics.cmx select.cmi -intersect.cmo: mathql_semantics.cmo intersect.cmi -intersect.cmx: mathql_semantics.cmx intersect.cmi -union.cmo: mathql_semantics.cmo union.cmi -union.cmx: mathql_semantics.cmx union.cmi -pattern.cmo: mathql_semantics.cmo pattern.cmi -pattern.cmx: mathql_semantics.cmx pattern.cmi -use.cmo: mathql_semantics.cmo use.cmi -use.cmx: mathql_semantics.cmx use.cmi -letin.cmo: letin.cmi -letin.cmx: letin.cmi -mqint.cmo: diff.cmi eval.cmi intersect.cmi letin.cmi mathql_semantics.cmo \ - pattern.cmi select.cmi sortedby.cmi union.cmi use.cmi mqint.cmi -mqint.cmx: diff.cmx eval.cmx intersect.cmx letin.cmx mathql_semantics.cmx \ - pattern.cmx select.cmx sortedby.cmx union.cmx use.cmx mqint.cmi diff --git a/helm/ocaml/mathql_interpreter_galax/2test_use.ml b/helm/ocaml/mathql_interpreter_galax/2test_use.ml deleted file mode 100755 index 5ce9f637c..000000000 --- a/helm/ocaml/mathql_interpreter_galax/2test_use.ml +++ /dev/null @@ -1,27 +0,0 @@ - - -open Mathql_semantics;; -open MathQL;; - -(* stampa tutti i documenti che fanno match con un pattern di input *) -List.iter - (function atturi -> print_endline ("output: " ^ atturi)) - (match Mqint.execute - (MQList - (MQUse - (MQPattern - ( - Some "cic", - [MQBD;MQBC "Algebra"; MQBD; MQBC "Basics"; MQBD; MQBC"NEG_anti_convert.con"], - (* [MQBSS; MQBC ".con"],*) - [] - ), - "pippo") - ) - ) with MQRefs l -> l - ); - - - -;; - diff --git a/helm/ocaml/mathql_interpreter_galax/2use.ml b/helm/ocaml/mathql_interpreter_galax/2use.ml deleted file mode 100644 index 9a69db2f9..000000000 --- a/helm/ocaml/mathql_interpreter_galax/2use.ml +++ /dev/null @@ -1,62 +0,0 @@ -open Mathql_semantics;; - - -(* prende una lista di uri (contenente alternativamente uri e pos) e costruisce una lista di attributed_uri *) -let rec attl uril svar = - - match uril with - | head::tail -> - let suri = List.hd uril in - - let uril_tl = List.tl uril in - - - {uri = suri; attributes = [(svar, (List.hd - uril_tl))]; extra = ""} :: attl (List.tl uril_tl) svar (* - NON SONO SICURO DI AVER COSTRUITO BENE LA STRUTTURA DATI!!!!*) - | [] -> [] - - - - - -(* prende un attributed_uri e una svar e restituisce la lista degli -attributed_uri (backward o forward in base al parametro "d") associando -la posizione alla var passata *) - -let muse svar d path = - let dir = - match d with - "F" -> "/home/projects/helm/metadata/create4/forward" - | _ -> "/home/projects/helm/metadata/create4/backward" - in - let dtag = - match d with - "F" -> "refObj" - | _ -> "backPointer" in - - let xq ="namespace h=\"http://www.cs.unibo.it/helm/schemas/mattone.rdf#\" - namespace rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" - for $i in document(" ^ "\"" ^ dir ^ path.uri ^ "\"" ^ - ")//rdf:RDF//h:Object//h:" ^ dtag ^ "//h:Occurrence - return ($i//h:occurrence, $i//h:position)" - - in - print_endline xq; - let uril = Toputils.eval_query_string xq in (* e' una lista di liste di stringhe*) - let hd_uril = List.hd uril in(*prendo l'elemento in testa che e' quello - che contiene la lista di uri*) - - attl hd_uril svar (* adesso dalla lista di uri(hd_uril) costruisco una lista di attributed_uri*) - - - - -(* prende una lista di uri (Mathql_semantics.result), una variabile (a cui -associare la posizione), e la direzione (forward o backward) e per ogni uri chiama la muse *) -let use_ex ulist svar d = - List.concat (List.map (muse svar d) ulist) -;; - - - diff --git a/helm/ocaml/mathql_interpreter_galax/Makefile b/helm/ocaml/mathql_interpreter_galax/Makefile deleted file mode 100644 index 8ea6fafae..000000000 --- a/helm/ocaml/mathql_interpreter_galax/Makefile +++ /dev/null @@ -1,17 +0,0 @@ -PACKAGE = mathql_interpreter_galax -REQUIRES = helm-urimanager unix helm-mathql natile-galax -PREDICATES = - -INTERFACE_FILES = eval.mli func.mli diff.mli \ - sortedby.mli select.mli intersect.mli union.mli \ - pattern.mli use.mli letin.mli mqint.mli - -IMPLEMENTATION_FILES = mathql_semantics.ml \ - $(INTERFACE_FILES:%.mli=%.ml) - -EXTRA_OBJECTS_TO_INSTALL = mathql_semantics.ml mathql_semantics.cmi - -EXTRA_OBJECTS_TO_CLEAN = - - -include ../Makefile.common diff --git a/helm/ocaml/mathql_interpreter_galax/diff.ml b/helm/ocaml/mathql_interpreter_galax/diff.ml deleted file mode 100644 index b32468e40..000000000 --- a/helm/ocaml/mathql_interpreter_galax/diff.ml +++ /dev/null @@ -1,84 +0,0 @@ -(* 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/. - *) - -(* - * implementazione del comando DIFF - *) - -exception NotCompatible;; - -(* intersect_attributes is successful iff there is no attribute with *) -(* two different values in the two lists. The returned list is the *) -(* union of the two lists. *) -let rec intersect_attributes (attr1, attr2) = - match attr1, attr2 with - [],_ -> attr2 - | _,[] -> attr1 - | (key1,value1)::tl1, (key2,_)::_ when key1 < key2 -> - (key1,value1)::(intersect_attributes (tl1,attr2)) - | (key1,_)::_, (key2,value2)::tl2 when key2 < key1 -> - (key2,value2)::(intersect_attributes (attr1,tl2)) - | entry1::tl1, entry2::tl2 when entry1 = entry2 -> - entry1::(intersect_attributes (tl1,tl2)) - | _, _ -> raise NotCompatible (* same keys, different values *) -;; - -(* - * implementazione del comando DIFF - *) -let rec diff_ex l1 l2 = - let module S = Mathql_semantics in - match (l1, l2) with - [],_ -> [] - | l,[] -> l - | {S.uri = uri1}::_, {S.uri = uri2}::tl2 when uri2 < uri1 -> - (diff_ex l1 tl2) - | {S.uri = uri1 ; S.attributes = attributes1}::tl1, - {S.uri = uri2}::_ when uri1 < uri2 -> - {S.uri = uri1 ; S.attributes = attributes1 ; S.extra = ""}::(diff_ex tl1 l2) - | {S.uri = uri1 ; S.attributes = attributes1}::tl1, - {S.uri = uri2 ; S.attributes = attributes2}::tl2 -> - try - let attributes' = intersect_attributes (attributes1, attributes2) in - diff_ex tl1 tl2 - with - NotCompatible -> - {S.uri = uri1 ; S.attributes = attributes1 ; S.extra = ""}::(diff_ex tl1 tl2) -;; - -let diff_ex l1 l2 = - let before = Unix.time () in - let res = diff_ex l1 l2 in - let after = Unix.time () in - let ll1 = string_of_int (List.length l1) in - let ll2 = string_of_int (List.length l2) in - let diff = string_of_float (after -. before) in - prerr_endline - ("DIFF(" ^ ll1 ^ ", " ^ ll2 ^ ") = " ^ string_of_int (List.length res) ^ - ": " ^ diff ^ "s") ; - flush stderr ; - res -;; - diff --git a/helm/ocaml/mathql_interpreter_galax/diff.mli b/helm/ocaml/mathql_interpreter_galax/diff.mli deleted file mode 100644 index 8c247687f..000000000 --- a/helm/ocaml/mathql_interpreter_galax/diff.mli +++ /dev/null @@ -1,27 +0,0 @@ -(* 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/. - *) - -val diff_ex : - Mathql_semantics.result -> Mathql_semantics.result -> Mathql_semantics.result diff --git a/helm/ocaml/mathql_interpreter_galax/eval.ml b/helm/ocaml/mathql_interpreter_galax/eval.ml deleted file mode 100644 index 43296cd07..000000000 --- a/helm/ocaml/mathql_interpreter_galax/eval.ml +++ /dev/null @@ -1,98 +0,0 @@ -(* 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 MathQL;; - -(* - * conversione di un pattern - *) -let rec patterneval p = - match p with - [] -> "" - | head::tail -> - let h = match head with - MQBC s -> Str.global_replace (Str.regexp "\.") "\\\\\." s - | MQBD -> "/" - | MQBQ -> "[^/#]?" - | MQBS -> "[^/#]*" - | MQBSS -> "[^#]*" - in - h ^ (patterneval tail) -;; - -let rec fieval fi = - match fi with - [] -> "" - | MQFC i :: tail -> "/" ^ (string_of_int i) ^ (fieval tail) - | MQFS :: tail -> "[^/]*" ^ (fieval tail) - | MQFSS :: tail -> ".*" ^ (fieval tail) -;; - -(* - * conversione di un fragment identifier - *) -let fieval fi = - if fi = [] then - "" - else - "#xpointer\\\\(1" ^ fieval fi ^ "\\\\)" -;; - -(* - * valuta l'estensione - * - * 20/05/2002: non piu' necessario: l'estensione fa eventualmente - * parte del pattern precedente - *) -let exteval ext = - match ext with - "" -> "" - | _ -> ("\." ^ ext) -;; - -(* - * valuta il preambolo - *) -let preeval p = - match p with - Some s -> s - | None -> "[^/]*" -;; - -(* - * trasforma un pattern MathQL in un pattern postgresql - * - * si utilizzano espressioni regolari POSIX anziche' l'operatore - * SQL standard LIKE perche' MathQL prevede esperssioni con "*" - * e con "**". - *) -let pattern_match (preamble, pattern, fragid) = - " ~ '^" ^ (preeval preamble) ^ ":/" ^ (patterneval pattern) ^ (fieval fragid) ^ "$'" -;; - diff --git a/helm/ocaml/mathql_interpreter_galax/eval.mli b/helm/ocaml/mathql_interpreter_galax/eval.mli deleted file mode 100644 index 00b64ed95..000000000 --- a/helm/ocaml/mathql_interpreter_galax/eval.mli +++ /dev/null @@ -1,27 +0,0 @@ -(* 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/. - *) - -val pattern_match : - MathQL.mqtref -> string diff --git a/helm/ocaml/mathql_interpreter_galax/func.ml b/helm/ocaml/mathql_interpreter_galax/func.ml deleted file mode 100644 index ff2476df1..000000000 --- a/helm/ocaml/mathql_interpreter_galax/func.ml +++ /dev/null @@ -1,113 +0,0 @@ -(* 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 MathQL;; - -(* - * implementazione della funzione NAME - * - * esempio: - * name "cic:/Algebra/CC_Props/CC_CauchySeq.ind#xpointer(1/1/1)" = CC_CauchySeq - *) -let func_name value = - try ( - let i = Str.search_forward (Str.regexp "[^/]*\.") value 0 in - let s = Str.matched_string value in - let retVal = Str.string_before s ((String.length s) - 1) in - retVal - ) with - Not_found -> "" -;; - -(* - * - *) -let func_theory value = - "" -;; - -(* - * implementazione delle funzioni dublin core - *) -let func_dc (value, name) = - let pathv = ("\"" ^ "/home/lorenzo/helm/metadata/dc" ^ value ^ "\"") in - let xq ="namespace rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" - namespace rdfs=\"http://www.w3.org/2000/01/rdf-schema#\" - namespace dc=\"http://purl.org/metadata/dublin_core#\" - namespace dcq=\"http://purl.org/metadata/dublin_core_qualifiers#\" - namespace h=\"http:/www.cs.unibo.it/helm/schemas/schema-h.rdf#\" - namespace hth=\"http://www.cs.unibo.it/helm/schemas/schema-hth.rdf#\" - - for $i in document(" ^ pathv ^ ")//rdf:RDF//h:DirectoryOfObjects - return $i//dc:" ^ name - in - let uril = Toputils.eval_query_string xq in (* e' una lista di liste di stringhe*) - let hd_uril = List.hd uril in (*prendo l'elemento in testa che e' quello che contiene la lista - di uri, IN REALTA' ORA CONTIENE ALTERNATIVAMENTE UN URI E LA SUA POSIZIONE!! *) - List.hd hd_uril - - - -(*print_string (( List.hd hd_uril) ^ "NEW!"); - print_endline " [FINE]";*) - - - - (*List.iter (List.iter print_string) uril;*) - - ;; - -(* - * - *) -let apply_func f value = - match f with - MQName -> func_name value - | MQTheory -> func_theory value - | MQTitle -> func_dc (value, "title") - | MQContributor -> func_dc (value, "contributor") - | MQCreator -> func_dc (value, "creator") - | MQPublisher -> func_dc (value, "publisher") - | MQSubject -> func_dc (value, "subject") - | MQDescription -> func_dc (value, "description") - | MQDate -> func_dc (value, "date") - | MQType -> func_dc (value, "type") - | MQFormat -> func_dc (value, "format") - | MQIdentifier -> func_dc (value, "identifier") - | MQLanguage -> func_dc (value, "language") - | MQRelation -> func_dc (value, "relation") - | MQSource -> func_dc (value, "source") - | MQCoverage -> func_dc (value, "coverage") - | MQRights -> func_dc (value, "rights") - | MQInstitution -> func_dc (value, "institution") - | MQContact -> func_dc (value, "contact") - | MQFirstVersion -> func_dc (value, "firstversion") - | MQModified -> func_dc (value, "modified") -;; - diff --git a/helm/ocaml/mathql_interpreter_galax/func.mli b/helm/ocaml/mathql_interpreter_galax/func.mli deleted file mode 100644 index fb68df82a..000000000 --- a/helm/ocaml/mathql_interpreter_galax/func.mli +++ /dev/null @@ -1,26 +0,0 @@ -(* 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/. - *) - -val apply_func: MathQL.mqfunc -> string -> string diff --git a/helm/ocaml/mathql_interpreter_galax/getallrdfuris.xml b/helm/ocaml/mathql_interpreter_galax/getallrdfuris.xml deleted file mode 100644 index ce378cc34..000000000 --- a/helm/ocaml/mathql_interpreter_galax/getallrdfuris.xml +++ /dev/null @@ -1,14882 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/helm/ocaml/mathql_interpreter_galax/intersect.ml b/helm/ocaml/mathql_interpreter_galax/intersect.ml deleted file mode 100644 index 4152a280d..000000000 --- a/helm/ocaml/mathql_interpreter_galax/intersect.ml +++ /dev/null @@ -1,127 +0,0 @@ -(* 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/. - *) - -exception NotCompatible;; - -(* intersect_attributes is successful iff there is no attribute with *) -(* two different values in the two lists. The returned list is the *) -(* union of the two lists. *) -let rec intersect_attributes (attr1, attr2) = - match attr1, attr2 with - [],_ -> attr2 - | _,[] -> attr1 - | (key1,value1)::tl1, (key2,_)::_ when key1 < key2 -> - (key1,value1)::(intersect_attributes (tl1,attr2)) - | (key1,_)::_, (key2,value2)::tl2 when key2 < key1 -> - (key2,value2)::(intersect_attributes (attr1,tl2)) - | entry1::tl1, entry2::tl2 when entry1 = entry2 -> - entry1::(intersect_attributes (tl1,tl2)) - | _, _ -> raise NotCompatible (* same keys, different values *) -;; - -(* preserves order and gets rid of duplicates *) -let rec intersect_ex l1 l2 = - let module S = Mathql_semantics in - match (l1, l2) with - [],_ - | _,[] -> [] - | {S.uri = uri1}::tl1, - {S.uri = uri2}::_ when uri1 < uri2 -> intersect_ex tl1 l2 - | {S.uri = uri1}::_, - {S.uri = uri2}::tl2 when uri2 < uri1 -> intersect_ex l1 tl2 - | {S.uri = uri1 ; S.attributes = attributes1}::tl1, - {S.uri = uri2 ; S.attributes = attributes2}::tl2 -> - try - let attributes' = intersect_attributes (attributes1,attributes2) in - {S.uri = uri1 ; S.attributes = attributes' ; S.extra = ""}::(intersect_ex tl1 tl2) - with - NotCompatible -> - intersect_ex tl1 tl2 -;; - -let intersect_ex l1 l2 = - (* PRE-CLAUDIO - (*let _ = print_string ("INTERSECT ") - and t = Unix.time () in*) - let result = - match (l1, l2) with - ((head1::tail1), (head2::tail2)) -> - (match (head1, head2) with - ([], _) -> assert false (* gli header non devono mai essere vuoti *) - | (_, []) -> assert false (* devono contenere almeno [retVal] *) - | (_, _) -> - (match (tail1, tail2) with - ([], _) -> [["retVal"]] (* se una delle due code e' vuota... *) - | (_, []) -> [["retVal"]] (* ... l'intersezione e' vuota *) - | (_, _) -> - [head2 @ - (List.find_all - (function t -> not (List.mem t head2)) - head1 - ) - ] (* header del risultato finale *) - @ - intersect_tails (List.tl head1) tail1 (List.tl head2) tail2 - (* - List.fold_left - (fun par1 elem1 -> par1 @ - List.map - (fun elem2 -> - [(List.hd elem1)] @ - (xres_join_context (List.tl head1) (List.tl elem1) - (List.tl head2) (List.tl elem2) - ) - ) - (List.find_all (* *) - (fun elem2 -> (* trova tutti gli elementi della lista tail2 *) - ((List.hd elem1) = (List.hd elem2)) && (* che stanno in tail1 *) - not ((xres_join_context (List.tl head1) (List.tl elem1) - (List.tl head2) (List.tl elem2)) = []) - (* e per i quali la xres_join_context non sia vuota *) - ) - tail2 (* List.find_all *) - ) - ) - [] - tail1 (* per ogni elemento di tail1 applica la List.fold_left *) - *) - ) (* match *) - ) - | _ -> [] - in - (*let _ = print_endline (string_of_float (Unix.time () -. t)); flush stdout in*) - result*) - let before = Unix.time () in - let res = intersect_ex l1 l2 in - let after = Unix.time () in - let ll1 = string_of_int (List.length l1) in - let ll2 = string_of_int (List.length l2) in - let diff = string_of_float (after -. before) in - prerr_endline - ("INTERSECT(" ^ ll1 ^ "," ^ ll2 ^ ") = " ^ string_of_int (List.length res) ^ - ": " ^ diff ^ "s") ; - flush stderr ; - res -;; diff --git a/helm/ocaml/mathql_interpreter_galax/intersect.mli b/helm/ocaml/mathql_interpreter_galax/intersect.mli deleted file mode 100644 index 3b721b4f7..000000000 --- a/helm/ocaml/mathql_interpreter_galax/intersect.mli +++ /dev/null @@ -1,27 +0,0 @@ -(* 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/. - *) - -val intersect_ex : - Mathql_semantics.result -> Mathql_semantics.result -> Mathql_semantics.result diff --git a/helm/ocaml/mathql_interpreter_galax/letin.ml b/helm/ocaml/mathql_interpreter_galax/letin.ml deleted file mode 100644 index 160a7a164..000000000 --- a/helm/ocaml/mathql_interpreter_galax/letin.ml +++ /dev/null @@ -1,65 +0,0 @@ -(* 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://www.cs.unibo.it/helm/. - *) - -(* - * implementazione dei comandi LETIN e REF - *) - -open MathQL;; - -let letin_pool = ref None;; - -let see_pool () = - match !letin_pool with - None -> print_endline "None" - | Some c -> List.iter (fun elem -> print_endline (fst elem)) c -;; - -let letin_ex rvar alist = - let _ = - match !letin_pool with - Some pool -> letin_pool := Some ((rvar,alist)::(List.remove_assoc rvar pool)) - | None -> letin_pool := Some ([(rvar,alist)]) - in -(* let _ = see_pool () in*) - [] -;; - -let letref_ex rvar = - match !letin_pool with - None -> [] - | Some pool -> - ( - try - List.assoc rvar pool - with - Not_found -> [] - ) -;; - -let letdispose () = - let _ = letin_pool = ref None in () -;; - diff --git a/helm/ocaml/mathql_interpreter_galax/letin.mli b/helm/ocaml/mathql_interpreter_galax/letin.mli deleted file mode 100644 index d221ddd2e..000000000 --- a/helm/ocaml/mathql_interpreter_galax/letin.mli +++ /dev/null @@ -1,28 +0,0 @@ -(* 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://www.cs.unibo.it/helm/. - *) - -val letin_ex : MathQL.mqlvar -> Mathql_semantics.result -> Mathql_semantics.result -val letref_ex : MathQL.mqlvar -> Mathql_semantics.result -val letdispose : unit -> unit diff --git a/helm/ocaml/mathql_interpreter_galax/mathql_semantics.ml b/helm/ocaml/mathql_interpreter_galax/mathql_semantics.ml deleted file mode 100644 index 2af88a63c..000000000 --- a/helm/ocaml/mathql_interpreter_galax/mathql_semantics.ml +++ /dev/null @@ -1,33 +0,0 @@ -(* 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://www.cs.unibo.it/helm/. - *) - -(* attributes are sorted w.r.t. their name in increasing order *) -type attributed_uri = - { uri: string ; attributes : (MathQL.mqsvar * string) list ; extra : string} - -type attributed_uri_env = - (MathQL.mqrvar * attributed_uri) list - -type result = attributed_uri list diff --git a/helm/ocaml/mathql_interpreter_galax/mqint.ml b/helm/ocaml/mathql_interpreter_galax/mqint.ml deleted file mode 100644 index 10e1b81e5..000000000 --- a/helm/ocaml/mathql_interpreter_galax/mqint.ml +++ /dev/null @@ -1,252 +0,0 @@ -(* 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/. - *) - -(* - * implementazione del'interprete MathQL - *) -open MathQL;; -open Eval;; -(*open Utility;;*) -open Union;; -open Intersect;; -open Diff;; -open Sortedby;; -open Select;; -open Letin;; -open Mathql_semantics;; -open Pattern;; -open Use;; - - - -let prop_pool = ref None;; - -let fi_to_string fi = - match fi with - (None, _) -> - "" - | (Some i, y) -> - "#xpointer(1/" ^ - string_of_int i ^ - ( - match y with - None -> - "" - | Some j -> - "/" ^ (string_of_int j) - ) ^ - ")" -;; - -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) -;; - - -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] *) -(* must be evaluated *) -(* [q] is the query to evaluate *) -(* It returns a [Mathql_semantics.result] *) -let rec execute_ex env = - function - MQSelect (apvar, alist, abool) -> select_ex env apvar (execute_ex env alist) abool - | MQUsedBy (alist, asvar) -> use_ex (execute_ex env alist) asvar (get_prop_id "refObj") (* "F" - (*"refObj"*) *) - | MQUse (alist, asvar) -> 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) -> union_ex (execute_ex env l1) (execute_ex env l2) - | MQDiff (l1, l2) -> diff_ex (execute_ex env l1) (execute_ex env l2) - | MQSortedBy (l, o, f) -> sortedby_ex (execute_ex env l) o f - | MQIntersect (l1, l2) -> intersect_ex (execute_ex env l1) (execute_ex env l2) - | MQListRVar rvar ->[List.assoc rvar env] - | MQLetIn (lvar, l1, l2) -> - let t = Unix.time () in - let res = - (*CSC: The interesting code *) - let _ = letin_ex lvar (execute_ex env l1) in - 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 ; - res - | MQListLVar lvar -> letref_ex lvar - | MQReference l -> - let rec build_result = function - | [] -> [] - | s :: tail -> - - let len = String.length s in - let s = (String.sub s 4 (len-4))(*^".xml"*) in - if String.contains s '#' then - let pos = String.index s '#' in - let s1 = Str.string_before s pos in - let xp = Str.string_after s pos in - let xp = Str.global_replace (Str.regexp "#xpointer(1") "" xp in - let xp = Str.global_replace (Str.regexp "\/") "," xp in - let xp = Str.global_replace (Str.regexp ")") "" xp in - let s = (s1 ^ xp) in - {uri = s ; attributes = [] ; extra = ""} :: build_result tail - else - {uri = s ; attributes = [] ; extra = ""} :: build_result tail - in build_result (List.sort compare l) -;; - -(* Let's initialize the execute in Select, creating a cyclical recursion *) -Select.execute := execute_ex;; - - - -(*exception ExecuteFunctionNotInitialized;; -let execute = - ref - (function _ -> raise ExecuteFunctionNotInitialized) -;; - - - -execute := execute_ex;;*) - - - -(* - * converte il risultato interno di una query (uri + contesto) - * in un risultato di sole uri - * - * parametri: - * l: string list list; - * - * output: mqresult; - * - * note: - * il tipo del risultato mantenuto internamente e' diverso dal tipo di risultato - * restituito in output poiche', mentre chi effettua le query vuole come risultato - * solo le eventuali uri che soddisfano le query stesse, internamente ad una uri - * sono associati anche i valori delle variabili che ancora non sono state valutate - * perche', ad esempio, si trovano in altri rami dell'albero. - * - * Esempio: - * SELECT x IN USE PATTERN "cic:/**.con" POSITION $a WHERE $a IS MainConclusion - * L'albero corrispondente a questa query e': - * - * SELECT - * / | \ - * x USE IS - * / \ /\ - * PATTERN $a $a MainConclusion - * - * Nel momento in cui si esegue il ramo USE non sono noti i vincoli sullla variabile $a - * percui e' necessario considerare, oltre alle uri, i valori della variabile per i quali - * la uri puo' far parte del risultato. - *) - - (* L.N.: prende una lista di attributed_uri e la trasforma in lista di - uri(stringhe) costruendola con il costruttore MQRefs *) -let xres_to_res l = - MQRefs (List.map (function {Mathql_semantics.uri = uri} -> uri) l) - - - (* - let tmp = List.map (function {Mathql_semantics.uri = uri} -> uri) l in - MQRefs - (List.map - (function l -> - (*let _ = print_endline ("DEBUG: (mqint.ml: xres_to_res)" ^ l) in*) - match Str.split (Str.regexp ":\|#\|/\|(\|)") l with - hd::""::tl -> ( - match List.rev tl with - n::"1"::"xpointer"::tail -> - ( - Some hd, - List.fold_left - (fun par t -> - match par with - [] -> [MQBC t] - | _ -> (MQBC t) :: MQBD :: par - ) - [] - tail, - [MQFC (int_of_string n)] - ) - | n::m::"1"::"xpointer"::tail -> - ( - Some hd, - List.fold_left - (fun par t -> - match par with - [] -> [MQBC t] - | _ -> (MQBC t) :: MQBD :: par - ) - [] - tail, - [MQFC (int_of_string m); MQFC (int_of_string n)] - ) - | tail -> - ( - Some hd, - List.fold_left - (fun par t -> - match par with - [] -> [MQBC t] - | _ -> (MQBC t) :: MQBD :: par - ) - [] - tail, - [] - ) - ) - | _ -> assert false - ) - tmp - ) -*) -;; - - -(* - * - *) -let execute q = - - match q with - MQList qq -> try xres_to_res (execute_ex [] qq) with e -> Error.print_exn e; raise e -;; - -let init () = ();; -let close () = ();; diff --git a/helm/ocaml/mathql_interpreter_galax/mqint.mli b/helm/ocaml/mathql_interpreter_galax/mqint.mli deleted file mode 100644 index 60f00f50c..000000000 --- a/helm/ocaml/mathql_interpreter_galax/mqint.mli +++ /dev/null @@ -1,45 +0,0 @@ -(* 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/. - *) - -(* - * interfaccia dell'interprete MathQL - *) - -open MathQL;; - -(* - * inizializzazione del database - *) -val init: unit -> unit - -(* - * esecuzione di query - *) -val execute: mquery -> mqresult;; - -(* - * chiusura del database - *) -val close: unit -> unit diff --git a/helm/ocaml/mathql_interpreter_galax/pattern.ml b/helm/ocaml/mathql_interpreter_galax/pattern.ml deleted file mode 100644 index 1d4731ec4..000000000 --- a/helm/ocaml/mathql_interpreter_galax/pattern.ml +++ /dev/null @@ -1,236 +0,0 @@ - - (* ATTENZIONE: ci sono problemi con i .ind e i .var!!!! *) - - - -open MathQL;; -open Mathql_semantics;; - -(* estrae il fid dalla uri(str) e toglie le virgole, es: ",1,1,1,1" -> "1111" *) -let extract_fid str = - let pos = String.index str ',' in - Str.string_after str (pos+1) -;; - - -(* - * valuta il preambolo - *) -let preeval p = - match p with - Some s -> s - | None -> "[^/]*" -;; - - - - -(* FUNZIONE DI MATCHING: prende il descrittore del file delle uri e il path da -matchare formato stringa e restituisce la lista dei path che fanno match in -formato stringa !! TAIL-RECURSIVE !! *) - -let pmatch inp pre path fi = - let rec aux inp pre path fi acc = - - let s= try - Some (Str.string_after (input_line(inp)) 57) - with End_of_file -> None - in - match s with - | Some s -> - if (String.get s 0) != ' ' - then - begin - let cpos = String.index s ':' in - - let apre = Str.string_before s cpos in (* prendo il pre in s *) - - let s2 = Str.string_after s (cpos+1) in - let p = (String.length s2)-2 (* NON capisco perche' con 3 non vada bene !!!!*) - in - - let sok = Str.string_before s2 p in - - - if fi = "" (* CASO fi VUOTO*) - then - if pre = "[^/]*" (* CASO pre QUALSIASI*) - then - if (Str.string_match (Str.regexp path) sok 0) - then - begin - (*let sokg = Str.replace_first (Str.regexp ",") "#" sok - in - let sokgs = Str.global_replace (Str.regexp ",") "/" sokg - *) - let pos= String.index sok '"' - in - let sokv= Str.string_before sok pos - in - - (* let sokve = sokv ^ ".xml" - in*) - aux inp pre path fi (sokv::acc) - end - else - (aux inp pre path fi acc) - - else (* CASO pre SPECIFICO *) - - begin - (*print_endline ("sok:" ^ sok); - print_endline ("path:" ^ path);*) - - if (Str.string_match (Str.regexp path) sok 0) && (apre = pre) - then - begin - (*let sokg = Str.replace_first (Str.regexp ",") "#" sok - in - let sokgs = Str.global_replace (Str.regexp ",") "/" sokg - in*) - let pos= String.index sok '"' - in - let sokv= Str.string_before sok pos - in - - (*let sokve = sokv ^ ".xml" - in*) - aux inp pre path fi (sokv::acc) - end - else - (aux inp pre path fi acc) - - end - - else (* CASO fi ESISTENTE *) - - if pre = "[^/]*" (* CASO pre QUALSIASI*) - then - - if String.contains sok ',' - then - let pos = String.index sok ',' in - let sokwfi = Str.string_before sok pos in - if (Str.string_match (Str.regexp path) sokwfi 0) && - (Str.string_match (Str.regexp fi) (extract_fid sok) 0) - then - begin - (*let sokg = Str.replace_first (Str.regexp ",") "#" sok - in - let sokgs = Str.global_replace (Str.regexp ",") "/" sokg - in*) - let pos= String.index sok '"' - in - let sokv= Str.string_before sok pos - in - (* let sokve = sokv ^ ".xml" - in*) - aux inp pre path fi (sokv::acc) - end - else - (aux inp pre path fi acc) - else - (aux inp pre path fi acc) - - else (* CASO pre SPECIFICO *) - if String.contains sok ',' - then - let pos = String.index sok ',' in - let sokwfi = Str.string_before sok pos in - if (Str.string_match (Str.regexp path) sokwfi 0) && - (Str.string_match (Str.regexp fi) (extract_fid sok) 0) && (apre = pre) - then - begin - (*let sokg = Str.replace_first (Str.regexp ",") "#" sok - in - let sokgs = Str.global_replace (Str.regexp ",") "/" sokg - in*) - let pos= String.index sok '"' - in - let sokv= Str.string_before sok pos - in - (*let sokve = sokv ^ ".xml" - in*) - aux inp pre path fi (sokv::acc) - end - else - (aux inp pre path fi acc) - else - (aux inp pre path fi acc) - end - else - (aux inp pre path fi acc) - | None -> List.rev acc - in - aux inp pre path fi [] -;; - - - - -(* Data una lista di token restituisce la stringa formata da tutti i token ----> DA TESTARE!!!! *) -let rec token_to_str p = - match p with - [] -> "" - | head::tail -> - let h = match head with - MQBC s -> Str.global_replace (Str.regexp "\.") "." s - | MQBD -> "/" - | MQBQ -> "[^/#]?" - | MQBS -> "[^/#]*" - | MQBSS -> "[^#]*" - in - h ^ (token_to_str tail) -;; - - -let rec fieval fi = - match fi with - [] -> "" - | MQFC i :: tail -> "/" ^ (string_of_int i) ^ (fieval tail) - | MQFS :: tail -> "[^/]*" ^ (fieval tail) - | MQFSS :: tail -> ".*" ^ (fieval tail) -;; - -(* - * conversione di un fragment identifier - *) -let fieval fi = - if fi = [] then - "" - else - "#xpointer\\\\(1" ^ fieval fi ^ "\\\\)" (* NON MI E' CHIARO IL PERCHE'!!!! *) -;; - - -let rec attul uril = - match uril with - head::tail -> let uril_hd = List.hd uril in - { uri = uril_hd; attributes = []; extra = ""}::attul (List.tl uril); - | [] -> []; -;; - - -(* prende preambolo, body (lista di token con "/"), fi (lista di token senza -"/") e restituisce la lista -di uri (LISTA DI attributed_uri), contenuti nel file getallrdfuris.xml, che fanno match con l'espressione regolare ricavata da body e con quella ricavata da fi.. tutto -chiamando la "pmatch()" - -ATTENZIONE: il tag in getallrdfuris.xml deve essere piu' lungo, - altrimenti "string_match()" da' errore! - -*) -let pattern_ex (apreamble, apattern, afragid) = - let path = token_to_str apattern in - let fi = fieval afragid in - let pre = preeval apreamble in - let inp = open_in "./getallrdfuris.xml" in - seek_in inp 146; - let uril = pmatch inp pre path fi in - attul uril; -;; - - - - - diff --git a/helm/ocaml/mathql_interpreter_galax/pattern.mli b/helm/ocaml/mathql_interpreter_galax/pattern.mli deleted file mode 100644 index 1fd21bdba..000000000 --- a/helm/ocaml/mathql_interpreter_galax/pattern.mli +++ /dev/null @@ -1,28 +0,0 @@ -(* 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/. - *) - -val pattern_ex : - MathQL.mqtref -> - Mathql_semantics.result diff --git a/helm/ocaml/mathql_interpreter_galax/pervasive.xq b/helm/ocaml/mathql_interpreter_galax/pervasive.xq deleted file mode 100644 index 9105b9e29..000000000 --- a/helm/ocaml/mathql_interpreter_galax/pervasive.xq +++ /dev/null @@ -1,192 +0,0 @@ -####################### -# Standard namespaces # -####################### - -namespace xsd = "http://www.w3c.org/xsd" -namespace xs = "http://www.w3c.org/xs" -namespace xml = "http://www.w3.org/xml" - -############################# -# XML Schema wildcard types # -############################# - -define type xs:AnyNumeric { xsd:decimal | xsd:integer | xsd:int | xsd:double | xsd:float } - -define type xs:AnyScalar { xsd:boolean | - xsd:string | - type xs:AnyNumeric | - xsd:UnknownSimpleType } - -define type xs:AnySimpleType { type xs:AnyScalar* } -define type xs:AnyAttribute { attribute * { type xs:AnySimpleType } } -define type xs:AnyElement { element * { type xs:AnyContentModel } } -define type xs:AnyContentModel { (type xs:AnyAttribute*, (type xs:AnySimpleType | (type xs:AnyElement | -text)*)) } -define type xs:AnyDocument { document { type xs:AnyElement } } - -######################### -# XQuery Wildcard types # -######################### -define type xs:AnyNode { type xs:AnyElement | type xs:AnyAttribute | text } - -define type xs:AnyItem { type xs:AnyNode | type xs:AnyScalar } -define type xs:AnyType { type xs:AnyItem* } - - -###################### -# Standard functions # -###################### - -# data-model accessors. -# F&O doc. Section 2 - -define function signature local-name(type xs:AnyNode) returns (xsd:string) -define function signature name(type xs:AnyNode) returns (xsd:string?) -define function signature children(type xs:AnyNode) returns (type xs:AnyNode*) -define function signature attributes(type xs:AnyElement) returns (type xs:AnyAttribute*) -define function signature parent(type xs:AnyNode) returns (type xs:AnyElement?) -define function signature data(type xs:AnyNode) returns (type xs:AnySimpleType) - -# F&O doc. Section 3.2 -define function signature decimal(xsd:string) returns (xsd:int) -define function signature integer(xsd:string) returns (xsd:int) -define function signature long(xsd:string) returns (xsd:int) -define function signature int(xsd:string) returns (xsd:int) -define function signature short(xsd:string) returns (xsd:int) -define function signature byte(xsd:string) returns (xsd:int) -define function signature float(xsd:string) returns (xsd:double) -define function signature double(xsd:string) returns (xsd:double) - -# polymorphic arithmetic operations # -# F&O doc, Section 3.3 - -define function signature numeric-add(numeric, numeric) returns (numeric) -define function signature numeric-subtract(numeric, numeric) returns (numeric) -define function signature numeric-multiply(numeric, numeric) returns (numeric) -define function signature numeric-divide(numeric, numeric) returns (numeric) -define function signature numeric-mod(numeric, numeric) returns (numeric) - -define function signature numeric-unary-plus(numeric) returns (numeric) -define function signature numeric-unary-minus(numeric) returns (numeric) - -# Galax's monomorphic arithmetic operations # - -# Caml's int -define function signature int-add(xsd:int, xsd:int) returns (xsd:int) -define function signature int-subtract(xsd:int, xsd:int) returns (xsd:int) -define function signature int-multiply(xsd:int, xsd:int) returns (xsd:int) -define function signature int-divide(xsd:int, xsd:int) returns (xsd:int) -define function signature int-mod(xsd:int, xsd:int) returns (xsd:int) - -define function signature int-unary-plus(xsd:int) returns (xsd:int) -define function signature int-unary-minus(xsd:int) returns (xsd:int) - -# xsd:decimal -define function signature decimal-add(xsd:decimal, xsd:decimal) returns (xsd:decimal) -define function signature decimal-subtract(xsd:decimal, xsd:decimal) returns (xsd:decimal) -define function signature decimal-multiply(xsd:decimal, xsd:decimal) returns (xsd:decimal) -define function signature decimal-divide(xsd:decimal, xsd:decimal) returns (xsd:decimal) -define function signature decimal-mod(xsd:decimal, xsd:decimal) returns (xsd:decimal) - -define function signature decimal-unary-plus(xsd:decimal) returns (xsd:decimal) -define function signature decimal-unary-minus(xsd:decimal) returns (xsd:decimal) - -# xsd:float -define function signature float-add(xsd:float, xsd:float) returns (xsd:float) -define function signature float-subtract(xsd:float, xsd:float) returns (xsd:float) -define function signature float-multiply(xsd:float, xsd:float) returns (xsd:float) -define function signature float-divide(xsd:float, xsd:float) returns (xsd:float) -define function signature float-mod(xsd:float, xsd:float) returns (xsd:float) - -define function signature float-unary-plus(xsd:float) returns (xsd:float) -define function signature float-unary-minus(xsd:float) returns (xsd:float) - -# xsd:double -define function signature double-add(xsd:double, xsd:double) returns (xsd:double) -define function signature double-subtract(xsd:double, xsd:double) returns (xsd:double) -define function signature double-multiply(xsd:double, xsd:double) returns (xsd:double) -define function signature double-divide(xsd:double, xsd:double) returns (xsd:double) -define function signature double-mod(xsd:double, xsd:double) returns (xsd:double) - -define function signature double-unary-plus(xsd:double) returns (xsd:double) -define function signature double-unary-minus(xsd:double) returns (xsd:double) - -# comparators # -# F&O doc, Section 3.4 -define function signature nodeeq(type xs:AnyNode, type xs:AnyNode) returns (xsd:boolean) -define function signature equal(type xs:AnyScalar, type xs:AnyScalar) returns (xsd:boolean) -define function signature nequal(type xs:AnyScalar, type xs:AnyScalar) returns (xsd:boolean) -define function signature ge(type xs:AnyScalar, type xs:AnyScalar) returns (xsd:boolean) -define function signature le(type xs:AnyScalar, type xs:AnyScalar) returns (xsd:boolean) -define function signature gt(type xs:AnyScalar, type xs:AnyScalar) returns (xsd:boolean) -define function signature lt(type xs:AnyScalar, type xs:AnyScalar) returns (xsd:boolean) - -# F&O doc. Section 3.5 -define function signature floor(xsd:double) returns (xsd:int) -define function signature ceiling(xsd:double) returns (xsd:int) -define function signature round(xsd:double) returns (xsd:int) - -# functions on strings -# F&O doc. Section 4.4 -define function signature concat(xsd:string, xsd:string) returns (xsd:string) -define function signature starts-with(xsd:string, xsd:string) returns (xsd:boolean) -define function signature ends-with(xsd:string, xsd:string) returns (xsd:boolean) -define function signature contains(xsd:string, xsd:string) returns (xsd:boolean) -define function signature substring(xsd:string, xsd:int, xsd:int) returns (xsd:string) -define function signature string-length(xsd:string) returns (xsd:int) -define function signature substring-before(xsd:string, xsd:string) returns (xsd:string) -define function signature substring-after(xsd:string, xsd:string) returns (xsd:string) -define function signature normalize-space(xsd:string) returns (xsd:string) -define function signature normalize-unicode(xsd:string) returns (xsd:string) -define function signature upper-case(xsd:string) returns (xsd:string) -define function signature lower-case(xsd:string) returns (xsd:string) -define function signature translate(xsd:string, xsd:string, xsd:string) returns (xsd:string) -define function signature string-pad(xsd:string, xsd:int, xsd:string) returns (xsd:string) -define function signature match(xsd:string, xsd:string) returns (xsd:int*) -define function signature replace(xsd:string, xsd:string, xsd:string) returns (xsd:string) - -define function signature codepoint-contains(xsd:string, xsd:string) returns (xsd:boolean) -define function signature codepoint-substring-before(xsd:string, xsd:string) returns (xsd:string) -define function signature codepoint-substring-after(xsd:string, xsd:string) returns (xsd:string) - -# boolean operations # -# F&O doc, Section 6.1 -define function signature true() returns (xsd:boolean) -define function signature false() returns (xsd:boolean) - -# F&O doc, Section 6.2 -define function signature or(xsd:boolean, xsd:boolean) returns (xsd:boolean) -define function signature and(xsd:boolean, xsd:boolean) returns (xsd:boolean) -define function signature not(xsd:boolean) returns (xsd:boolean) - -# functions on sequences # -# F&O doc, Section 13.2 -define function signature index-of(type xs:AnyNode*, type xs:AnyNode) returns (xsd:int) -define function signature length(type xs:AnyType) returns (xsd:int) -define function signature empty(type xs:AnyType) returns (xsd:boolean) -define function signature distinct-values(type xs:AnyType) returns (type xs:AnyType) - -# aggregate functions # -# F&O doc, Section 13.4 -define function signature avg-int(xsd:int*) returns (xsd:int) -define function signature max-int(xsd:int*) returns (xsd:int?) -define function signature min-int(xsd:int*) returns (xsd:int?) -define function signature sum-int(xsd:int*) returns (xsd:int) - -define function signature avg-float(xsd:double*) returns (xsd:double) -define function signature max-float(xsd:double*) returns (xsd:double?) -define function signature min-float(xsd:double*) returns (xsd:double?) -define function signature sum-float(xsd:double*) returns (xsd:double) - -define function signature count(type xs:AnyType) returns (xsd:int) - -# input-output operations # - -# The signature below is a hack : The output of document is declared -# as the empty choice to avoid the need for explicit cast by the user -# when loading the document - JS # - -# F&O doc, Section 13.5 -define function signature document(xsd:string) returns (type xs:AnyDocument) -define function signature document-validate(xsd:string, xsd:string) returns (type xs:AnyDocument) - diff --git a/helm/ocaml/mathql_interpreter_galax/pervasive.xqp b/helm/ocaml/mathql_interpreter_galax/pervasive.xqp deleted file mode 100644 index c7a4b1ae8..000000000 --- a/helm/ocaml/mathql_interpreter_galax/pervasive.xqp +++ /dev/null @@ -1,192 +0,0 @@ -####################### -# Standard namespaces # -####################### - -namespace xsd = "%%XSDURI%%" -namespace xs = "%%XSURI%%" -namespace xml = "%%XMLURI%%" - -############################# -# XML Schema wildcard types # -############################# - -define type xs:AnyNumeric { xsd:decimal | xsd:integer | xsd:int | xsd:double | xsd:float } - -define type xs:AnyScalar { xsd:boolean | - xsd:string | - type xs:AnyNumeric | - xsd:UnknownSimpleType } - -define type xs:AnySimpleType { type xs:AnyScalar* } -define type xs:AnyAttribute { attribute * { type xs:AnySimpleType } } -define type xs:AnyElement { element * { type xs:AnyContentModel } } -define type xs:AnyContentModel { (type xs:AnyAttribute*, (type xs:AnySimpleType | (type xs:AnyElement | -text)*)) } -define type xs:AnyDocument { document { type xs:AnyElement } } - -######################### -# XQuery Wildcard types # -######################### -define type xs:AnyNode { type xs:AnyElement | type xs:AnyAttribute | text } - -define type xs:AnyItem { type xs:AnyNode | type xs:AnyScalar } -define type xs:AnyType { type xs:AnyItem* } - - -###################### -# Standard functions # -###################### - -# data-model accessors. -# F&O doc. Section 2 - -define function signature local-name(type xs:AnyNode) returns (xsd:string) -define function signature name(type xs:AnyNode) returns (xsd:string?) -define function signature children(type xs:AnyNode) returns (type xs:AnyNode*) -define function signature attributes(type xs:AnyElement) returns (type xs:AnyAttribute*) -define function signature parent(type xs:AnyNode) returns (type xs:AnyElement?) -define function signature data(type xs:AnyNode) returns (type xs:AnySimpleType) - -# F&O doc. Section 3.2 -define function signature decimal(xsd:string) returns (xsd:int) -define function signature integer(xsd:string) returns (xsd:int) -define function signature long(xsd:string) returns (xsd:int) -define function signature int(xsd:string) returns (xsd:int) -define function signature short(xsd:string) returns (xsd:int) -define function signature byte(xsd:string) returns (xsd:int) -define function signature float(xsd:string) returns (xsd:double) -define function signature double(xsd:string) returns (xsd:double) - -# polymorphic arithmetic operations # -# F&O doc, Section 3.3 - -define function signature numeric-add(numeric, numeric) returns (numeric) -define function signature numeric-subtract(numeric, numeric) returns (numeric) -define function signature numeric-multiply(numeric, numeric) returns (numeric) -define function signature numeric-divide(numeric, numeric) returns (numeric) -define function signature numeric-mod(numeric, numeric) returns (numeric) - -define function signature numeric-unary-plus(numeric) returns (numeric) -define function signature numeric-unary-minus(numeric) returns (numeric) - -# Galax's monomorphic arithmetic operations # - -# Caml's int -define function signature int-add(xsd:int, xsd:int) returns (xsd:int) -define function signature int-subtract(xsd:int, xsd:int) returns (xsd:int) -define function signature int-multiply(xsd:int, xsd:int) returns (xsd:int) -define function signature int-divide(xsd:int, xsd:int) returns (xsd:int) -define function signature int-mod(xsd:int, xsd:int) returns (xsd:int) - -define function signature int-unary-plus(xsd:int) returns (xsd:int) -define function signature int-unary-minus(xsd:int) returns (xsd:int) - -# xsd:decimal -define function signature decimal-add(xsd:decimal, xsd:decimal) returns (xsd:decimal) -define function signature decimal-subtract(xsd:decimal, xsd:decimal) returns (xsd:decimal) -define function signature decimal-multiply(xsd:decimal, xsd:decimal) returns (xsd:decimal) -define function signature decimal-divide(xsd:decimal, xsd:decimal) returns (xsd:decimal) -define function signature decimal-mod(xsd:decimal, xsd:decimal) returns (xsd:decimal) - -define function signature decimal-unary-plus(xsd:decimal) returns (xsd:decimal) -define function signature decimal-unary-minus(xsd:decimal) returns (xsd:decimal) - -# xsd:float -define function signature float-add(xsd:float, xsd:float) returns (xsd:float) -define function signature float-subtract(xsd:float, xsd:float) returns (xsd:float) -define function signature float-multiply(xsd:float, xsd:float) returns (xsd:float) -define function signature float-divide(xsd:float, xsd:float) returns (xsd:float) -define function signature float-mod(xsd:float, xsd:float) returns (xsd:float) - -define function signature float-unary-plus(xsd:float) returns (xsd:float) -define function signature float-unary-minus(xsd:float) returns (xsd:float) - -# xsd:double -define function signature double-add(xsd:double, xsd:double) returns (xsd:double) -define function signature double-subtract(xsd:double, xsd:double) returns (xsd:double) -define function signature double-multiply(xsd:double, xsd:double) returns (xsd:double) -define function signature double-divide(xsd:double, xsd:double) returns (xsd:double) -define function signature double-mod(xsd:double, xsd:double) returns (xsd:double) - -define function signature double-unary-plus(xsd:double) returns (xsd:double) -define function signature double-unary-minus(xsd:double) returns (xsd:double) - -# comparators # -# F&O doc, Section 3.4 -define function signature nodeeq(type xs:AnyNode, type xs:AnyNode) returns (xsd:boolean) -define function signature equal(type xs:AnyScalar, type xs:AnyScalar) returns (xsd:boolean) -define function signature nequal(type xs:AnyScalar, type xs:AnyScalar) returns (xsd:boolean) -define function signature ge(type xs:AnyScalar, type xs:AnyScalar) returns (xsd:boolean) -define function signature le(type xs:AnyScalar, type xs:AnyScalar) returns (xsd:boolean) -define function signature gt(type xs:AnyScalar, type xs:AnyScalar) returns (xsd:boolean) -define function signature lt(type xs:AnyScalar, type xs:AnyScalar) returns (xsd:boolean) - -# F&O doc. Section 3.5 -define function signature floor(xsd:double) returns (xsd:int) -define function signature ceiling(xsd:double) returns (xsd:int) -define function signature round(xsd:double) returns (xsd:int) - -# functions on strings -# F&O doc. Section 4.4 -define function signature concat(xsd:string, xsd:string) returns (xsd:string) -define function signature starts-with(xsd:string, xsd:string) returns (xsd:boolean) -define function signature ends-with(xsd:string, xsd:string) returns (xsd:boolean) -define function signature contains(xsd:string, xsd:string) returns (xsd:boolean) -define function signature substring(xsd:string, xsd:int, xsd:int) returns (xsd:string) -define function signature string-length(xsd:string) returns (xsd:int) -define function signature substring-before(xsd:string, xsd:string) returns (xsd:string) -define function signature substring-after(xsd:string, xsd:string) returns (xsd:string) -define function signature normalize-space(xsd:string) returns (xsd:string) -define function signature normalize-unicode(xsd:string) returns (xsd:string) -define function signature upper-case(xsd:string) returns (xsd:string) -define function signature lower-case(xsd:string) returns (xsd:string) -define function signature translate(xsd:string, xsd:string, xsd:string) returns (xsd:string) -define function signature string-pad(xsd:string, xsd:int, xsd:string) returns (xsd:string) -define function signature match(xsd:string, xsd:string) returns (xsd:int*) -define function signature replace(xsd:string, xsd:string, xsd:string) returns (xsd:string) - -define function signature codepoint-contains(xsd:string, xsd:string) returns (xsd:boolean) -define function signature codepoint-substring-before(xsd:string, xsd:string) returns (xsd:string) -define function signature codepoint-substring-after(xsd:string, xsd:string) returns (xsd:string) - -# boolean operations # -# F&O doc, Section 6.1 -define function signature true() returns (xsd:boolean) -define function signature false() returns (xsd:boolean) - -# F&O doc, Section 6.2 -define function signature or(xsd:boolean, xsd:boolean) returns (xsd:boolean) -define function signature and(xsd:boolean, xsd:boolean) returns (xsd:boolean) -define function signature not(xsd:boolean) returns (xsd:boolean) - -# functions on sequences # -# F&O doc, Section 13.2 -define function signature index-of(type xs:AnyNode*, type xs:AnyNode) returns (xsd:int) -define function signature length(type xs:AnyType) returns (xsd:int) -define function signature empty(type xs:AnyType) returns (xsd:boolean) -define function signature distinct-values(type xs:AnyType) returns (type xs:AnyType) - -# aggregate functions # -# F&O doc, Section 13.4 -define function signature avg-int(xsd:int*) returns (xsd:int) -define function signature max-int(xsd:int*) returns (xsd:int?) -define function signature min-int(xsd:int*) returns (xsd:int?) -define function signature sum-int(xsd:int*) returns (xsd:int) - -define function signature avg-float(xsd:double*) returns (xsd:double) -define function signature max-float(xsd:double*) returns (xsd:double?) -define function signature min-float(xsd:double*) returns (xsd:double?) -define function signature sum-float(xsd:double*) returns (xsd:double) - -define function signature count(type xs:AnyType) returns (xsd:int) - -# input-output operations # - -# The signature below is a hack : The output of document is declared -# as the empty choice to avoid the need for explicit cast by the user -# when loading the document - JS # - -# F&O doc, Section 13.5 -define function signature document(xsd:string) returns (type xs:AnyDocument) -define function signature document-validate(xsd:string, xsd:string) returns (type xs:AnyDocument) - diff --git a/helm/ocaml/mathql_interpreter_galax/select.ml b/helm/ocaml/mathql_interpreter_galax/select.ml deleted file mode 100644 index 88477faf0..000000000 --- a/helm/ocaml/mathql_interpreter_galax/select.ml +++ /dev/null @@ -1,145 +0,0 @@ -(* 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://www.cs.unibo.it/helm/. - *) - -(* - * implementazione del comando SELECT - *) - -open MathQL;; -open Func;; - - -exception ExecuteFunctionNotInitialized;; -let execute = - ref - (function _ -> raise ExecuteFunctionNotInitialized) -;; - -(* - * valutazione di una stringa - *) -let stringeval env = - let module S = Mathql_semantics in - function - MQCons s -> - s - | MQFunc (f, rvar) -> - let {S.uri = uri} = List.assoc rvar env in - apply_func f uri - | MQStringRVar rvar -> - let {S.uri = uri} = List.assoc rvar env in - uri - | MQStringSVar svar -> - let (_,{S.attributes = attributes}) = List.hd env in - List.assoc svar attributes - | MQMConclusion -> - "MainConclusion" - | MQConclusion -> - "InConclusion" -;; - - - - -let rec is_good env = - let module S = Mathql_semantics in - function - MQAnd (b1, b2) -> - (is_good env b1) && (is_good env b2) - | MQOr (b1, b2) -> - (is_good env b1) || (is_good env b2) - | MQNot b1 -> - not (is_good env b1) - | MQTrue -> - true - | MQFalse -> - false - | MQIs (s1, s2) -> - (stringeval env s1) = (stringeval env s2) -(*CSC: magari le prossime funzioni dovrebbero andare in un file a parte, *) -(*CSC: insieme alla [execute] che utilizzano *) - | MQSetEqual (q1,q2) -> - (* set_of_result returns an ordered list of uris without duplicates *) - let rec set_of_result = - function - _,[] -> [] - | (Some olduri as v),{S.uri = uri}::tl when uri = olduri -> - set_of_result (v,tl) - | _,{S.uri = uri}::tl -> - uri::(set_of_result (Some uri, tl)) - in - let ul1 = set_of_result (None,!execute env q1) in - let ul2 = set_of_result (None,!execute env q2) in -prerr_endline ("MQSETEQUAL(" ^ string_of_int (List.length (!execute env q1)) ^ ">" ^ string_of_int (List.length ul1) ^ "," ^ string_of_int (List.length (!execute env q2)) ^ ">" ^ string_of_int (List.length ul2) ^ ")") ; flush stderr ; - (try - List.fold_left2 (fun b uri1 uri2 -> b && uri1=uri2) true ul1 ul2 - with - _ -> false) - | MQSubset (q1,q2) -> -(*CSC: codice cut&paste da sopra: ridurlo facendo un'unica funzione h.o. *) - (* set_of_result returns an ordered list of uris without duplicates *) - let rec set_of_result = - function - _,[] -> [] - | (Some olduri as v),{S.uri = uri}::tl when uri = olduri -> - set_of_result (v,tl) - | _,{S.uri = uri}::tl -> - uri::(set_of_result (Some uri, tl)) - in - let ul1 = set_of_result (None,!execute env q1) in - let ul2 = set_of_result (None,!execute env q2) in -prerr_endline ("MQSUBSET(" ^ string_of_int (List.length (!execute env q1)) ^ ">" ^ string_of_int (List.length ul1) ^ "," ^ string_of_int (List.length (!execute env q2)) ^ ">" ^ string_of_int (List.length ul2) ^ ")") ; flush stderr ; - let rec is_subset s1 s2 = - match s1,s2 with - [],_ -> true - | _,[] -> false - | uri1::tl1,uri2::tl2 when uri1 = uri2 -> - is_subset tl1 tl2 - | uri1::_,uri2::tl2 when uri1 > uri2 -> - is_subset s1 tl2 - | _,_ -> false - in - is_subset ul1 ul2 -;; - - -(* - * implementazione del comando SELECT - *) - - -let select_ex env avar alist abool = - let _ = print_string ("SELECT = ") - and t = Unix.time () in - let result = - List.filter (function entry -> is_good ((avar,entry)::env) abool) alist - in - print_string (string_of_int (List.length result) ^ ": ") ; - print_endline (string_of_float (Unix.time () -. t) ^ "s") ; - flush stdout ; - result -;; - - diff --git a/helm/ocaml/mathql_interpreter_galax/select.mli b/helm/ocaml/mathql_interpreter_galax/select.mli deleted file mode 100644 index 7c2fe9ddf..000000000 --- a/helm/ocaml/mathql_interpreter_galax/select.mli +++ /dev/null @@ -1,34 +0,0 @@ -(* 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/. - *) - -exception ExecuteFunctionNotInitialized;; -val execute: - (Mathql_semantics.attributed_uri_env -> - MathQL.mqlist -> Mathql_semantics.result) ref - -val select_ex : - Mathql_semantics.attributed_uri_env -> - MathQL.mqrvar -> Mathql_semantics.result -> MathQL.mqbool -> - Mathql_semantics.result diff --git a/helm/ocaml/mathql_interpreter_galax/sortedby.ml b/helm/ocaml/mathql_interpreter_galax/sortedby.ml deleted file mode 100644 index 0709bcca1..000000000 --- a/helm/ocaml/mathql_interpreter_galax/sortedby.ml +++ /dev/null @@ -1,62 +0,0 @@ -(* 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://www.cs.unibo.it/helm/. - *) - -(* - * implementazione del comando SORTEDBY - *) - -open MathQL;; -open Func;; -(*open Utility;;*) - -(* - * implementazione del comando SORTEDBY - *) -let sortedby_ex alist order afunc = - let before = Unix.time () in - let res = - let module S = Mathql_semantics in - (Sort.list - (fun {S.extra = e1} {S.extra = e2} -> - match order with - MQAsc -> e1 < e2 - | MQDesc -> e1 > e2 - ) - (List.map - (fun {S.uri = u ; S.attributes = attr} -> {S.uri = u ; S.attributes = attr ; S.extra = (apply_func afunc u)}) - alist - ) - ) - in - let after = Unix.time () - and ll1 = string_of_int (List.length alist) in - let diff = string_of_float (after -. before) in - prerr_endline - ("SORTEDBY(" ^ ll1 ^ ") = " ^ string_of_int (List.length res) ^ - ": " ^ diff ^ "s") ; - flush stderr ; - res -;; - diff --git a/helm/ocaml/mathql_interpreter_galax/sortedby.mli b/helm/ocaml/mathql_interpreter_galax/sortedby.mli deleted file mode 100644 index 863581a09..000000000 --- a/helm/ocaml/mathql_interpreter_galax/sortedby.mli +++ /dev/null @@ -1,27 +0,0 @@ -(* 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/. - *) - -val sortedby_ex : - Mathql_semantics.result -> MathQL.mqorder -> MathQL.mqfunc -> Mathql_semantics.result diff --git a/helm/ocaml/mathql_interpreter_galax/test_intersect.ml b/helm/ocaml/mathql_interpreter_galax/test_intersect.ml deleted file mode 100755 index e86251d32..000000000 --- a/helm/ocaml/mathql_interpreter_galax/test_intersect.ml +++ /dev/null @@ -1,69 +0,0 @@ - - - - - -open Mathql_semantics;; -open MathQL;; - -(* stampa tutti i documenti che fanno match con un pattern di input *) -List.iter - (function atturi -> print_endline ("output: " ^ atturi)) - (match Mqint2.execute - (MQList - (MQIntersect - ( - (MQSelect - ( - (*SELECT*) "uri0", - (* IN *) MQUse - (MQPattern - ( - Some "cic", - [MQBD; MQBC"Algebra"; MQBD; MQBC "Basics"; MQBD; MQBSS], - [] - ), - "$s0" - ), - (*WHERE *) MQIs - ( - MQStringSVar "$s0", - MQConclusion - ) - ) - ), - (MQSelect - ( - (*SELECT*) "uri0", - (* IN *) MQUse - (MQPattern - ( - Some "cic", - [MQBD; MQBC"Algebra"; MQBD; MQBC "Basics"; MQBD; MQBC "max.con"], - [] - ), - "$s0" - ), - (*WHERE *) MQIs - ( - MQStringSVar "$s0", - MQConclusion - ) - ) - ) - ) - ) - ) - with MQRefs l -> l - ); - -;; - - - - - - - - - diff --git a/helm/ocaml/mathql_interpreter_galax/test_pattern.ml b/helm/ocaml/mathql_interpreter_galax/test_pattern.ml deleted file mode 100755 index a06eca8ed..000000000 --- a/helm/ocaml/mathql_interpreter_galax/test_pattern.ml +++ /dev/null @@ -1,28 +0,0 @@ - - - -open Mathql_semantics;; -open MathQL;; - -(* stampa tutti i documenti che fanno match con un pattern di input *) -List.iter - (function atturi -> print_endline ("output: " ^ atturi)) - (match Mqint2.execute - (MQList - (MQPattern - ( - Some "cic", - (* [MQBD;MQBC "Algebra"; MQBD; MQBC "Basics"; MQBSS],*) - [MQBD;MQBC "Algebra"; MQBD; MQBC "Basics"; MQBD; - MQBC"Z_exh.con"], - (*[MQBSS; MQBC ".var"],*) - [] - ) - ) - ) with MQRefs l -> l - ); - - - - ;; - diff --git a/helm/ocaml/mathql_interpreter_galax/test_select.ml b/helm/ocaml/mathql_interpreter_galax/test_select.ml deleted file mode 100755 index 98933520d..000000000 --- a/helm/ocaml/mathql_interpreter_galax/test_select.ml +++ /dev/null @@ -1,55 +0,0 @@ - - -(* - select uri0 - in use pattern "cic:/Coq/Reals/Rdefinitions/Rlt.con" position $s0 - where $s0 is mainconclusion -*) - - - -open Mathql_semantics;; -open MathQL;; - -(* stampa tutti i documenti che fanno match con un pattern di input *) -List.iter - (function atturi -> print_endline ("output: " ^ atturi)) - (match Mqint2.execute - (MQList - (MQSelect - ( - (*SELECT*) "uri0", - (* IN *) MQUse - ( - MQPattern - ( - Some "cic", - [MQBD; MQBC"Algebra"; MQBD; MQBC "Basics"; MQBD; MQBSS], - [] - ), - "$s0" - ), - (*WHERE *) MQIs - ( - MQStringSVar "$s0", - MQConclusion - ) - ) - - ) - ) - with MQRefs l -> l - ); - - - -;; - - - - - - - - - diff --git a/helm/ocaml/mathql_interpreter_galax/test_select2.ml b/helm/ocaml/mathql_interpreter_galax/test_select2.ml deleted file mode 100644 index 12cc1fc9f..000000000 --- a/helm/ocaml/mathql_interpreter_galax/test_select2.ml +++ /dev/null @@ -1,55 +0,0 @@ - - -(* - select uri0 - in use pattern "cic:/Coq/Reals/Rdefinitions/Rlt.con" position $s0 - where $s0 is mainconclusion -*) - - - -open Mathql_semantics;; -open MathQL;; - -(* stampa tutti i documenti che fanno match con un pattern di input *) -List.iter - (function atturi -> print_endline ("output: " ^ atturi)) - (match Mqint2.execute - (MQList - (MQSelect - ( - (*SELECT*) "uri0", - (* IN *) MQUse - ( - MQPattern - ( - Some "cic", - [MQBD; MQBC"Algebra"; MQBD; MQBC "CC_Props"; MQBD; MQBSS], - [] - ), - "$s0" - ), - (*WHERE *) MQIs - ( - MQStringSVar "$s0", - MQConclusion - ) - ) - - ) - ) - with MQRefs l -> l - ); - - - -;; - - - - - - - - - diff --git a/helm/ocaml/mathql_interpreter_galax/test_union.ml b/helm/ocaml/mathql_interpreter_galax/test_union.ml deleted file mode 100755 index 6998632e8..000000000 --- a/helm/ocaml/mathql_interpreter_galax/test_union.ml +++ /dev/null @@ -1,69 +0,0 @@ - - - - - -open Mathql_semantics;; -open MathQL;; - -(* stampa tutti i documenti che fanno match con un pattern di input *) -List.iter - (function atturi -> print_endline ("output: " ^ atturi)) - (match Mqint2.execute - (MQList - (MQUnion - ( - (MQSelect - ( - (*SELECT*) "uri0", - (* IN *) MQUse - (MQPattern - ( - Some "cic", - [MQBD; MQBC"Algebra"; MQBD; MQBC "Basics"; MQBD; MQBSS], - [] - ), - "$s0" - ), - (*WHERE *) MQIs - ( - MQStringSVar "$s0", - MQConclusion - ) - ) - ), - (MQSelect - ( - (*SELECT*) "uri0", - (* IN *) MQUse - (MQPattern - ( - Some "cic", - [MQBD; MQBC"Algebra"; MQBD; MQBC "CC_Props"; MQBD; MQBSS], - [] - ), - "$s0" - ), - (*WHERE *) MQIs - ( - MQStringSVar "$s0", - MQConclusion - ) - ) - ) - ) - ) - ) - with MQRefs l -> l - ); - -;; - - - - - - - - - diff --git a/helm/ocaml/mathql_interpreter_galax/test_use.ml b/helm/ocaml/mathql_interpreter_galax/test_use.ml deleted file mode 100644 index a366e000a..000000000 --- a/helm/ocaml/mathql_interpreter_galax/test_use.ml +++ /dev/null @@ -1,29 +0,0 @@ - - -open Mathql_semantics;; -open MathQL;; - -(* stampa tutti i documenti che fanno match con un pattern di input *) -List.iter - (function atturi -> print_endline ("output: " ^ atturi)) - (match Mqint2.execute - (MQList - (MQUse - (MQPattern - ( - Some "cic", - [MQBD; MQBC "Algebra"; MQBD; MQBC "Basics"; MQBSS], - (* [MQBD;MQBC "Algebra"; MQBD; MQBC "Basics"; MQBD; - MQBC"Z_exh.con"],*) - (*[MQBSS; MQBC ".var"],*) - [] - ), - "pippo") - ) - ) with MQRefs l -> l - ); - - - -;; - diff --git a/helm/ocaml/mathql_interpreter_galax/tools.ml b/helm/ocaml/mathql_interpreter_galax/tools.ml deleted file mode 100644 index 7be644224..000000000 --- a/helm/ocaml/mathql_interpreter_galax/tools.ml +++ /dev/null @@ -1,98 +0,0 @@ - -(* QUESTE FUNZIONI ORA NON VENGONO USATE, SONO STATE INSERITE NEI FILE DELLE - - FUNZIONI CHE LE USANO!!!!*) - - - -open Unix;; - -(* Data una lista di token restituisce la stringa formata da tutti i token *) -let rec token_to_str p = - match p with - [] -> "" - | head::tail -> - let h = match head with - MQBC s -> Str.global_replace (Str.regexp "\.") "\\\\\." s - | MQBD -> "/" - | MQBQ -> "[^/#]?" - | MQBS -> "[^/#]*" - | MQBSS -> "[^#]*" - in - h ^ (patterneval tail) -;; - - - - -(* data la lista dei token(fi) la trasforma in stringa aggiungendo la virgola -tra un token e l'altro *) -let rec fitoken_to_str p = - match p with - [] -> "" - | head::tail -> - let h = match head with - MQBQ -> "[^/#]?" ^ "," - | MQBS -> "[^/#]*" ^ "," - | MQBSS -> "[^#]*" ^ "," - in - h ^ (patterneval tail) -;; - - - - - - - -(* NON SERVE ORA! *) - -(* Dato un path stringa restituisce la lista dei file contenuti a ogni livello -nella dir relativa al path *) - -(*let rec entry_list aspattern dir = - - if !contains(aspattern,'.') - then - let indir = opendir(aspattern) in - let ent = readdir(indir) in - if contains(ent, '.') (*se la entry e' un file*) - then [geturi(ent)] @ entry_list(readdir(indir), indir) - else - entry_list(ent, indir) (*se la entry e' una dir*) - - else - [geturi(aspattern)] @ entry_list(readdir(dir), dir)*) (*se aspattern e' un file*) - - - -(* FUNZIONE DI MATCHING: prende il descrittore del file delle uri e il path da -matchare formato stringa e restituisce la lista dei path che fanno match in -formato stringa !! TAIL-RECURSIVE !! *) - -let pmatch inp path = - let rec aux inp path acc = - - let s= try - Some (Str.string_after (input_line(inp)) 61) - with End_of_file -> None - in match s with - | Some s -> - if Str.string_match (Str.regexp path) s 0 - then - begin - let p = (Str.match_end()-3) - in - aux inp path ((Str.string_before s p)::acc) - end - else - (aux inp path acc) - | None -> List.rev acc - in - aux inp path [] -;; - - - - - diff --git a/helm/ocaml/mathql_interpreter_galax/union.ml b/helm/ocaml/mathql_interpreter_galax/union.ml deleted file mode 100644 index 2e83b7a7d..000000000 --- a/helm/ocaml/mathql_interpreter_galax/union.ml +++ /dev/null @@ -1,139 +0,0 @@ -(* 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/. - *) - -(* - * implementazione del comando UNION - *) - -(* -(* - * - *) -let xres_fill_context hr h1 l1 = - match l1 with - [] -> [] - | _ -> - let hh = List.combine h1 l1 - in - List.map - (fun x -> - if (List.mem_assoc x hh) then - List.assoc x hh - else - "" - ) - hr -;; - -(* - * implementazione del comando UNION - *) -let union_ex alist1 alist2 = - let head1 = List.hd alist1 - and tail1 = List.tl alist1 - and head2 = List.hd alist2 - and tail2 = List.tl alist2 (* e fin qui ... *) - in - match (head1, head2) with - ([], _) -> assert false (* gli header non devono mai essere vuoti *) - | (_, []) -> assert false (* devono contenere almeno [retVal] *) - | (_, _) -> let headr = (head2 @ - (List.find_all - (function t -> not (List.mem t head2)) - head1) - ) in (* header del risultato finale *) - List.append (* il risultato finale e' la concatenazione ...*) - [headr] (* ... dell'header costruito prima ...*) - (Sort.list - (fun l m -> List.hd l < List.hd m) - (match (tail1, tail2) with (* e di una coda "unione" *) - ([], _) -> tail2 (* va bene perche' l'altra lista e' vuota *) - | (_, []) -> tail1 (* va bene perche' l'altra lista e' vuota *) - | (_, _) -> - let first = (* parte dell'unione che riguarda solo il primo set *) - List.map - ( - fun l -> - [List.hd l] @ - xres_fill_context (List.tl headr) (List.tl head1) (List.tl l) - ) - tail1 - in - List.fold_left - (fun par x -> - let y = (* elemento candidato ad entrare *) - [List.hd x] - @ - xres_fill_context - (List.tl headr) (List.tl head2) (List.tl x) - in - par @ if (List.find_all (fun t -> t = y) par) = [] then - [y] - else - [] - ) - first (* List.fold_left *) - tail2 (* List.fold_left *) -(* first @ - List.map (fun l -> [List.hd l] @ - xres_fill_context - (List.tl headr) (List.tl head2) (List.tl l) - ) tail2 -*) - ) (* match *) - ) -;; -*) - -(* preserves order and gets rid of duplicates *) -let rec union_ex l1 l2 = - let module S = Mathql_semantics in - match (l1, l2) with - [],l - | l,[] -> l - | ({S.uri = uri1} as entry1)::tl1, - ({S.uri = uri2} as entry2)::_ when uri1 < uri2 -> - entry1::(union_ex tl1 l2) - | ({S.uri = uri1} as entry1)::_, - ({S.uri = uri2} as entry2)::tl2 when uri2 < uri1 -> - entry2::(union_ex l1 tl2) - | entry1::tl1,entry2::tl2 -> (* same entry *) - if entry1 = entry2 then (* same attributes *) - entry1::(union_ex tl1 tl2) - else - assert false -;; - -let union_ex l1 l2 = - let before = Unix.time () in - let res = union_ex l1 l2 in - let after = Unix.time () in - let ll1 = string_of_int (List.length l1) in - let ll2 = string_of_int (List.length l2) in - let diff = string_of_float (after -. before) in - prerr_endline ("UNION(" ^ ll1 ^ "," ^ ll2 ^ "): " ^ diff ^ "s") ; - flush stderr ; - res -;; diff --git a/helm/ocaml/mathql_interpreter_galax/union.mli b/helm/ocaml/mathql_interpreter_galax/union.mli deleted file mode 100644 index 6b6ba6d27..000000000 --- a/helm/ocaml/mathql_interpreter_galax/union.mli +++ /dev/null @@ -1,27 +0,0 @@ -(* 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/. - *) - -val union_ex : - Mathql_semantics.result -> Mathql_semantics.result -> Mathql_semantics.result diff --git a/helm/ocaml/mathql_interpreter_galax/use.ml b/helm/ocaml/mathql_interpreter_galax/use.ml deleted file mode 100644 index ab4fa6c73..000000000 --- a/helm/ocaml/mathql_interpreter_galax/use.ml +++ /dev/null @@ -1,68 +0,0 @@ -open Mathql_semantics;; - - -(* prende una lista di uri (contenente alternativamente uri e pos) e costruisce una lista di attributed_uri *) -let rec attl uril svar = - match uril with - | head::tail -> let suri = List.hd uril in - let len = String.length suri in - let scuri = String.sub suri 4 (len-4) in - if String.contains scuri '#' then - let pos = String.index scuri '#' in - let s1 = Str.string_before scuri pos in - let xp = Str.string_after scuri pos in - let xp = Str.global_replace (Str.regexp "#xpointer(1") "" xp in - let xp = Str.global_replace (Str.regexp "\/") "," xp in - let xp = Str.global_replace (Str.regexp ")") "" xp in - let scuri = (s1 ^ xp) in - let uril_tl = List.tl uril in - {uri = scuri; attributes = [(svar, (List.hd - uril_tl))]; extra = ""} :: (attl (List.tl uril_tl) svar) - else - let uril_tl = List.tl uril in - {uri = scuri; attributes = [(svar, (List.hd - uril_tl))]; extra = ""} :: (attl (List.tl uril_tl) svar) - | [] -> [] - - - - - -(* prende un attributed_uri e una svar e restituisce la lista degli -attributed_uri (backward o forward in base al parametro "d") associando -la posizione alla var passata *) - -let muse svar d path = - let dir = - match d with - "F" -> "/projects/helm/metadata/create4/forward" - | _ -> "/projects/helm/metadata/create4/backward" - in - let dtag = - match d with - "F" -> "refObj" - | _ -> "backPointer" in - - let xq ="namespace h=\"http://www.cs.unibo.it/helm/schemas/mattone.rdf#\" - namespace rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" - for $i in document(" ^ "\"" ^ dir ^ path.uri ^ ".xml" ^ "\"" ^ - ")/rdf:RDF/h:Object//h:" ^ dtag ^ "/h:Occurrence - return ($i/h:occurrence, $i/h:position)" - - in - let uril = Toputils.eval_query_string xq in (* e' una lista di liste di stringhe*) - let hd_uril = List.hd uril in(*prendo l'elemento in testa che e' quello - che contiene la lista di uri*) - attl hd_uril svar (* adesso dalla lista di uri(hd_uril) costruisco una lista di attributed_uri*) - - - - -(* prende una lista di uri (Mathql_semantics.result), una variabile (a cui -associare la posizione), e la direzione (forward o backward) e per ogni uri chiama la muse *) -let use_ex ulist svar d = - List.stable_sort (fun {uri = uri1} {uri = uri2} -> compare uri1 uri2) (List.concat (List.map (muse svar d) ulist)) -;; - - - diff --git a/helm/ocaml/mathql_interpreter_galax/use.mli b/helm/ocaml/mathql_interpreter_galax/use.mli deleted file mode 100644 index 1dc2b207f..000000000 --- a/helm/ocaml/mathql_interpreter_galax/use.mli +++ /dev/null @@ -1,4 +0,0 @@ -val use_ex: - Mathql_semantics.result -> MathQL.mqsvar -> string -> Mathql_semantics.result - - diff --git a/helm/ocaml/mathql_interpreter_galax/utility.ml b/helm/ocaml/mathql_interpreter_galax/utility.ml deleted file mode 100644 index 5ea9b7e67..000000000 --- a/helm/ocaml/mathql_interpreter_galax/utility.ml +++ /dev/null @@ -1,119 +0,0 @@ -(* 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://www.cs.unibo.it/helm/. - *) - -(* - * funzioni di utilita' generale - *) - -open Dbconn;; - -(* - * converte il risultato di una query in una lista di stringhe - * - * parametri: - * l: Postgres.result; risultato della query - * - * output: string list; lista di stringhe (una per tupla) - * - * assumo che il risultato della query sia - * costituito da un solo valore per tupla - * - * TODO - * verificare che l sia effettivamente costruita come richiesto - *) -let pgresult_to_string_list l = List.map (List.hd) l#get_list;; - -(* - * converte il risultato di una query in una stringa - * - * paramteri: - * l: Postgres.result; risultato della query - * - * output: string; valore dell'unica tupla del risultato - * - * mi aspetto che il risultato contenga una sola tupla - * formata da un solo valore - * - * TODO - * verificare che l sia costruita come richiesto - *) -let pgresult_to_string l = - match l#get_list with - [] -> "" - | t -> List.hd (List.hd t) -;; - -(* - * parametri: - * x: 'a; chiave di cui settare il valore - * v: 'b; valore da assegnare alla chiave - * l: ('a * 'b) list; lista di coppie in cui effettuare - * l'assegnamento - * - * output: ('a * 'b) list; lista di coppie contenente (x, v) - * - * TODO - * gestire i casi in cui in l compaiono piu' coppie (x, _) - * si sostituiscono tutte? se ne sostituisce una e si eliminano - * le altre? - *) -let set_assoc x v l = - let rec spila testa key value lista = - match lista with - [] -> testa @ [(key, value)] - | (j, _)::tl when j = key -> testa @ [(key, value)] @ tl - | hd::tl -> spila (testa @ [hd]) key value tl - in - spila [] x v l -;; - -(* - * parametri: - * p: string; nome della proprieta' - * - * output: string; id interno associato alla proprieta' - *) -let helm_property_id p = - let c = pgc () in - let q1 = "select att0 from namespace where att1='http://www.cs.unibo.it/helm/schemas/mattone.rdf#'" in - let ns = pgresult_to_string (c#exec q1) in - let q2 = ("select att0 from property where att2='" ^ p ^ "' and att1=" ^ ns) in - let retval = pgresult_to_string (c#exec q2) in - (*let _ = print_endline ("utility:q2: " ^ q2 ^ " : " ^ retval) in*) - retval -;; - -(* - * parametri: - * c: string; nome della classe - * - * output: string; id interno associato alla classe - *) -let helm_class_id cl = - let c = pgc () in - let ns = pgresult_to_string (c#exec ("select att0 from namespace where att1='http://www.cs.unibo.it/helm/schemas/mattone.rdf#'")) in - pgresult_to_string (c#exec ("select att0 from class where att2='" ^ cl ^ "' and att1=" ^ ns)) -;; - diff --git a/helm/ocaml/mathql_interpreter_galax/utility.mli b/helm/ocaml/mathql_interpreter_galax/utility.mli deleted file mode 100644 index 9e9e8290d..000000000 --- a/helm/ocaml/mathql_interpreter_galax/utility.mli +++ /dev/null @@ -1,30 +0,0 @@ -(* 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://www.cs.unibo.it/helm/. - *) - -val pgresult_to_string_list : < get_list : string list list; .. > -> string list -val pgresult_to_string : < get_list : string list list; .. > -> string -val set_assoc : 'a -> 'b -> ('a * 'b) list -> ('a * 'b) list -val helm_property_id: string -> string -val helm_class_id: string -> string