contesto *)
| LET <vvar> BE <string-set> IN <set> (* assegnamento a value-var
in contesto*)
- | RELATION <refine_op> <quoted-constant-string> <set> ATTR <vvar-list>
+ | RELATION <refine_op> <quoted-constant-string-path> <set> ATTR <vvar-list>
(* unione insieme risorse in
relazione specificata con le
risorse in set, ognuna con
| <set> INTERSECT <set> (* intersezione *)
| <set> DIFF <set> (* differenza *)
-<refine_op> := <quoted-constant-string-set> (* relazione (proprieta')
- strutturata *)
+<refine_op> := "" (* relazione (proprieta') *)
| SUB (* proprieta' e
sotto-proprieta' *)
| SUPER (* proprieta' e
super-proprieta' *)
-<quoted-constant-string-set> := ""
- | <quoted-constant-string>
- | <quoted-constant-string> <quoted-constant-string-set>
- (* insieme di stringhe *)
+<quoted-constant-string-path> := <quoted-constant-string>
+ (* relazione (proprieta') *)
+ | <quoted-constant-string> "/" <quoted-constant-string-path>
+ (* insieme di stringhe:
+ proprieta' strutturata *)
<vvar-list> := <vvar>
| <vvar> , <vvar-list>
<!ELEMENT LetVIn (%stringsetexpr;, Vtarget)>
-<!ELEMENT Relation (Refine?,%setexpr;, Attr+)>
+<!ELEMENT Relation (PName?,%setexpr;, Attr+)>
<!ATTLIST Relation
- name CDATA #REQUIRED>
+ name CDATA #REQUIRED
+ refine (sub|super) #IMPLIED>
<!ELEMENT Union (%setexpr;, %setexpr;)>
<!ATTLIST Attr
binder CDATA #REQUIRED>
-<!ELEMENT Refine (SUB|SUPER|CONST+)>
+<!ELEMENT PName (CONST+)>
<!-- MathQL boolean expressions -->