]> matita.cs.unibo.it Git - helm.git/blob - helm/mathql/grammar.txt
Modified Files:
[helm.git] / helm / mathql / grammar.txt
1 GRAMMATICA PER QUERY SU DOCUMENTI MATEMATICI
2 MATHEMATICAL QUERY LANGUAGE (MathQL) 
3
4 <query> := <set>                               (* clausola iniziale *)
5
6 <set> :=  ( <set> )                            (* parentesizzazione *)
7        |  <rvar>                               (* var per insieme singoletto 
8                                                   di una risorsa *)
9        |  <svar>                               (* var per insieme di risorse
10                                                   (insieme di valori) *)
11        |  REF <string-set>                     (* oggetto/i referenziato/i da 
12                                                   URI esplicita/e *)
13        |  PATTERN <string-set>                 (* oggetto/i referenziato/i da 
14                                                   URI ottenute da espansione 
15                                                   del pattern *)
16        |  SELECT <rvar> IN <set> WHERE <bool>  (* selezione *)
17        |  LET <svar> BE <set> IN <set>         (* assegnazione a set-var in 
18                                                   contesto *)
19        |  RELATION <quoted-constant-string> <set> ATTR <vvar-list>           
20                                                (* unione insieme risorse in
21                                                   relazione specificata con le
22                                                   risorse in set, ognuna con 
23                                                   attributi (ATTR) *)
24        |  <set> OFTYPE <set>                   (* unione oggetti in base a 
25                                                   classi RDF *)
26        |  <set> OFSUPERTYPE <set>              (* unione oggetti in base a 
27                                                   classi e loro superclassi *)
28        |  <set> OFSUBTYPE <set>                (* unione oggetti in base a 
29                                                   classi e loro sottoclassi *)   
30        |  <set> UNION <set>                    (* unione *)
31        |  <set> INTERSECT <set>                (* intersezione *)
32        |  <set> DIFF <set>                     (* differenza *)
33
34 <bool> := ( <bool> )                           (* parentesizzazione *)
35        |  TRUE                                 (* vero *)
36        |  FALSE                                (* falso *)
37        |  NOT <bool>                           (* negazione *)
38        |  <bool> AND <bool>                    (* congiunzione *)
39        |  <bool> OR <bool>                     (* disgiunzione *)
40        |  <string-set> EQ <string-set>         (* uguaglianza tra insiemi 
41                                                   stringhe (case sensitive) *)
42        |  <string-set> SUB <string-set>        (* operazione di sottoinsieme 
43                                                   tra insiemi stringhe *)
44        |  <string-set> MEET <string-set>       (* operazione di meet tra 
45                                                   insiemi stringhe *)
46        |  EX <bool>                            (* existential on attributes
47                                                   of references *)
48
49 <vvar-list> := <vvar>
50             |  <vvar> , <vvar-list>
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> <rvar> 
60                                                    (* applicazione di funzione
61                                                       specificata a riferim. *)
62
63 <quoted-constant-string-list> := <quoted-constant-string>
64                               |  <quoted-constant-string> , <quoted-constant-string-list>                                                 
65                                                    (* lista di stringhe *)
66
67 <function> := FUN                          (* funzione generale *)
68            |  <property>        
69
70 <property> := VALUEOF                      (* funzione proprieta': restituisce
71                                               suoi  valori*)
72            |  SUBVALUE                     (* restituisce valori proprieta' e 
73                                               sotto-proprieta' di *) 
74            |  SUPERVALUE                   (* restituisce valori proprieta' e 
75                                               super-proprieta' di *)
76
77 <rvar> := @ <not-reserved-identifier>          (* variabile per riferimento *)
78 <vvar> := $ <not-reserved-identifier>          (* variabile per insiemi 
79                                                   stringhe *)
80 <svar> := % <not-reserved-identifier>          (* variabile per insiemi 
81                                                   riferimenti *)
82
83
84
85 - MEET e' definito come "esiste almeno un elemento che appartiene 
86   all'interserzione tra due insiemi"
87 - le stringhe sono "case sensitive" 
88 - la funzione non definita sull'argomento restituisce la stringa nulla
89 - le <rvar> si presuppongono essere istanziate come URI references costituite
90   da un URI e da un fragment identifier opzionale complete; i riferimenti 
91   identificano risorse 
92 - Precedenza operatori:
93   NOT (+)  DIFF
94   AND      INTERSECT
95   OR  (-)  UNION
96 - L'ordinamento di default e' quello alfabetico crescente in base al nome 
97   delle rvar
98 - REF aumenta performance perche' NON accede al data base (costoso).
99 - l'argomento di PATTERN ha sintassi di una espressione regolare 
100   POSIX 1003.2-1992
101 - Possibile <function> (<quoted-constant-string>):
102   NAME (* URIREF -> nome_oggetto *)
103 - MEET aumenta performance nel caso si verifichi (a in S) oppure 
104   (b in S) = ({a,b} meet S) perche' valuta S una volta sola
105   Il MEET codifica inoltre l'esistenziale su risorse (URI) in un certo
106   insieme che soddisfa certe condizioni
107 - record <rvar>.<svar> serve per disambiguare nomi uguali di variabili
108 - Operatori (come EQ) hanno nomi abbreviati rispetto ai costrutti del 
109   linguaggio
110 - EX verfica che la sua condizione sia vera per almeno un insieme di attributi
111   associato all'URI in rvar 
112 - Il costrutto di ordinamento:
113   <set> SORTEDBY <function> <order>   (* unione insieme ordinato secondo
114                                          valore funzione e ordine *)
115   <order>:= DESC                      (* ordinamento decrescente *)
116          |  ASC                       (* ordinamento crescente *) 
117   perde di senso nel caso di metadati, poiche' per definizione le proprieta' 
118   in RDF possono essere ripetute quindi restituiscono (come anche le funzioni 
119   in generale) valori multipli per ogni riferimento (ambiguita' nell'ordine)
120 - Possibili proprieta' (<quoted-constant-string>):
121   le DC: TITLE, CONTRIBUTOR, CREATOR, PUBLISHER, SUBJECT, DESCRIPTION, DATE,
122   TYPE, FORMAT, IDENTIFIER, LANGUAGE, RELATION, SOURCE, COVERAGE, RIGHTS, 
123   RIGHTS; and INSTITUTION, CONTACT, FIRSTVERSION, MODIFIED, THEORY
124