]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/mathql/grammar.txt
Modified Files:
[helm.git] / helm / mathql / grammar.txt
index 7bdd67c3aeec2efab71c1cde13d1859ad6fab4e5..699a6f20a3489b51d596c041c07865cf133b51c1 100644 (file)
@@ -4,53 +4,57 @@ MATHEMATICAL QUERY LANGUAGE (MathQL)
 <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
@@ -69,15 +73,22 @@ MATHEMATICAL QUERY LANGUAGE (MathQL)
           |  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" 
@@ -132,4 +143,9 @@ MATHEMATICAL QUERY LANGUAGE (MathQL)
   <!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