]> 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 (MathQML)        -->
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 <!-- The %queryexpr parameter entity is used to allow all query      -->
42 <!-- expression types to occur                                       -->
43 <!-- Operators are unambiguous (binary or unary), so there isn't any -->
44 <!-- grouping operator.                                              -->
45 <!-- CONST is the constant string.                                   -->
46 <!-- The attributes binder and rvar declare variables which are      -->
47 <!-- referred to and used by means of respectively BINDER and RVAR   -->
48 <!--*****************************************************************-->
49
50 <!ENTITY % position '(Conclusion|Hypothesis|Body|MainConclusion|
51                         MainHypothesis)'>
52
53 <!ENTITY % order '(ascendant|descendant)'>
54
55 <!ENTITY % bool '(True|False)'>
56
57 <!-- MathQL query expression declaration -->
58
59 <!ENTITY % queryexpr '(Union|Intersect|Diff|SortBy|Select|Exists|Use|UsedBy|
60                    ConstructorsOf|Pattern|InTheory|TheoryRefTo|TypeOf|
61                    SuperTypeOf|SubTypeOf|Group)'>
62
63 <!-- MathQL boolean expression declaration -->
64
65 <!ENTITY % boolexpr '(AND|OR|NOT|BOOL|IS|GROUP)'>
66
67 <!-- MathQL string expression declaration -->
68
69 <!ENTITY % functexpr '(NAME|PROPERTY|SUPERPROPERTY|SUBPROPERTY)'>
70
71 <!ENTITY % stringexpr '(CONST|POSITION|RVAR|BINDER|%functexpr;)'>
72
73
74 <!-- MathQL top-element -->
75
76 <!ELEMENT MathQL %queryexpr;>
77
78 <!-- MathQL query expressions -->
79
80 <!ELEMENT Union (%queryexpr;, %queryexpr;)>
81
82 <!ELEMENT Intersect (%queryexpr;, %queryexpr;)>
83
84 <!ELEMENT Diff (%queryexpr;, %queryexpr;)>
85
86 <!ELEMENT SortBy (%queryexpr;, SortField)>
87
88 <!ELEMENT Select (In, Where)>
89
90 <!ELEMENT Exists (In, Where)>
91
92 <!ELEMENT Use (%queryexpr;, Position)>
93
94 <!ELEMENT Position EMPTY>
95 <!ATTLIST Position
96           binder CDATA #REQUIRED>
97
98 <!ELEMENT UsedBy (%queryexpr;, Position)>
99
100 <!ELEMENT ConstructorsOf %queryexpr;>
101
102 <!ELEMENT Pattern (Prefix, TokenList, (FragmentID?))>
103
104 <!ELEMENT InTheory (%queryexpr;, ItemType)>
105
106 <!ELEMENT ItemType EMPTY>
107 <!ATTLIST ItemType
108           binder CDATA #REQUIRED>
109
110 <!ELEMENT TheoryRefTo %queryexpr;>
111
112 <!ELEMENT TypeOf %queryexpr;>
113 <!ATTLIST TypeOf
114           binder CDATA #REQUIRED>
115
116 <!ELEMENT SuperTypeOf %queryexpr;>
117 <!ATTLIST SuperTypeOf
118           binder CDATA #REQUIRED>
119
120 <!ELEMENT SubTypeOf %queryexpr;>
121 <!ATTLIST SubTypeOf
122           binder CDATA #REQUIRED>
123
124 <!-- MathQL query sub-expressions -->
125
126 <!ELEMENT SortField %functexpr;>
127 <!ATTLIST SortField 
128           order %order; #IMPLIED>
129
130 <!ELEMENT In %queryexpr;>
131
132 <!ELEMENT Where %boolexpr;>
133 <!ATTLIST Where
134           rvar CDATA #REQUIRED>
135
136 <!ELEMENT STAR EMPTY>
137
138 <!ELEMENT TWOSTARS EMPTY>
139
140 <!ELEMENT SLASH EMPTY>
141
142 <!ELEMENT QUESTIONMARK EMPTY>
143
144 <!ELEMENT NUMBER EMPTY>
145 <!ATTLIST NUMBER
146           value NMTOKEN #REQUIRED>
147
148 <!-- STAR expands only to objects of the specified dir before the last "/": 
149      ex. cic:/Algebra/* expands to every object in Algebra only            -->
150 <!-- TWOSTARS expands till the most complete name (with extension if not 
151      specifified)                                                          -->
152 <!-- QUESTIONMARK matches one character except "/"                         --> 
153 <!ELEMENT TokenList (CONST|STAR|TWOSTARS|SLASH|QUESTIONMARK)+>
154
155 <!ELEMENT Prefix (CONST|STAR)>
156
157 <!-- XPointers have max depth = 2 (see CIC inductive definitions) -->
158 <!ELEMENT FragmentID (NUMBER|TWOSTARS|STAR)+>
159
160 <!-- MathQL boolean expressions -->
161
162 <!ELEMENT AND (%boolexpr;, %boolexpr;)>
163
164 <!ELEMENT OR (%boolexpr;, %boolexpr;)>
165
166 <!ELEMENT NOT %boolexpr;>
167
168 <!ELEMENT IS (%stringexpr;, %stringexpr;)>
169
170 <!ELEMENT BOOL EMPTY>
171 <!ATTLIST BOOL
172           value %bool; #REQUIRED>
173
174 <!-- MathQL string expressions -->
175
176 <!ELEMENT CONST (#PCDATA)>
177
178 <!ELEMENT RVAR EMPTY>
179 <!ATTLIST RVAR
180           name CDATA #REQUIRED>
181
182 <!ELEMENT BINDER EMPTY>
183 <!ATTLIST BINDER
184           name CDATA #REQUIRED>
185
186 <!ELEMENT POSITION EMPTY>
187 <!ATTLIST POSITION
188           name %position; #REQUIRED>
189
190 <!ELEMENT NAME (RVAR)>
191
192 <!ELEMENT PROPERTY (RVAR)>
193 <!ATTLIST PROPERTY
194           name CDATA #REQUIRED>
195
196 <!ELEMENT SUPERPROPERTY (RVAR)>
197 <!ATTLIST SUPERPROPERTY
198           name CDATA #REQUIRED>
199
200 <!ELEMENT SUBPROPERTY (RVAR)>
201 <!ATTLIST SUBPROPERTY
202           name CDATA #REQUIRED>