<!-- 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 -->
<!--*****************************************************************-->
<!ENTITY % position '(Conclusion|Hypothesis|Body|MainConclusion|
MainHypothesis)'>
-<!ENTITY % order '(ascendant|descendant)'>
-
<!ENTITY % bool '(True|False)'>
<!-- MathQL query expression declaration -->
-<!ENTITY % queryexpr '(Union|Intersect|Diff|SortBy|Select|Exists|Use|UsedBy|
+<!ENTITY % queryexpr '(Union|Intersect|Diff|Select|Exists|Use|UsedBy|
ConstructorsOf|Pattern|InTheory|TheoryRefTo|TypeOf|
SuperTypeOf|SubTypeOf|Group)'>
<!ELEMENT Diff (%queryexpr;, %queryexpr;)>
-<!ELEMENT SortBy (%queryexpr;, SortField)>
-
<!ELEMENT Select (In, Where)>
<!ELEMENT Exists (In, Where)>
<!ELEMENT ConstructorsOf %queryexpr;>
-<!ELEMENT Pattern EMPTY>
-<!ATTLIST Pattern
- arg CDATA #REQUIRED>
+<!ELEMENT Pattern (Prefix, TokenList, (FragmentID?))>
<!ELEMENT InTheory (%queryexpr;, ItemType)>
<!-- MathQL query sub-expressions -->
-<!ELEMENT SortField %functexpr;>
-<!ATTLIST SortField
- order %order; #IMPLIED>
-
<!ELEMENT In %queryexpr;>
<!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>
+
+<!-- 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 Prefix (CONST|STAR)>
+
+<!-- XPointers have max depth = 2 (see CIC inductive definitions) -->
+<!ELEMENT FragmentID (NUMBER|TWOSTARS|STAR)+>
+
<!-- MathQL boolean expressions -->
<!ELEMENT AND (%boolexpr;, %boolexpr;)>
value %bool; #REQUIRED>
<!-- 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