<query> := <list> (* clausola iniziale *)
<list> := ( <list> ) (* parentesizazione *)
- | <list> UNION <list> (* unione *)
- | <list> INTERSECT <list> (* intersezione *)
- | <list> DIFF <list> (* differenza *)
+ | <rvar> (* lista singoletto var
+ (lista valori) *)
+ | <lvar> (* lista singoletto var
+ (lista valori) *)
+ | REFERENCE <reference> (* oggetto referenziato da
+ pattern costante *)
+ | PATTERN <pattern> (* espansione del pattern *)
| SELECT <rvar> IN <list> WHERE <bool> (* selezione *)
| EXISTS <rvar> IN <list> WHERE <bool> (* esistenziale *)
+ | LET <lvar> BE <list> IN <list> (* assegnazione a var in
+ contesto *)
| USE <list> POSITION <svar> (* unione lista backward *)
| USEDBY <list> POSITION <svar> (* unione lista forward *)
| CONTRUCTORS <list> (* unione costruttori della
lista oggetti*)
- | PATTERN <pattern> (* espansione del pattern *)
- | REFERENCE <reference> (* oggetto referenziato *)
- | INTHEORY <list> ITEMTYPE <svar> (* unione oggetti lista teorie *)
+ | INTHEORY <list> ITEMTYPE <svar> (* unione oggetti lista
+ teorie *)
| THEORYREFTO <list> (* unione teorie che fanno
riferimento a lista oggetti *)
| <list> OFTYPE <svar> (* unione oggetti in base a
- classi *)
+ classi RDF *)
| <list> OFSUPERTYPE <svar> (* unione oggetti in base a
classi e loro superclassi *)
| <list> OFSUBTYPE <svar> (* unione oggetti in base a
classi e loro sottoclassi *)
- | <rvar> (* valore della var*)
+ | <list> UNION <list> (* unione *)
+ | <list> INTERSECT <list> (* intersezione *)
+ | <list> DIFF <list> (* differenza *)
<bool> := ( <bool> ) (* parentesizzazione *)
- | <bool> AND <bool> (* congiunzione *)
- | <bool> OR <bool> (* disgiunzione *)
- | NOT <bool> (* negazione *)
| TRUE (* vero *)
| FALSE (* falso *)
+ | NOT <bool> (* negazione *)
+ | <bool> AND <bool> (* congiunzione *)
+ | <bool> OR <bool> (* disgiunzione *)
| <string> IS <string> (* case sensitive matching *)
| <list> SETEQUAL <list> (* uguaglianza tra liste *)
- | <list> SUBSET <list> (* operazione di sottoinsieme *)
-
-<pattern> := <"-quoted-constant-string> (* pattern costante *)
-<reference> := <'-quoted-constant-string> (* riferimento costante *)
-
+ | <list> SUBSET <list> (* operazione di sottoinsieme *)
+
<string> := <'-quoted-constant-string> (* costante letterale *)
- | CONCLUSION | HYPOTHESIS | BODY (* costanti simboliche *)
- | MAINCONCLUSION | MAINHYPOTHESIS
- | <rvar> (* variabile *)
+ | MAINHYPOTHESIS | HYPOTHESIS (* costanti simboliche *)
+ | MAINCONCLUSION | CONCLUSION | BODY
| <svar> (* variabile *)
+ | <rvar> (* variabile *)
| <function> <rvar> (* applicazione di funzione *)
<function> := NAME (* URIREF -> nome_oggetto *)
- | <property>
+ | <property> (* proprieta' RDF *)
-<property> := THEORY (* URIREF -> valore_Proprieta' *)
- | TITLE (* URIREF -> valore_Prop_DC *)
+<property> := THEORY (* URIREF -> valore_proprieta' *)
+ | TITLE (* URIREF -> valore_prop_DC *)
| CONTRIBUTOR
| CREATOR
| PUBLISHER
| CONTACT
| FIRSTVERSION
| MODIFIED
+ | VALUEOF <propname> (* nome_propr URIREF ->
+ valore_Proprieta' *)
| <refineprop> <property>
<refineprop> := SUB (* proprieta' e sotto-proprieta'
di *)
| SUPER (* proprieta' e super-proprieta'
di *)
+<propname> := <'-quoted-constant-string> (* costante letterale *)
+
+<pattern> := <"-quoted-constant-string> (* pattern costante *)
+<reference> := <'-quoted-constant-string> (* riferimento costante *)
-<rvar> := <not-reserved-identifier> (* variabile per risorse *)
+<rvar> := <not-reserved-identifier> (* variabile per riferimenti *)
<svar> := $ <not-reserved-identifier> (* variabile per stringhe *)
+<lvar> := % <not-reserved-identifier> (* variabile per liste *)
- () = lista vuota (?)
- le stringhe sono "case sensitive"
<!ATTLIST SortField
order %order; #IMPLIED>
- RILASSAMENTO degli operatori UNION e INTERSECT. Operatori fuzzy con
- introduzione di pesi associati ai risultati.
\ No newline at end of file
+ introduzione di pesi associati ai risultati.
+- VALUEOF restituisce il valore o, ricorsivamente sulla struttura, i valori
+ (delle proprieta' delle classi di valori) della proprieta' passatagli.
+ Problema: e' necessario gestire sia i nomi delle classi (costrutti TYPEOF)
+ sia i nomi delle proprieta' (menu a tendina di suggerimenti all'utente in
+ base agli Schemi RDF relativi ai dati).
\ No newline at end of file