]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/ocaml/mathql_interpreter/mathql.ml
sortedby implemented and new uri result format
[helm.git] / helm / ocaml / mathql_interpreter / mathql.ml
index 2bdc5a1b798d21ed54fdea17cd3d9f1b37f7f388..01cbf431a21b5103963c9fa716b190f07405600f 100644 (file)
@@ -41,38 +41,57 @@ exception MQInvalidConnection of string
 (* Input types **************************************************************)
 (* main type is mquery                                                      *)
 
-type mqrvar = string                       (* name *)
+type mqrvar = string                         (* name *)
 
-type mqsvar = string                       (* name *)
+type mqsvar = string                         (* name *)
 
 type mquptoken =
-   | MQString of string                     (* a constant string *)
-   | MQSlash                                (* a slash: '/' *)
-   | MQAnyChr                               (* Any single character: '?' *)
-   | MQAst                                  (* single asterisk: '*' *)
-   | MQAstAst                               (* double asterisk: '**' *)
+   | MQString of string                      (* a constant string *)
+   | MQSlash                                 (* a slash: '/' *)
+   | MQAnyChr                                (* Any single character: '?' *)
+   | MQAst                                   (* single asterisk: '*' *)
+   | MQAstAst                                (* double asterisk: '**' *)
 
-type mqup = mquptoken list                  (* uri pattern (helper) *)
+type mqup = mquptoken list                   (* uri pattern (helper) *)
 
 type mqfi = int option * int option
 
-type mqtref = string * mqup * string * mqfi (* HELM preamble,
-                                              uri pattern, 
-                                              extension, 
-                                             fragment identifier *)
+type mqtref = string * mqup * mqfi           (* HELM preamble,
+                                                uri pattern, 
+                                               fragment identifier *)
 
-type mqpattern = mqtref                     (* constant pattern *)
+type mqpattern = mqtref                      (* constant pattern *)
 
 type mqfunc =
-   | MQName                                 (* NAME *)
+   | MQName                                  (* NAME *)
+   | MQTheory
+   | MQTitle
+   | MQContributor
+   | MQCreator
+   | MQPublisher
+   | MQSubject
+   | MQDescription
+   | MQDate
+   | MQType
+   | MQFormat
+   | MQIdentifier
+   | MQLanguage
+   | MQRelation
+   | MQSource
+   | MQCoverage
+   | MQRights
+   | MQInstitution
+   | MQContact
+   | MQFirstVersion
+   | MQModified
 
 type mqstring =
-   | MQCons of string                       (* constant *)
-   | MQFunc of mqfunc * mqrvar              (* function, rvar *)
-   | MQRVar of mqrvar                       (* rvar *)
-   | MQSVar of mqsvar                       (* svar *)
-   | MQMConclusion                          (* main conclusion *)
-   | MQConclusion                           (* inner conclusion *)
+   | MQCons of string                        (* constant *)
+   | MQFunc of mqfunc * mqrvar               (* function, rvar *)
+   | MQRVar of mqrvar                        (* rvar *)
+   | MQSVar of mqsvar                        (* svar *)
+   | MQMConclusion                           (* main conclusion *)
+   | MQConclusion                            (* inner conclusion *)
 
 type mqbool =
    | MQTrue
@@ -80,15 +99,21 @@ type mqbool =
    | MQAnd of mqbool * mqbool
    | MQOr of mqbool * mqbool
    | MQNot of mqbool
-   | MQIs of mqstring * mqstring            (* operands *)
+   | MQIs of mqstring * mqstring             (* operands *)
+
+type mqorder =
+   | MQAsc
+   | MQDesc
 
 type mqlist =
-   | MQSelect of mqrvar * mqlist * mqbool   (* rvar, list, boolean *) 
-   | MQUse of mqlist * mqsvar               (* list, Position attribute *)
-   | MQUsedBy of mqlist * mqsvar            (* list, Position attribute *)
-   | MQPattern of mqpattern                 (* pattern *)
-   | MQUnion of mqlist * mqlist             (*  *)
-   | MQIntersect of mqlist * mqlist         (*  *)
+   | MQSelect of mqrvar * mqlist * mqbool    (* rvar, list, boolean *) 
+   | MQUse of mqlist * mqsvar                (* list, Position attribute *)
+   | MQUsedBy of mqlist * mqsvar             (* list, Position attribute *)
+   | MQPattern of mqpattern                  (* pattern *)
+   | MQUnion of mqlist * mqlist              (*  *)
+   | MQDiff of mqlist * mqlist               (*  *)
+   | MQIntersect of mqlist * mqlist          (*  *)
+   | MQSortedBy of mqlist * mqorder * mqfunc (*  *)
 
 type mquery =
    | MQList of mqlist
@@ -96,10 +121,9 @@ type mquery =
 (* Output types *************************************************************)
 (* main type is mqresult                                                    *)
 
-(* TODO: usare le uri in questo formato *)
-type mquref = UriManager.uri * mqfi         (* uri, fragment identifier *)
+type mquref = UriManager.uri * mqfi          (* uri, fragment identifier *)
 
-type mqrefs = string list                   (* list of references (helper) *)
+type mqrefs = mqtref list                    (* list of references (helper) *)
 
 type mqresult =
    | MQRefs of mqrefs