(* 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/. *) (******************************************************************************) (* *) (* PROJECT HELM *) (* *) (* Ferruccio Guidi *) (* Domenico Lordi *) (* 30/04/2002 *) (* *) (* *) (******************************************************************************) exception MQInvalidURI of string exception MQConnectionFailed of string exception MQInvalidConnection of string (* Input types **************************************************************) (* main type is mquery *) type mqrvar = string (* name *) type mqsvar = string (* name *) type mqpt = string option (* PROTOCOL TOKENS *) (* Some = constant string *) (* None = single star: '*' *) type mqbt = (* BODY TOKENS *) | MQBC of string (* a constant string *) | MQBD (* a slash: '/' *) | MQBQ (* a question mark: '?' *) | MQBS (* a single star: '*' *) | MQBSS (* a double star: '**' *) type mqft = (* FRAGMENT TOKENS *) | MQFC of int (* a constant integer *) | MQFS (* a single star: '*' *) | MQFSS (* a double star: '**' *) type mqtref = mqpt * (mqbt list) * (mqft list) (* tokenized reference *) type mqpattern = mqtref (* constant pattern *) type mqfunc = | MQName (* NAME *) | MQTheory | MQTitle | MQContributor | MQCreator | MQPublisher | MQSubject | MQDescription | MQDate | MQType | MQFormat | MQIdentifier | MQLanguage | MQRelation | MQSource | MQCoverage | MQRights | MQInstitution | MQContact | MQFirstVersion | MQModified type mqstring = | MQCons of string (* constant *) | MQFunc of mqfunc * mqrvar (* function, rvar *) | MQRVar of mqrvar (* rvar *) | MQSVar of mqsvar (* svar *) | MQMConclusion (* main conclusion *) | MQConclusion (* inner conclusion *) type mqorder = | MQAsc | MQDesc type mqbool = | MQTrue | MQFalse | MQAnd of mqbool * mqbool | MQOr of mqbool * mqbool | MQNot of mqbool | MQIs of mqstring * mqstring (* operands *) | MQSetEqual of mqlist * mqlist (* the two lists denote the *) (* same set *) | MQSubset of mqlist * mqlist (* the two lists denote two *) (* sets, the first one *) (* subsect of the second one. *) and mqlist = | MQSelect of mqrvar * mqlist * mqbool (* rvar, list, boolean *) | MQUse of mqlist * mqsvar (* list, Position attribute *) | MQUsedBy of mqlist * mqsvar (* list, Position attribute *) | MQPattern of mqpattern (* pattern *) | MQUnion of mqlist * mqlist (* operands *) | MQIntersect of mqlist * mqlist (* operands *) | MQSortedBy of mqlist * mqorder * mqfunc (* *) | MQRVarOccur of mqrvar | MQDiff of mqlist * mqlist (* *) type mquery = | MQList of mqlist (* Output types *************************************************************) (* main type is mqresult *) (* TODO: usare le uri in questo formato *) type mquref = UriManager.uri * (int list) (* uri, fragment identifier *) type mqrefs = string list (* list of references (helper) *) type mqresult = | MQRefs of mqrefs