(* 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/. *) (* AUTOR: Ferruccio Guidi *) (* output data structures ***************************************************) type path = string list (* the name of an attribute *) type value = string list (* the value of an attribute *) type attribute = path * value (* an attribute *) type attribute_group = attribute list (* a group of attributes *) type attribute_set = attribute_group list (* the attributes of an URI *) type resource = string * attribute_set (* an attributed URI *) type resource_set = resource list (* the query result *) type result = resource_set (* input data structures ****************************************************) type svar = string (* the name of a variable for a resource set *) type avar = string (* the name of a variable for a resource *) type inverse = bool type refine = RefineExact | RefineSub | RefineSuper type main = path type pattern = bool type exp = path * (path option) type exp_list = exp list type allbut = bool type xml = bool type source = bool type gen = GenFJoin (* full union - with attr handling *) | GenFMeet (* full intersection - with attr handling *) type query = Const of result | SVar of svar | AVar of avar | Dot of avar * path | Ex of avar list * query | Select of avar * query * query | Let of svar option * query * query | Fun of path * path list * query list | Gen of path * query list | Add of bool * groups * query | For of gen * avar * query * query | While of gen * query * query | Property of inverse * refine * path * main * istrue * isfalse list * exp_list * pattern * query and groups = Attr of (path * query) list list | From of avar and con = pattern * path * query and istrue = con list and isfalse = con list