+++ /dev/null
-<?xml version="1.0" encoding="ISO-8859-1"?>
-
-<!-- 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/. -->
-
-<!--*****************************************************************-->
-<!-- DTD FOR the MATHEMATICAL QUERY MARKUP LANGUAGE (XMathQL) -->
-<!-- First draft: April 2002, Irene Schena -->
-<!-- Second draft: Agust 2002, Irene Schena -->
-<!--*****************************************************************-->
-
-<!--*****************************************************************-->
-<!-- This syntax is not convenient for humans to read and write, but -->
-<!-- it is for programs. -->
-<!-- XMathQL is useful for: -->
-<!-- 1) generating queries in a XML-orienting programming environment-->
-<!-- 2) embedding queries in XML documents -->
-<!-- 3) reusing queries saved in a standard format -->
-<!-- The syntax reflects the structure of the grammar productions of -->
-<!-- MathQL. -->
-<!-- Operators are unambiguous (binary or unary), so there isn't any -->
-<!-- grouping operator. -->
-<!-- CONST is the quoted constant string; rvar is for single -->
-<!-- reference and svar for sets of references, i.e. query results. -->
-<!-- The attributes binder, rvar, svar declare variables which are -->
-<!-- referred to and used by means of respectively BINDER, Rvar, Svar-->
-<!-- PROPERTY works on a specified RDF property returning its value. -->
-<!--*****************************************************************-->
-
-<!ENTITY % bool '(True|False)'>
-
-<!-- MathQL query expression declaration -->
-
-<!ENTITY % setexpr '(Rvar|Svar|Ref|Pattern|Select|LetSIn|LetVIn|Relation|
- Union|Intersect|Diff)'>
-
-<!-- MathQL boolean expression declaration -->
-
-<!ENTITY % boolexpr '(BOOL|NOT|AND|OR|EQ|SUB|MEET|EX)'>
-
-<!-- MathQL string-set expression declaration -->
-
-<!ENTITY % functexpr '(FUN|PROPERTY)'>
-
-<!ENTITY % stringsetexpr '(CONST|CONSTLIST|REFOF|BINDER|VVAR|%functexpr;)'>
-
-<!-- MathQL query top-element -->
-
-<!ELEMENT MQLquery %setexpr;>
-
-<!-- MathQL set expressions -->
-
-<!ELEMENT Rvar EMPTY>
-<!ATTLIST Rvar
- name CDATA #REQUIRED>
-
-<!ELEMENT Svar EMPTY>
-<!ATTLIST Svar
- name CDATA #REQUIRED>
-
-<!ELEMENT Ref %stringsetexpr;>
-
-<!ELEMENT Pattern %stringsetexpr;>
-
-<!ELEMENT Select (In, Where)>
-
-<!ELEMENT LetSIn (%setexpr;, Starget)>
-
-<!ELEMENT LetVIn (%stringsetexpr;, Vtarget)>
-
-<!ELEMENT Relation (PName?,%setexpr;, Attr+)>
-<!ATTLIST Relation
- name CDATA #REQUIRED
- refine (sub|super) #IMPLIED>
-
-<!ELEMENT Union (%setexpr;, %setexpr;)>
-
-<!ELEMENT Intersect (%setexpr;, %setexpr;)>
-
-<!ELEMENT Diff (%setexpr;, %setexpr;)>
-
-<!-- MathQL set sub-expressions -->
-
-<!ELEMENT In %setexpr;>
-
-<!ELEMENT Where %boolexpr;>
-<!ATTLIST Where
- rvar CDATA #REQUIRED>
-
-<!ELEMENT Starget %setexpr;>
-<!ATTLIST Starget
- svar CDATA #REQUIRED>
-
-<!ELEMENT Vtarget %setexpr;>
-<!ATTLIST Vtarget
- vvar CDATA #REQUIRED>
-
-<!ELEMENT Attr EMPTY>
-<!ATTLIST Attr
- binder CDATA #REQUIRED>
-
-<!ELEMENT PName (CONST+)>
-
-<!-- MathQL boolean expressions -->
-
-<!ELEMENT BOOL EMPTY>
-<!ATTLIST BOOL
- value %bool; #REQUIRED>
-
-<!ELEMENT NOT %boolexpr;>
-
-<!ELEMENT AND (%boolexpr;, %boolexpr;)>
-
-<!ELEMENT OR (%boolexpr;, %boolexpr;)>
-
-<!ELEMENT EQ (%stringsetexpr;, %stringsetexpr;)>
-
-<!ELEMENT SUB (%stringsetexpr;, %stringsetexpr;)>
-
-<!ELEMENT MEET (%stringsetexpr;, %stringsetexpr;)>
-
-<!ELEMENT EX %boolexpr;>
-
-<!-- MathQL string-set expressions -->
-
-<!ELEMENT CONST (#PCDATA)>
-
-<!ELEMENT CONSTLIST (CONST*)>
-
-<!ELEMENT REFOF %setexpr;>
-
-<!ELEMENT VVAR %stringsetexpr;>
-
-<!ELEMENT BINDER (Rvar)>
-<!ATTLIST BINDER
- name CDATA #REQUIRED>
-
-<!ELEMENT FUN %stringsetexpr;>
-<!ATTLIST FUN
- name CDATA #REQUIRED>
-
-<!ELEMENT PROPERTY (Refine?,%stringsetexpr;)>
-<!ATTLIST PROPERTY
- name CDATA #REQUIRED>