<!-- MathQL. -->
<!-- Operators are unambiguous (binary or unary), so there isn't any -->
<!-- grouping operator. -->
+<!-- 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 -->
<!-- PROPERTY works on a specified RDF property returning its value. -->
<!--*****************************************************************-->
+<!ENTITY % order '(ascendant|descendant)'>
+
<!ENTITY % position '(MainHypothesis|Hypothesis|MainConclusion|Conclusion|
Body)'>
<!-- MathQL list expression declaration -->
-<!ENTITY % listexpr '(Rvar|Lvar|Reference|Pattern|Select|Exists|LetIn|
+<!ENTITY % listexpr '(Rvar|Lvar|Reference|Pattern|Select|LetIn|SortBy|
Use|UsedBy|ConstructorsOf|InTheory|TheoryRefTo|
- TypeOf|SuperTypeOf|SubTypeOf|Union|Intersect|Diff)'>
+ TypeOf|SuperTypeOf|SubTypeOf|Union|Intersect|Diff|
+ Minimize)'>
<!-- MathQL boolean expression declaration -->
-<!ENTITY % boolexpr '(BOOL|NOT|AND|OR|IS|SETEQUAL|SUBSET)'>
+<!ENTITY % boolexpr '(BOOL|NOT|AND|OR|IS|SETEQUAL|SUBSET|EXISTS)'>
<!-- MathQL string expression declaration -->
<!ELEMENT Select (In, Where)>
-<!ELEMENT Exists (In, Where)>
-
<!ELEMENT LetIn (%listexpr;, Target)>
<!ELEMENT Use (%listexpr;, Position)>
<!ELEMENT Diff (%listexpr;, %listexpr;)>
+<!ELEMENT SortBy (%listexpr;, SortField)>
+
+<!ELEMENT Minimize %listexpr;>
+
<!-- MathQL list sub-expressions -->
<!ELEMENT RPrefix (CONST)>
<!ATTLIST ItemType
binder CDATA #REQUIRED>
+<!ELEMENT SortField %functexpr;>
+<!ATTLIST SortField
+ order %order; #IMPLIED>
+
<!-- MathQL boolean expressions -->
<!ELEMENT BOOL EMPTY>
<!ELEMENT SUBSET (%listexpr;, %listexpr;)>
+<!ELEMENT EXISTS (RVAR, %listexpr;)>
+
<!-- MathQL string expressions -->
<!ELEMENT CONST (#PCDATA)>