(* 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
| 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
(* 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 = mqtref list (* list of references (helper) *)
+type mqrefs = mqtref list (* list of references (helper) *)
-type mqresult =
- | MQStrUri of string list
+type mqresult =
| MQRefs of mqrefs