]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/mathql/xmathql.dtd
ocaml 3.09 transition
[helm.git] / helm / mathql / xmathql.dtd
index 88462d5d27111d80a61ebda874cc3d8cea1ba8cb..96b52a22b17c4f3a2a2a155374c597026748d883 100644 (file)
@@ -27,6 +27,7 @@
 <!--*****************************************************************-->
 <!-- DTD FOR the MATHEMATICAL QUERY MARKUP LANGUAGE (XMathQL)        -->
 <!-- First draft: April 2002, Irene Schena                           -->
+<!-- Second draft: Agust 2002, Irene Schena                          -->
 <!--*****************************************************************-->
 
 <!--*****************************************************************-->
 <!-- MathQL.                                                         -->
 <!-- Operators are unambiguous (binary or unary), so there isn't any -->
 <!-- grouping operator.                                              -->
-<!-- CONST is the constant string; rvar is for references and lvar   -->
-<!-- for list.                                                       -->
-<!-- The attributes binder, rvar, lvar declare variables which are   -->
-<!-- referred to and used by means of respectively BINDER, Rvar and  -->
-<!-- RVAR, Lvar and LVAR.                                            -->
-<!-- Rvar (Lvar) is casted to a list, on the contrary the use of RVAR-->
-<!-- (LVAR) is casted to a string.                                   -->
+<!-- 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 % position '(MainHypothesis|Hypothesis|MainConclusion|Conclusion|
-                      Body)'>
-
 <!ENTITY % bool '(True|False)'>
 
-<!ENTITY % token '(CONST|STAR|TWOSTARS|SLASH|QUESTIONMARK)'>
-
-<!-- MathQL list expression declaration -->
+<!-- MathQL query expression declaration -->
 
-<!ENTITY % listexpr '(Rvar|Lvar|Reference|Pattern|Select|Exists|LetIn|
-                      Use|UsedBy|ConstructorsOf|InTheory|TheoryRefTo|
-                      TypeOf|SuperTypeOf|SubTypeOf|Union|Intersect|Diff)'>
+<!ENTITY % setexpr '(Rvar|Svar|Ref|Pattern|Select|LetSIn|LetVIn|Relation|
+                     Union|Intersect|Diff)'>
 
 <!-- MathQL boolean expression declaration -->
 
-<!ENTITY % boolexpr '(BOOL|NOT|AND|OR|IS|SETEQUAL|SUBSET)'>
-
-<!-- MathQL string expression declaration -->
+<!ENTITY % boolexpr '(BOOL|NOT|AND|OR|EQ|SUB|MEET|EX)'>
 
-<!ENTITY % functexpr '(NAME|PROPERTY|SUPERPROPERTY|SUBPROPERTY)'>
+<!-- MathQL string-set expression declaration -->
 
-<!ENTITY % stringexpr '(CONST|POSITION|RVAR|BINDER|%functexpr;)'>
+<!ENTITY % functexpr '(FUN|PROPERTY)'>
 
+<!ENTITY % stringsetexpr '(CONST|CONSTLIST|REFOF|BINDER|VVAR|%functexpr;)'>
 
 <!-- MathQL query top-element -->
 
-<!ELEMENT MQLquery %listexpr;>
+<!ELEMENT MQLquery %setexpr;>
+
+<!-- MathQL set expressions -->
 
-<!-- MathQL list expressions -->
 <!ELEMENT Rvar EMPTY>
 <!ATTLIST Rvar
           name CDATA #REQUIRED>
 
-<!ELEMENT Lvar EMPTY>
-<!ATTLIST Lvar
+<!ELEMENT Svar EMPTY>
+<!ATTLIST Svar
           name CDATA #REQUIRED>
 
-<!ELEMENT Reference (RPrefix, RBody, Ext, (RFragmentID?))>
+<!ELEMENT Ref %stringsetexpr;>
 
-<!ELEMENT Pattern (PPrefix, PBody, (Ext?), (PFragmentID?))>
+<!ELEMENT Pattern %stringsetexpr;>
 
 <!ELEMENT Select (In, Where)>
 
-<!ELEMENT Exists (In, Where)>
-
-<!ELEMENT LetIn (%listexpr;, Target)>
-
-<!ELEMENT Use (%listexpr;, Position)>
-
-<!ELEMENT UsedBy (%listexpr;, Position)>
-
-<!ELEMENT ConstructorsOf %listexpr;>
-
-<!ELEMENT InTheory (%listexpr;, ItemType)>
-
-<!ELEMENT TheoryRefTo %listexpr;>
-
-<!ELEMENT TypeOf %listexpr;>
-<!ATTLIST TypeOf
-          binder CDATA #REQUIRED>
-
-<!ELEMENT SuperTypeOf %listexpr;>
-<!ATTLIST SuperTypeOf
-          binder CDATA #REQUIRED>
-
-<!ELEMENT SubTypeOf %listexpr;>
-<!ATTLIST SubTypeOf
-          binder CDATA #REQUIRED>
-
-<!ELEMENT Union (%listexpr;, %listexpr;)>
-
-<!ELEMENT Intersect (%listexpr;, %listexpr;)>
-
-<!ELEMENT Diff (%listexpr;, %listexpr;)>
+<!ELEMENT LetSIn (%setexpr;, Starget)>
 
