]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/mathql/xmathql.dtd
Added examples.
[helm.git] / helm / mathql / xmathql.dtd
index 57b663f73c0264518b2a04eed766f9c8db4136b3..69b0cab9e0eeb991bacededc4bfc2a50d657dca5 100644 (file)
@@ -25,7 +25,7 @@
 <!-- http://cs.unibo.it/helm/.                                         -->
 
 <!--*****************************************************************-->
-<!-- DTD FOR the MATHEMATICAL QUERY MARKUP LANGUAGE (MathQML)        -->
+<!-- DTD FOR the MATHEMATICAL QUERY MARKUP LANGUAGE (XMathQL)        -->
 <!-- First draft: April 2002, Irene Schena                           -->
 <!--*****************************************************************-->
 
 <!-- 3) reusing queries saved in a standard format                   -->
 <!-- The syntax reflects the structure of the grammar productions of -->
 <!-- MathQL.                                                         -->
-<!-- The %queryexpr parameter entity is used to allow all query      -->
-<!-- expression types to occur                                       -->
 <!-- Operators are unambiguous (binary or unary), so there isn't any -->
 <!-- grouping operator.                                              -->
-<!-- CONST is the constant string.                                   -->
+<!-- SORTBY operator for sorting query results.                      -->
+<!-- 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.                                   -->
+<!-- PROPERTY works on a specified RDF property returning its value. -->
 <!--*****************************************************************-->
 
-<!ENTITY % position '(Conclusion|Hypothesis|Body|MainConclusion|
-                        MainHypothesis)'>
-
 <!ENTITY % order '(ascendant|descendant)'>
 
+<!ENTITY % position '(MainHypothesis|Hypothesis|MainConclusion|Conclusion|
+                      Body)'>
+
 <!ENTITY % bool '(True|False)'>
 
-<!-- MathQL query expression declaration -->
+<!ENTITY % token '(CONST|STAR|TWOSTARS|SLASH|QUESTIONMARK)'>
 
-<!ENTITY % queryexpr '(Union|Intersect|Diff|SortBy|Select|Exists|Use|UsedBy|
-                   ConstructorsOf|Pattern|InTheory|TheoryRefTo|TypeOf|
-                   SuperTypeOf|SubTypeOf|Group)'>
+<!-- MathQL list expression declaration -->
+
+<!ENTITY % listexpr '(Rvar|Lvar|Reference|Pattern|Select|LetIn|SortBy|
+                      Use|UsedBy|ConstructorsOf|InTheory|TheoryRefTo|
+                      TypeOf|SuperTypeOf|SubTypeOf|Union|Intersect|Diff|
+                      Minimize)'>
 
 <!-- MathQL boolean expression declaration -->
 
-<!ENTITY % boolexpr '(AND|OR|NOT|BOOL|IS|GROUP)'>
+<!ENTITY % boolexpr '(BOOL|NOT|AND|OR|IS|SETEQUAL|SUBSET|EXISTS)'>
 
 <!-- MathQL string expression declaration -->
 
 <!ENTITY % stringexpr '(CONST|POSITION|RVAR|BINDER|%functexpr;)'>
 
 
-<!-- MathQL top-element -->
-
-<!ELEMENT MathQL %queryexpr;>
+<!-- MathQL query top-element -->
 
-<!-- MathQL query expressions -->
+<!ELEMENT MQLquery %listexpr;>
 
-<!ELEMENT Union (%queryexpr;, %queryexpr;)>
+<!-- MathQL list expressions -->
+<!ELEMENT Rvar EMPTY>
+<!ATTLIST Rvar
+          name CDATA #REQUIRED>
 
-<!ELEMENT Intersect (%queryexpr;, %queryexpr;)>
+<!ELEMENT Lvar EMPTY>
+<!ATTLIST Lvar
+          name CDATA #REQUIRED>
 
-<!ELEMENT Diff (%queryexpr;, %queryexpr;)>
+<!ELEMENT Reference (RPrefix, RBody, Ext, (RFragmentID?))>
 
-<!ELEMENT SortBy (%queryexpr;, SortField)>
+<!ELEMENT Pattern (PPrefix, PBody, (Ext?), (PFragmentID?))>
 
 <!ELEMENT Select (In, Where)>
 
-<!ELEMENT Exists (In, Where)>
-
-<!ELEMENT Use (%queryexpr;, Position)>
-
-<!ELEMENT Position EMPTY>
-<!ATTLIST Position
-          binder CDATA #REQUIRED>
-
-<!ELEMENT UsedBy (%queryexpr;, Position)>
+<!ELEMENT LetIn (%listexpr;, Target)>
 
-<!ELEMENT ConstructorsOf %queryexpr;>
+<!ELEMENT Use (%listexpr;, Position)>
 
