<!-- 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 -->
+<!-- Second draft: Agust 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. -->
-<!-- The attributes binder and rvar declare variables which are -->
-<!-- referred to and used by means of respectively BINDER and RVAR -->
+<!-- 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 '(Conclusion|Hypothesis|Body|MainConclusion|
- MainHypothesis)'>
-
<!ENTITY % bool '(True|False)'>
<!-- MathQL query expression declaration -->
-<!ENTITY % queryexpr '(Union|Intersect|Diff|Select|Exists|Use|UsedBy|
- ConstructorsOf|Pattern|InTheory|TheoryRefTo|TypeOf|
- SuperTypeOf|SubTypeOf|Group)'>
+<!ENTITY % setexpr '(Rvar|Svar|Ref|Pattern|Select|LetIn|Relation|
+ Union|Intersect|Diff)'>
<!-- MathQL boolean expression declaration -->
-<!ENTITY % boolexpr '(AND|OR|NOT|BOOL|IS|GROUP)'>
-
-<!-- MathQL string expression declaration -->
-
-<!ENTITY % functexpr '(NAME|PROPERTY|SUPERPROPERTY|SUBPROPERTY)'>
-
-<!ENTITY % stringexpr '(CONST|POSITION|RVAR|BINDER|%functexpr;)'>
-
+<!ENTITY % boolexpr '(BOOL|NOT|AND|OR|EQ|SUB|MEET|EX)'>
-<!-- MathQL top-element -->
+<!-- MathQL string-set expression declaration -->
-<!ELEMENT MathQL %queryexpr;>
+<!ENTITY % functexpr '(FUN|PROPERTY)'>
-<!-- MathQL query expressions -->
+<!ENTITY % stringsetexpr '(CONST|CONSTLIST|REFOF|BINDER|%functexpr;)'>
-<!ELEMENT Union (%queryexpr;, %queryexpr;)>
-<!ELEMENT Intersect (%queryexpr;, %queryexpr;)>
+<!-- MathQL query top-element -->
-<!ELEMENT Diff (%queryexpr;, %queryexpr;)>
+<!ELEMENT MQLquery %setexpr;>
-<!ELEMENT Select (In, Where)>
-
-<!ELEMENT Exists (In, Where)>
-
-<!ELEMENT Use (%queryexpr;, Position)>
+<!-- MathQL set expressions -->
-<!ELEMENT Position EMPTY>
-<!ATTLIST Position
- binder CDATA #REQUIRED>
+<!ELEMENT Rvar EMPTY>
+<!ATTLIST Rvar
+ name CDATA #REQUIRED>
-<!ELEMENT UsedBy (%queryexpr;, Position)>
+<!ELEMENT Svar EMPTY>
+<!ATTLIST Svar
+ name CDATA #REQUIRED>
-<!ELEMENT ConstructorsOf %queryexpr;>
+<!ELEMENT Ref %stringsetexpr;>
-<!ELEMENT Pattern (Prefix, TokenList, (FragmentID?))>
+<!ELEMENT Pattern %stringsetexpr;>
-<!ELEMENT InTheory (%queryexpr;, ItemType)>
+<!ELEMENT Select (In, Where)>
-<!ELEMENT ItemType EMPTY>
-<!ATTLIST ItemType
- binder CDATA #REQUIRED>
+<!ELEMENT LetIn (%setexpr;, Target)>
-<!ELEMENT TheoryRefTo %queryexpr;>
+<!ELEMENT Relation (Refine?,%setexpr;, Attr+)>
+<!ATTLIST Relation
+ name CDATA #REQUIRED
+ refine (sub|super) #IMPLIED>
-<!ELEMENT TypeOf %queryexpr;>
-<!ATTLIST TypeOf
- binder CDATA #REQUIRED>
+<!ELEMENT Union (%setexpr;, %setexpr;)>
-<!ELEMENT SuperTypeOf %queryexpr;>
-<!ATTLIST SuperTypeOf
- binder CDATA #REQUIRED>
+<!ELEMENT Intersect (%setexpr;, %setexpr;)>
-<!ELEMENT SubTypeOf %queryexpr;>
-<!ATTLIST SubTypeOf
- binder CDATA #REQUIRED>
+<!ELEMENT Diff (%setexpr;, %setexpr;)>
-<!-- MathQL query sub-expressions -->
+<!-- MathQL set sub-expressions -->
-<!ELEMENT In %queryexpr;>
+<!ELEMENT In %setexpr;>
<!ELEMENT Where %boolexpr;>
<!ATTLIST Where
rvar CDATA #REQUIRED>
-<!ELEMENT STAR EMPTY>
-
-<!ELEMENT TWOSTARS EMPTY>
-
-<!ELEMENT SLASH EMPTY>
-
-<!ELEMENT QUESTIONMARK EMPTY>
-
-<!ELEMENT NUMBER EMPTY>
-<!ATTLIST NUMBER
- value NMTOKEN #REQUIRED>
+<!ELEMENT Target %setexpr;>
+<!ATTLIST Target
+ svar CDATA #REQUIRED>
-<!-- STAR expands only to objects of the specified dir before the last "/":
- ex. cic:/Algebra/* expands to every object in Algebra only -->
-<!-- TWOSTARS expands till the most complete name (with extension if not
- specifified) -->
-<!-- QUESTIONMARK matches one character except "/" -->
-<!ELEMENT TokenList (CONST|STAR|TWOSTARS|SLASH|QUESTIONMARK)+>
+<!ELEMENT Attr EMPTY>
+<!ATTLIST Attr
+ binder CDATA #REQUIRED>
-<!ELEMENT Prefix (CONST|STAR)>
+<!-- MathQL boolean expressions -->
-<!-- XPointers have max depth = 2 (see CIC inductive definitions) -->
-<!ELEMENT FragmentID (NUMBER|TWOSTARS|STAR)+>
+<!ELEMENT BOOL EMPTY>
+<!ATTLIST BOOL
+ value %bool; #REQUIRED>
-<!-- MathQL boolean expressions -->
+<!ELEMENT NOT %boolexpr;>
<!ELEMENT AND (%boolexpr;, %boolexpr;)>
<!ELEMENT OR (%boolexpr;, %boolexpr;)>
-<!ELEMENT NOT %boolexpr;>
+<!ELEMENT EQ (%stringsetexpr;, %stringsetexpr;)>
-<!ELEMENT IS (%stringexpr;, %stringexpr;)>
-
-<!ELEMENT BOOL EMPTY>
-<!ATTLIST BOOL
- value %bool; #REQUIRED>
+<!ELEMENT SUB (%stringsetexpr;, %stringsetexpr;)>
-<!-- MathQL string expressions -->
+<!ELEMENT MEET (%stringsetexpr;, %stringsetexpr;)>
-<!ELEMENT CONST (#PCDATA)>
+<!ELEMENT EX %boolexpr;>
-<!ELEMENT RVAR EMPTY>
-<!ATTLIST RVAR
- name CDATA #REQUIRED>
+<!-- MathQL string-set expressions -->
-<!ELEMENT BINDER EMPTY>
-<!ATTLIST BINDER
- name CDATA #REQUIRED>
+<!ELEMENT CONST (#PCDATA)>
-<!ELEMENT POSITION EMPTY>
-<!ATTLIST POSITION
- name %position; #REQUIRED>
+<!ELEMENT CONSTLIST (CONST*)>
-<!ELEMENT NAME (RVAR)>
+<!ELEMENT REFOF %setexpr;>
-<!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 %stringsetexpr;>
+<!ATTLIST PROPERTY
+ name CDATA #REQUIRED
+ refine (sub|super) #IMPLIED>
\ No newline at end of file