]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/mathql/grammar.txt
ocaml 3.09 transition
[helm.git] / helm / mathql / grammar.txt
index 48d3a63836fbefbaf6a1b4fc4a267293a929d5ea..5622761a3381db959570f04bbd778f456bc1d31f 100644 (file)
@@ -16,21 +16,33 @@ MATHEMATICAL QUERY LANGUAGE (MathQL)
        |  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> OFTYPE <set>                  (* unione oggetti in base a 
-                                                  classi RDF *)
-       |  <set> OFSUPERTYPE <set>             (* unione oggetti in base a 
-                                                  classi e loro superclassi *)
-       |  <set> OFSUBTYPE <set>               (* unione oggetti in base a 
-                                                  classi e loro sottoclassi *)   
        |  <set> UNION <set>                    (* unione *)
        |  <set> INTERSECT <set>                (* intersezione *)
        |  <set> DIFF <set>                     (* differenza *)
 
+<refine_op> := ""                             (* relazione (proprieta') *)
+           |  SUB                             (* proprieta' e 
+                                                 sotto-proprieta' *)
+           |  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>
+
+
 <bool> := ( <bool> )                           (* parentesizzazione *)
        |  TRUE                                 (* vero *)
        |  FALSE                                (* falso *)
@@ -45,20 +57,19 @@ MATHEMATICAL QUERY LANGUAGE (MathQL)
                                                  insiemi stringhe *)
        |  EX <bool>                           (* existential on attributes
                                                  of references *)
-
-<vvar-list> := <vvar>
-            |  <vvar> , <vvar-list>
-
-<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 *)
-            |  <function> <quoted-constant-string> <rvar> 
-                                                  (* applicazione di funzione
-                                                     specificata a riferim. *)
+<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*)
+             |  <vvar>                        (* vvar introduced by LET *)
 
 <quoted-constant-string-list> := <quoted-constant-string>
                              |  <quoted-constant-string> , <quoted-constant-string-list>                                                 
@@ -67,12 +78,11 @@ MATHEMATICAL QUERY LANGUAGE (MathQL)
 <function> := FUN                         (* funzione generale *)
           |  <property>        
 
-<property> := VALUEOF                     (* funzione proprieta': restituisce
-                                             suoi  valori*)
-           |  SUBVALUE                    (* restituisce valori proprieta' e 
-                                             sotto-proprieta' di *) 
-           |  SUPERVALUE                  (* 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 
@@ -81,7 +91,7 @@ MATHEMATICAL QUERY LANGUAGE (MathQL)
                                                  riferimenti *)
 
 
-
+- Idea di base: grammatica del linguaggio semplice e permissiva (duttile)
 - MEET e' definito come "esiste almeno un elemento che appartiene 
   all'interserzione tra due insiemi"
 - le stringhe sono "case sensitive" 
@@ -98,7 +108,7 @@ MATHEMATICAL QUERY LANGUAGE (MathQL)
 - 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
@@ -109,6 +119,18 @@ MATHEMATICAL QUERY LANGUAGE (MathQL)
   linguaggio
 - EX verfica che la sua condizione sia vera per almeno un insieme di attributi
   associato all'URI in rvar 
+- Possibili RELATION sono:
+  USE con attributo POSITION (riferimenti backward) e valori MAINHYPOTHESIS, 
+                   HYPOTHESIS, MAINCONCLUSION, CONCLUSION, BODY
+  USEBY con attributo POSITION (riferimenti forward) e valori MAINHYPOTHESIS, 
+                   HYPOTHESIS, MAINCONCLUSION, CONCLUSION, BODY
+  CONSTRUCTORS
+  INTHEORY con attributo ITEMTYPE (riferimenti oggetti contenuti in teorie)
+  THEORYREFTO con attributo ITEMTYPE (riferimenti teorie referenti a oggetti)
+- <string-set> invece di <set> come argomento di <function> poiche' la REF non
+  e' piu' restrittiva su argomento/i e quindi e' inutile imporne l'uso quando
+  si passano i riferimenti alle funzioni. Con <string-set> l'utente e' libero
+  di passare direttamente le stringhe dei riferimenti.
 - Il costrutto di ordinamento:
   <set> SORTEDBY <function> <order>   (* unione insieme ordinato secondo
                                          valore funzione e ordine *)
@@ -121,4 +143,6 @@ MATHEMATICAL QUERY LANGUAGE (MathQL)
   le DC: TITLE, CONTRIBUTOR, CREATOR, PUBLISHER, SUBJECT, DESCRIPTION, DATE,
   TYPE, FORMAT, IDENTIFIER, LANGUAGE, RELATION, SOURCE, COVERAGE, RIGHTS, 
   RIGHTS; and INSTITUTION, CONTACT, FIRSTVERSION, MODIFIED, THEORY
-
+- Il concetto di Classe, sottoclasse, superclasse, puo' essere visto come una
+  particolare proprieta' (type o tipo) di una risorsa, e quindi codificabile
+  da RELATION
\ No newline at end of file