(* 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") ;;