]> matita.cs.unibo.it Git - helm.git/blob - helm/mathql/xmathql.dtd
Modified Files:
[helm.git] / helm / mathql / xmathql.dtd
1 <?xml version="1.0" encoding="ISO-8859-1"?>
2
3 <!-- Copyright (C) 2000, HELM Team                                     -->
4 <!--                                                                   -->
5 <!-- This file is part of HELM, an Hypertextual, Electronic            -->
6 <!-- Library of Mathematics, developed at the Computer Science         -->
7 <!-- Department, University of Bologna, Italy.                         -->
8 <!--                                                                   -->
9 <!-- HELM is free software; you can redistribute it and/or             -->
10 <!-- modify it under the terms of the GNU General Public License       -->
11 <!-- as published by the Free Software Foundation; either version 2    -->
12 <!-- of the License, or (at your option) any later version.            -->
13 <!--                                                                   -->
14 <!-- HELM is distributed in the hope that it will be useful,           -->
15 <!-- but WITHOUT ANY WARRANTY; without even the implied warranty of    -->
16 <!-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the     -->
17 <!-- GNU General Public License for more details.                      -->
18 <!--                                                                   -->
19 <!-- You should have received a copy of the GNU General Public License -->
20 <!-- along with HELM; if not, write to the Free Software               -->
21 <!-- Foundation, Inc., 59 Temple Place - Suite 330, Boston,            -->
22 <!-- MA  02111-1307, USA.                                              -->
23 <!--                                                                   -->
24 <!-- For details, see the HELM World-Wide-Web page,                    -->
25 <!-- http://cs.unibo.it/helm/.                                         -->
26
27 <!--*****************************************************************-->
28 <!-- DTD FOR the MATHEMATICAL QUERY MARKUP LANGUAGE (XMathQL)        -->
29 <!-- First draft: April 2002, Irene Schena                           -->
30 <!--*****************************************************************-->
31
32 <!--*****************************************************************-->
33 <!-- This syntax is not convenient for humans to read and write, but -->
34 <!-- it is for programs.                                             -->
35 <!-- XMathQL is useful for:                                          -->
36 <!-- 1) generating queries in a XML-orienting programming environment-->
37 <!-- 2) embedding queries in XML documents                           -->
38 <!-- 3) reusing queries saved in a standard format                   -->
39 <!-- The syntax reflects the structure of the grammar productions of -->
40 <!-- MathQL.                                                         -->
41 <!-- Operators are unambiguous (binary or unary), so there isn't any -->
42 <!-- grouping operator.                                              -->
43 <!-- SORTBY operator for sorting query results.                      -->
44 <!-- CONST is the constant string; rvar is for references and lvar   -->
45 <!-- for list.                                                       -->
46 <!-- The attributes binder, rvar, lvar declare variables which are   -->
47 <!-- referred to and used by means of respectively BINDER, Rvar and  -->
48 <!-- RVAR, Lvar and LVAR.                                            -->
49 <!-- Rvar (Lvar) is casted to a list, on the contrary the use of RVAR-->
50 <!-- (LVAR) is casted to a string.                                   -->
51 <!-- PROPERTY works on a specified RDF property returning its value. -->
52 <!--*****************************************************************-->
53
54 <!ENTITY % order '(ascendant|descendant)'>
55
56 <!ENTITY % position '(MainHypothesis|Hypothesis|MainConclusion|Conclusion|
57                       Body)'>
58
59 <!ENTITY % bool '(True|False)'>
60
61 <!ENTITY % token '(CONST|STAR|TWOSTARS|SLASH|QUESTIONMARK)'>
62
63 <!-- MathQL list expression declaration -->
64
65 <!ENTITY % listexpr '(Rvar|Lvar|Reference|Pattern|Select|LetIn|SortBy|
66                       Use|UsedBy|ConstructorsOf|InTheory|TheoryRefTo|
67                       TypeOf|SuperTypeOf|SubTypeOf|Union|Intersect|Diff|
68                       Minimize)'>
69
70 <!-- MathQL boolean expression declaration -->
71
72 <!ENTITY % boolexpr '(BOOL|NOT|AND|OR|IS|SETEQUAL|SUBSET|EXISTS)'>
73
74 <!-- MathQL string expression declaration -->
75
76 <!ENTITY % functexpr '(NAME|PROPERTY|SUPERPROPERTY|SUBPROPERTY)'>
77
78 <!ENTITY % stringexpr '(CONST|POSITION|RVAR|BINDER|%functexpr;)'>
79
80
81 <!-- MathQL query top-element -->
82
83 <!ELEMENT MQLquery %listexpr;>
84
85 <!-- MathQL list expressions -->
86 <!ELEMENT Rvar EMPTY>
87 <!ATTLIST Rvar
88           name CDATA #REQUIRED>
89
90 <!ELEMENT Lvar EMPTY>
91 <!ATTLIST Lvar
92           name CDATA #REQUIRED>
93
94 <!ELEMENT Reference (RPrefix, RBody, Ext, (RFragmentID?))>
95
96 <!ELEMENT Pattern (PPrefix, PBody, (Ext?), (PFragmentID?))>
97
98 <!ELEMENT Select (In, Where)>
99
100 <!ELEMENT LetIn (%listexpr;, Target)>
101
102 <!ELEMENT Use (%listexpr;, Position)>
103
104 <!ELEMENT UsedBy (%listexpr;, Position)>
105
106 <!ELEMENT ConstructorsOf %listexpr;>
107
108 <!ELEMENT InTheory (%listexpr;, ItemType)>
109
110 <!ELEMENT TheoryRefTo %listexpr;>
111
112 <!ELEMENT TypeOf %listexpr;>
113 <!ATTLIST TypeOf
114           binder CDATA #REQUIRED>
115
116 <!ELEMENT SuperTypeOf %listexpr;>
117 <!ATTLIST SuperTypeOf
118           binder CDATA #REQUIRED>
119
120 <!ELEMENT SubTypeOf %listexpr;>
121 <!ATTLIST SubTypeOf
122           binder CDATA #REQUIRED>
123
124 <!ELEMENT Union (%listexpr;, %listexpr;)>
125
126 <!ELEMENT Intersect (%listexpr;, %listexpr;)>
127
128 <!ELEMENT Diff (%listexpr;, %listexpr;)>
129
130 <!ELEMENT SortBy (%listexpr;, SortField)>
131
132 <!ELEMENT Minimize %listexpr;>
133
134 <!-- MathQL list sub-expressions -->
135
136 <!ELEMENT RPrefix (CONST)>
137
138 <!ELEMENT RBody (CONST)>
139
140 <!ELEMENT RFragmentID (NUMBER)+>
141
142 <!ELEMENT Ext (CONST)>
143
144 <!ELEMENT PPrefix (CONST|STAR)>
145
146 <!ELEMENT PBody (%token;)+>
147
148 <!-- XPointers have max depth = 2 (see CIC inductive definitions) -->
149 <!ELEMENT PFragmentID (NUMBER|TWOSTARS|STAR)+>
150
151 <!ELEMENT NUMBER EMPTY>
152 <!ATTLIST NUMBER
153           value NMTOKEN #REQUIRED>
154
155 <!-- We need SLASH for grouping CONST with QUESTIONMARK -->
156 <!ELEMENT SLASH EMPTY>
157
158 <!-- STAR expands only to objects of the specified dir before the last "/": 
159      ex. cic:/Algebra/* expands to every object in Algebra only            -->
160 <!ELEMENT STAR EMPTY>
161
162 <!-- TWOSTARS expands till the most complete name (with extension if not 
163      specifified)                                                          -->
164 <!ELEMENT TWOSTARS EMPTY>
165
166 <!-- QUESTIONMARK matches one character except "/"                         --> 
167 <!ELEMENT QUESTIONMARK EMPTY>
168
169 <!ELEMENT In %listexpr;>
170
171 <!ELEMENT Where %boolexpr;>
172 <!ATTLIST Where
173           rvar CDATA #REQUIRED>
174
175 <!ELEMENT Target %listexpr;>
176 <!ATTLIST Target
177           lvar CDATA #REQUIRED>
178
179 <!ELEMENT Position EMPTY>
180 <!ATTLIST Position
181           binder CDATA #REQUIRED>
182
183 <!ELEMENT ItemType EMPTY>
184 <!ATTLIST ItemType
185           binder CDATA #REQUIRED>
186
187 <!ELEMENT SortField %functexpr;>
188 <!ATTLIST SortField 
189           order %order; #IMPLIED>
190
191 <!-- MathQL boolean expressions -->
192
193 <!ELEMENT BOOL EMPTY>
194 <!ATTLIST BOOL
195           value %bool; #REQUIRED>
196
197 <!ELEMENT NOT %boolexpr;>
198
199 <!ELEMENT AND (%boolexpr;, %boolexpr;)>
200
201 <!ELEMENT OR (%boolexpr;, %boolexpr;)>
202
203 <!ELEMENT IS (%stringexpr;, %stringexpr;)>
204
205 <!ELEMENT SETEQUAL (%listexpr;, %listexpr;)>
206
207 <!ELEMENT SUBSET (%listexpr;, %listexpr;)>
208
209 <!ELEMENT EXISTS (RVAR, %listexpr;)>
210
211 <!-- MathQL string expressions -->
212
213 <!ELEMENT CONST (#PCDATA)>
214
215 <!ELEMENT RVAR EMPTY>
216 <!ATTLIST RVAR
217           name CDATA #REQUIRED>
218
219 <!ELEMENT BINDER EMPTY>
220 <!ATTLIST BINDER
221           name CDATA #REQUIRED>
222
223 <!ELEMENT POSITION EMPTY>
224 <!ATTLIST POSITION
225           name %position; #REQUIRED>
226
227 <!ELEMENT NAME (RVAR)>
228
229 <!ELEMENT PROPERTY (RVAR)>
230 <!ATTLIST PROPERTY
231           name CDATA #REQUIRED>
232
233 <!ELEMENT SUPERPROPERTY (RVAR)>
234 <!ATTLIST SUPERPROPERTY
235           name CDATA #REQUIRED>
236
237 <!ELEMENT SUBPROPERTY (RVAR)>
238 <!ATTLIST SUBPROPERTY
239           name CDATA #REQUIRED>