| MQUnion (l1, l2) -> sep "(" ^ out_list l1 ^ key "union" ^ out_list l2 ^ sep ")"
| MQIntersect (l1, l2) -> sep "(" ^ out_list l1 ^ key "intersect" ^ out_list l2 ^ sep ")"
| MQLRVar v -> key "rvaroccur" ^ v
+ | MQLetIn (v, l1, l2) ->
+ key "let " ^ out_rvar v ^ " = " ^ out_list l1 ^ key " in " ^ out_list l2
+ | MQLetRef v -> out_rvar v
let out_query = function
| MQList l -> out_list l
in
compose_universe !universe
in
- MQSelect (
- "uri", query,
- MQSubset (
- MQSelect (
- "uri2",
- MQUsedBy (MQLRVar "uri", "pos"),
- MQOr (
- MQIs (MQSSVar "pos", MQConclusion),
- MQIs (MQSSVar "pos", MQMConclusion)
+ MQLetIn (
+ "universe",universe,
+ MQSelect (
+ "uri", query,
+ MQSubset (
+ MQSelect (
+ "uri2",
+ MQUsedBy (MQLRVar "uri", "pos"),
+ MQOr (
+ MQIs (MQSSVar "pos", MQConclusion),
+ MQIs (MQSSVar "pos", MQMConclusion)
+ )
+ ),
+ MQLetRef "universe"
)
- ),
- universe
)
)
;;