]> matita.cs.unibo.it Git - helm.git/blob - helm/mathql/core_grammar.txt
commit of galax mathql interpreter
[helm.git] / helm / mathql / core_grammar.txt
1 GRAMMATICA PER QUERY SU DOCUMENTI MATEMATICI
2         VERSIONE IMPLEMENTATA
3 MATHEMATICAL QUERY LANGUAGE (MathQL) 
4
5 <query> := <set>                               (* clausola iniziale *)
6
7 <set> :=  ( <set> )                            (* parentesizzazione *)
8        |  <rvar>                               (* var per insieme singoletto 
9                                                   di una risorsa *)
10        |  <svar>                               (* var per insieme di risorse
11                                                   (insieme di valori) *)
12        |  REF <string-set>                     (* oggetto/i referenziato/i da 
13                                                   URI esplicita/e *)
14        |  PATTERN <string-set>                 (* oggetto/i referenziato/i da 
15                                                   URI ottenute da espansione 
16                                                   del pattern *)
17        |  SELECT <rvar> IN <set> WHERE <bool>  (* selezione *)
18        |  LET <svar> BE <set> IN <set>         (* assegnazione a set-var in 
19                                                   contesto *)
20        |  <relation> <quoted-constant-string> <set> ATTR <vvar-list>           
21                                                (* unione insieme risorse in
22                                                   relazione specificata con le
23                                                   risorse in set, ognuna con 
24                                                   attributi (ATTR) *)
25        |  <set> UNION <set>                    (* unione *)
26        |  <set> INTERSECT <set>                (* intersezione *)
27
28 <relation> := RELATION                         (* relazione (proprieta') *)
29            |  SUBRELATION                      (* proprieta' e 
30                                                   sotto-proprieta' *)
31            |  SUPERRELATION                    (* proprieta' e 
32                                                   super-proprieta' *)
33
34 <vvar-list> := <vvar>
35             |  <vvar> , <vvar-list>
36
37 <bool> := ( <bool> )                           (* parentesizzazione *)
38        |  TRUE                                 (* vero *)
39        |  FALSE                                (* falso *)
40        |  NOT <bool>                           (* negazione *)
41        |  <bool> AND <bool>                    (* congiunzione *)
42        |  <bool> OR <bool>                     (* disgiunzione *)
43        |  <string-set> EQ <string-set>         (* uguaglianza tra insiemi 
44                                                   stringhe (case sensitive) *)
45        |  <string-set> SUB <string-set>        (* operazione di sottoinsieme 
46                                                   tra insiemi stringhe *)
47        |  <string-set> MEET <string-set>       (* operazione di meet tra 
48                                                   insiemi stringhe *)
49        |  EX <bool>                            (* existential on attributes
50                                                   of references *)
51
52 <string-set> := {}                                 (* insieme vuoto*)
53              |  <quoted-constant-string-set>       (* stringa singoletto *)
54              |  {<quoted-constant-string-set>}     (* insieme stringhe *)
55              |  REFOF <set>                        (* insieme riferimenti *)
56              |  <rvar>.<vvar>                      (* variabile per insieme
57                                                       stringhe, relativa a 
58                                                       riferimento *)
59              |  <function> <quoted-constant-string> <string-set> 
60                                                    (* applicazione di funzione
61                                                       specificata a riferimento
62                                                       o insiemi di rif. o var*)
63
64 <quoted-constant-string-set> := <quoted-constant-string>
65                              |  <quoted-constant-string> , <quoted-constant-string-set>                                           
66                                                    (* lista di stringhe *)
67
68 <function> := FUN                                  (* funzione generale *)
69
70 <rvar> := @ <not-reserved-identifier>          (* variabile per riferimento *)
71 <vvar> := $ <not-reserved-identifier>          (* variabile per insiemi 
72                                                   stringhe *)
73 <svar> := % <not-reserved-identifier>          (* variabile per insiemi 
74                                                   riferimenti *)
75
76
77 - MEET e' definito come "esiste almeno un elemento che appartiene 
78   all'interserzione tra due insiemi"
79 - Le stringhe sono "case sensitive" 
80 - La funzione non definita sull'argomento restituisce la stringa nulla
81 - Le <rvar> si presuppongono essere istanziate come URI references costituite
82   da un URI e da un fragment identifier opzionale complete; i riferimenti 
83   identificano risorse 
84 - Precedenza operatori:
85   NOT (+)  DIFF
86   AND      INTERSECT
87   OR  (-)  UNION
88 - L'ordinamento di default e' quello alfabetico crescente in base al nome 
89   delle rvar
90 - REF aumenta performance perche' NON accede al data base (costoso).
91 - L'argomento di PATTERN ha sintassi di una espressione regolare 
92   POSIX 1003.2-1992
93 - Possibili FUN (<quoted-constant-string>):
94   NAME (* URIREF -> nome_oggetto *)
95 - MEET aumenta performance nel caso si verifichi (a in S) oppure 
96   (b in S) = ({a,b} meet S) perche' valuta S una volta sola
97 - Record <rvar>.<svar> serve per disambiguare nomi uguali di variabili
98 - Operatori (come EQ) hanno nomi abbreviati rispetto ai costrutti del 
99   linguaggio
100 - EX verfica che la sua condizione sia vera per almeno un insieme di attributi
101   associato all'URI in rvar
102 - Possibili RELATION sono:
103   USE con attributo POSITION (riferimenti backward) e valori MAINHYPOTHESIS, 
104                     HYPOTHESIS, MAINCONCLUSION, CONCLUSION, BODY
105   USEBY con attributo POSITION (riferimenti forward) e valori MAINHYPOTHESIS, 
106                     HYPOTHESIS, MAINCONCLUSION, CONCLUSION, BODY
107   CONSTRUCTORS
108   INTHEORY con attributo ITEMTYPE (riferimenti oggetti contenuti in teorie)
109   THEORYREFTO con attributo ITEMTYPE (riferimenti teorie referenti a oggetti)
110 - <string-set> invece di <set> come argomento di <function> poiche' la REF non
111   e' piu' restrittiva su argomento/i e quindi e' inutile imporne l'uso quando
112   si passano i riferimenti alle funzioni. Con <string-set> l'utente e' libero
113   di passare direttamente le stringhe dei riferimenti.