]> matita.cs.unibo.it Git - helm.git/blob - helm/mathql/core_grammar.txt
Modified Files:
[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 <vvar-list> := <vvar>
29             |  <vvar> , <vvar-list>
30
31 <bool> := ( <bool> )                           (* parentesizzazione *)
32        |  TRUE                                 (* vero *)
33        |  FALSE                                (* falso *)
34        |  NOT <bool>                           (* negazione *)
35        |  <bool> AND <bool>                    (* congiunzione *)
36        |  <bool> OR <bool>                     (* disgiunzione *)
37        |  <string-set> EQ <string-set>         (* uguaglianza tra insiemi 
38                                                   stringhe (case sensitive) *)
39        |  <string-set> SUB <string-set>        (* operazione di sottoinsieme 
40                                                   tra insiemi stringhe *)
41        |  <string-set> MEET <string-set>       (* operazione di meet tra 
42                                                   insiemi stringhe *)
43        |  EX <bool>                            (* existential on attributes
44                                                   of references *)
45
46 <string-set> := {}                                 (* insieme vuoto*)
47              |  <quoted-constant-string-set>       (* stringa singoletto *)
48              |  {<quoted-constant-string-set>}     (* insieme stringhe *)
49              |  REFOF <set>                        (* insieme riferimenti *)
50              |  <rvar>.<vvar>                      (* variabile per insieme
51                                                       stringhe, relativa a 
52                                                       riferimento *)
53              |  <function> <quoted-constant-string> <rvar> 
54                                                    (* applicazione di funzione
55                                                       specificata a riferim. *)
56
57 <quoted-constant-string-set> := <quoted-constant-string>
58                              |  <quoted-constant-string> , <quoted-constant-string-set>                                           
59                                                    (* lista di stringhe *)
60
61 <function> := FUN                                  (* funzione generale *)
62
63 <rvar> := @ <not-reserved-identifier>          (* variabile per riferimento *)
64 <vvar> := $ <not-reserved-identifier>          (* variabile per insiemi 
65                                                   stringhe *)
66 <svar> := % <not-reserved-identifier>          (* variabile per insiemi 
67                                                   riferimenti *)
68
69
70 - MEET e' definito come "esiste almeno un elemento che appartiene 
71   all'interserzione tra due insiemi"
72 - Le stringhe sono "case sensitive" 
73 - La funzione non definita sull'argomento restituisce la stringa nulla
74 - Le <rvar> si presuppongono essere istanziate come URI references costituite
75   da un URI e da un fragment identifier opzionale complete; i riferimenti 
76   identificano risorse 
77 - Precedenza operatori:
78   NOT (+)  DIFF
79   AND      INTERSECT
80   OR  (-)  UNION
81 - L'ordinamento di default e' quello alfabetico crescente in base al nome 
82   delle rvar
83 - REF aumenta performance perche' NON accede al data base (costoso).
84 - L'argomento di PATTERN ha sintassi di una espressione regolare 
85   POSIX 1003.2-1992
86 - Possibili FUN (<quoted-constant-string>):
87   NAME (* URIREF -> nome_oggetto *)
88 - MEET aumenta performance nel caso si verifichi (a in S) oppure 
89   (b in S) = ({a,b} meet S) perche' valuta S una volta sola
90 - Record <rvar>.<svar> serve per disambiguare nomi uguali di variabili
91 - Operatori (come EQ) hanno nomi abbreviati rispetto ai costrutti del 
92   linguaggio
93 - EX verfica che la sua condizione sia vera per almeno un insieme di attributi
94   associato all'URI in rvar
95 - Possibili RELATION sono:
96   USE con attributo POSITION (riferimenti backward) e valori MAINHYPOTHESIS, 
97                     HYPOTHESIS, MAINCONCLUSION, CONCLUSION, BODY
98   USEBY con attributo POSITION (riferimenti forward) e valori MAINHYPOTHESIS, 
99                     HYPOTHESIS, MAINCONCLUSION, CONCLUSION, BODY
100   CONSTRUCTORS
101   INTHEORY con attributo ITEMTYPE (riferimenti oggetti contenuti in teorie)
102   THEORYREFTO con attributo ITEMTYPE (riferimenti teorie referenti a oggetti)