| SELECT <rvar> IN <set> WHERE <bool> (* selezione *)
| LET <svar> BE <set> IN <set> (* assegnazione a set-var in
contesto *)
- | <relation> <quoted-constant-string> <set> ATTR <vvar-list>
- (* unione insieme risorse in
+ | LET <vvar> BE <string-set> IN <set> (* assegnamento a value-var
+ in contesto*)
+ | RELATION <refine_op> <quoted-constant-string-path> <set> ATTR <vvar-list>
+ (* unione insieme risorse in
relazione specificata con le
risorse in set, ognuna con
attributi (ATTR) *)
| <set> INTERSECT <set> (* intersezione *)
| <set> DIFF <set> (* differenza *)
-<relation> := RELATION (* relazione (proprieta') *)
- | SUBRELATION (* proprieta' e
+<refine_op> := "" (* relazione (proprieta') *)
+ | SUB (* proprieta' e
sotto-proprieta' *)
- | SUPERRELATION (* proprieta' e
+ | SUPER (* proprieta' e
super-proprieta' *)
+<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>
insiemi stringhe *)
| EX <bool> (* existential on attributes
of references *)
-<string-set> := {} (* insieme vuoto*)
- | <quoted-constant-string-set> (* stringa singoletto *)
- | {<quoted-constant-string-set>} (* insieme stringhe *)
- | REFOF <set> (* insieme riferimenti *)
- | <rvar>.<vvar> (* variabile per insieme
- stringhe, relativa a
- riferimento *)
+<string-set> := ( <string-set> ) (* parentesizzazione *)
+ | {} (* insieme vuoto*)
+ | <quoted-constant-string> (* stringa singoletto *)
+ | {<quoted-constant-string-list>}(* insieme stringhe *)
+ | REFOF <set> (* insieme riferimenti *)
+ | <rvar>.<vvar> (* variabile per insieme
+ stringhe, relativa a
+ riferimento *)
| <function> <quoted-constant-string> <string-set>
- (* applicazione di funzione
- specificata a riferimento
- o insiemi di rif. o var*)
+ (* applicazione di funzione
+ specificata a riferimento
+ o insiemi di rif. o var*)
+ | <vvar> (* vvar introduced by LET *)
<quoted-constant-string-list> := <quoted-constant-string>
| <quoted-constant-string> , <quoted-constant-string-list>
<function> := FUN (* funzione generale *)
| <property>
-<property> := ATTRIBUTE (* funzione proprieta': restituisce
- suoi valori*)
- | SUBATTR (* restituisce valori proprieta' e
- sotto-proprieta' di *)
- | SUPERATTR (* restituisce valori proprieta' e
- super-proprieta' di *)
+<property> := ATTRIBUTE <refine-op> (* funzione proprieta': restituisce
+ suoi valori (anche strutturati)
+ (e delle sotto-proprieta' o
+ super-proprieta' *)
+
<rvar> := @ <not-reserved-identifier> (* variabile per riferimento *)
<vvar> := $ <not-reserved-identifier> (* variabile per insiemi
- REF aumenta performance perche' NON accede al data base (costoso).
- l'argomento di PATTERN ha sintassi di una espressione regolare
POSIX 1003.2-1992
-- Possibile <function> (<quoted-constant-string>):
+- Possibile FUN (<quoted-constant-string>):
NAME (* URIREF -> nome_oggetto *)
- MEET aumenta performance nel caso si verifichi (a in S) oppure
(b in S) = ({a,b} meet S) perche' valuta S una volta sola