-<!-- MathQL list sub-expressions -->
+<!ELEMENT LetVIn (%stringsetexpr;, Vtarget)>
 
-<!ELEMENT RPrefix (CONST)>
+<!ELEMENT Relation (PName?,%setexpr;, Attr+)>
+<!ATTLIST Relation
+          name CDATA #REQUIRED
+          refine (sub|super) #IMPLIED>
 
-<!ELEMENT RBody (CONST)>
+<!ELEMENT Union (%setexpr;, %setexpr;)>
 
-<!ELEMENT RFragmentID (NUMBER)+>
+<!ELEMENT Intersect (%setexpr;, %setexpr;)>
 
-<!ELEMENT Ext (CONST)>
+<!ELEMENT Diff (%setexpr;, %setexpr;)>
 
-<!ELEMENT PPrefix (CONST|STAR)>
+<!-- MathQL set sub-expressions -->
 
-<!ELEMENT PBody (%token;)+>
-
-<!-- XPointers have max depth = 2 (see CIC inductive definitions) -->
-<!ELEMENT PFragmentID (NUMBER|TWOSTARS|STAR)+>
-
-<!ELEMENT NUMBER EMPTY>
-<!ATTLIST NUMBER
-          value NMTOKEN #REQUIRED>
-
-<!-- We need SLASH for grouping CONST with QUESTIONMARK -->
-<!ELEMENT SLASH EMPTY>
-
-<!-- STAR expands only to objects of the specified dir before the last "/": 
-     ex. cic:/Algebra/* expands to every object in Algebra only            -->
-<!ELEMENT STAR EMPTY>
-
-<!-- TWOSTARS expands till the most complete name (with extension if not 
-     specifified)                                                          -->
-<!ELEMENT TWOSTARS EMPTY>
-
-<!-- QUESTIONMARK matches one character except "/"                         --> 
-<!ELEMENT QUESTIONMARK EMPTY>
-
-<!ELEMENT In %listexpr;>
+<!ELEMENT In %setexpr;>
 
 <!ELEMENT Where %boolexpr;>
 <!ATTLIST Where
           rvar CDATA #REQUIRED>
 
-<!ELEMENT Target %listexpr;>
-<!ATTLIST Target
-          lvar CDATA #REQUIRED>
+<!ELEMENT Starget %setexpr;>
+<!ATTLIST Starget
+          svar CDATA #REQUIRED>
 
-<!ELEMENT Position EMPTY>
-<!ATTLIST Position
-          binder CDATA #REQUIRED>
+<!ELEMENT Vtarget %setexpr;>
+<!ATTLIST Vtarget
+          vvar CDATA #REQUIRED>
 
-<!ELEMENT ItemType EMPTY>
-<!ATTLIST ItemType
+<!ELEMENT Attr EMPTY>
+<!ATTLIST Attr 
           binder CDATA #REQUIRED>
 
+<!ELEMENT PName (CONST+)>
+
 <!-- MathQL boolean expressions -->
 
 <!ELEMENT BOOL EMPTY>
 
 <!ELEMENT OR (%boolexpr;, %boolexpr;)>
 
-<!ELEMENT IS (%stringexpr;, %stringexpr;)>
+<!ELEMENT EQ (%stringsetexpr;, %stringsetexpr;)>
 
-<!ELEMENT SETEQUAL (%listexpr;, %listexpr;)>
+<!ELEMENT SUB (%stringsetexpr;, %stringsetexpr;)>
 
-<!ELEMENT SUBSET (%listexpr;, %listexpr;)>
+<!ELEMENT MEET (%stringsetexpr;, %stringsetexpr;)>
 
-<!-- MathQL string expressions -->
+<!ELEMENT EX %boolexpr;>
 
-<!ELEMENT CONST (#PCDATA)>
+<!-- MathQL string-set expressions -->
 
-<!ELEMENT RVAR EMPTY>
-<!ATTLIST RVAR
-          name CDATA #REQUIRED>
+<!ELEMENT CONST (#PCDATA)>
 
-<!ELEMENT BINDER EMPTY>
-<!ATTLIST BINDER
-          name CDATA #REQUIRED>
+<!ELEMENT CONSTLIST (CONST*)>
 
-<!ELEMENT POSITION EMPTY>
-<!ATTLIST POSITION
-          name %position; #REQUIRED>
+<!ELEMENT REFOF %setexpr;>
 
-<!ELEMENT NAME (RVAR)>
+<!ELEMENT VVAR %stringsetexpr;>
 
-<!ELEMENT PROPERTY (RVAR)>
-<!ATTLIST PROPERTY
+<!ELEMENT BINDER (Rvar)>
+<!ATTLIST BINDER
           name CDATA #REQUIRED>
 
-<!ELEMENT SUPERPROPERTY (RVAR)>
-<!ATTLIST SUPERPROPERTY
+<!ELEMENT FUN %stringsetexpr;>
+<!ATTLIST FUN
           name CDATA #REQUIRED>
 
-<!ELEMENT SUBPROPERTY (RVAR)>
-<!ATTLIST SUBPROPERTY
-          name CDATA #REQUIRED>
\ No newline at end of file
+<!ELEMENT PROPERTY (Refine?,%stringsetexpr;)>
+<!ATTLIST PROPERTY
+          name CDATA #REQUIRED>