-<!ELEMENT Pattern EMPTY>
-<!ATTLIST Pattern
-          arg CDATA #REQUIRED>
+<!ELEMENT UsedBy (%listexpr;, Position)>
 
-<!ELEMENT InTheory (%queryexpr;, ItemType)>
+<!ELEMENT ConstructorsOf %listexpr;>
 
-<!ELEMENT ItemType EMPTY>
-<!ATTLIST ItemType
-          binder CDATA #REQUIRED>
+<!ELEMENT InTheory (%listexpr;, ItemType)>
 
-<!ELEMENT TheoryRefTo %queryexpr;>
+<!ELEMENT TheoryRefTo %listexpr;>
 
-<!ELEMENT TypeOf %queryexpr;>
+<!ELEMENT TypeOf %listexpr;>
 <!ATTLIST TypeOf
           binder CDATA #REQUIRED>
 
-<!ELEMENT SuperTypeOf %queryexpr;>
+<!ELEMENT SuperTypeOf %listexpr;>
 <!ATTLIST SuperTypeOf
           binder CDATA #REQUIRED>
 
-<!ELEMENT SubTypeOf %queryexpr;>
+<!ELEMENT SubTypeOf %listexpr;>
 <!ATTLIST SubTypeOf
           binder CDATA #REQUIRED>
 
-<!-- MathQL query sub-expressions -->
+<!ELEMENT Union (%listexpr;, %listexpr;)>
 
-<!ELEMENT SortField %functexpr;>
-<!ATTLIST SortField 
-          order %order; #IMPLIED>
+<!ELEMENT Intersect (%listexpr;, %listexpr;)>
+
+<!ELEMENT Diff (%listexpr;, %listexpr;)>
+
+<!ELEMENT SortBy (%listexpr;, SortField)>
+
+<!ELEMENT Minimize %listexpr;>
+
+<!-- MathQL list sub-expressions -->
+
+<!ELEMENT RPrefix (CONST)>
+
+<!ELEMENT RBody (CONST)>
+
+<!ELEMENT RFragmentID (NUMBER)+>
+
+<!ELEMENT Ext (CONST)>
+
+<!ELEMENT PPrefix (CONST|STAR)>
+
+<!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>
 
-<!ELEMENT In %queryexpr;>
+<!-- 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 Where %boolexpr;>
 <!ATTLIST Where
           rvar CDATA #REQUIRED>
 
-<!-- MathQL boolean expressions -->
+<!ELEMENT Target %listexpr;>
+<!ATTLIST Target
+          lvar CDATA #REQUIRED>
 
-<!ELEMENT AND (%boolexpr;, %boolexpr;)>
+<!ELEMENT Position EMPTY>
+<!ATTLIST Position
+          binder CDATA #REQUIRED>
 
-<!ELEMENT OR (%boolexpr;, %boolexpr;)>
+<!ELEMENT ItemType EMPTY>
+<!ATTLIST ItemType
+          binder CDATA #REQUIRED>
 
-<!ELEMENT NOT %boolexpr;>
+<!ELEMENT SortField %functexpr;>
+<!ATTLIST SortField 
+          order %order; #IMPLIED>
 
-<!ELEMENT IS (%stringexpr;, %stringexpr;)>
+<!-- MathQL boolean expressions -->
 
 <!ELEMENT BOOL EMPTY>
 <!ATTLIST BOOL
           value %bool; #REQUIRED>
 
+<!ELEMENT NOT %boolexpr;>
+
+<!ELEMENT AND (%boolexpr;, %boolexpr;)>
+
+<!ELEMENT OR (%boolexpr;, %boolexpr;)>
+
+<!ELEMENT IS (%stringexpr;, %stringexpr;)>
+
+<!ELEMENT SETEQUAL (%listexpr;, %listexpr;)>
+
+<!ELEMENT SUBSET (%listexpr;, %listexpr;)>
+
+<!ELEMENT EXISTS (RVAR, %listexpr;)>
+
 <!-- MathQL string expressions -->
+
 <!ELEMENT CONST (#PCDATA)>
 
 <!ELEMENT RVAR EMPTY>
 
 <!ELEMENT NAME (RVAR)>
 
-<!ELEMENT PROPERTY (RVAR|CONST)>
+<!ELEMENT PROPERTY (RVAR)>
 <!ATTLIST PROPERTY
           name CDATA #REQUIRED>
 
-<!ELEMENT SUPERPROPERTY  (RVAR|CONST)>
+<!ELEMENT SUPERPROPERTY (RVAR)>
 <!ATTLIST SUPERPROPERTY
           name CDATA #REQUIRED>
 
-<!ELEMENT SUBPROPERTY (RVAR|CONST)>
+<!ELEMENT SUBPROPERTY (RVAR)>
 <!ATTLIST SUBPROPERTY
           name CDATA #REQUIRED>
\ No newline at end of file