]> matita.cs.unibo.it Git - helm.git/blob - mathql/grammar.txt
made executable again
[helm.git] / 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> UNION <set>                    (* unione *)
25        |  <set> INTERSECT <set>                (* intersezione *)
26        |  <set> DIFF <set>                     (* differenza *)
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
38 <bool> := ( <bool> )                           (* parentesizzazione *)
39        |  TRUE                                 (* vero *)
40        |  FALSE                                (* falso *)
41        |  NOT <bool>                           (* negazione *)
42        |  <bool> AND <bool>                    (* congiunzione *)
43        |  <bool> OR <bool>                     (* disgiunzione *)
44        |  <string-set> EQ <string-set>         (* uguaglianza tra insiemi 
45                                                   stringhe (case sensitive) *)
46        |  <string-set> SUB <string-set>        (* operazione di sottoinsieme 
47                                                   tra insiemi stringhe *)
48        |  <string-set> MEET <string-set>       (* operazione di meet tra 
49                                                   insiemi stringhe *)
50        |  EX <bool>                            (* existential on attributes
51                                                   of references *)
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-list> := <quoted-constant-string>
65                               |  <quoted-constant-string> , <quoted-constant-string-list>                                                 
66                                                    (* lista di stringhe *)
67
68 <function> := FUN                          (* funzione generale *)
69            |  <property>        
70
71 <property> := ATTRIBUTE                    (* funzione proprieta': restituisce
72                                               suoi  valori*)
73            |  SUBATTR                      (* restituisce valori proprieta' e 
74                                               sotto-proprieta' di *) 
75            |  SUPERATTR                    (* restituisce valori proprieta' e 
76                                               super-proprieta' di *)
77
78 <rvar> := @ <not-reserved-identifier>          (* variabile per riferimento *)
79 <vvar> := $ <not-reserved-identifier>          (* variabile per insiemi 
80                                                   stringhe *)
81 <svar> := % <not-reserved-identifier>          (* variabile per insiemi 
82                                                   riferimenti *)
83
84
85 - Idea di base: grammatica del linguaggio semplice e permissiva (duttile)
86 - MEET e' definito come "esiste almeno un elemento che appartiene 
87   all'interserzione tra due insiemi"
88 - le stringhe sono "case sensitive" 
89 - la funzione non definita sull'argomento restituisce la stringa nulla
90 - le <rvar> si presuppongono essere istanziate come URI references costituite
91   da un URI e da un fragment identifier opzionale complete; i riferimenti 
92   identificano risorse 
93 - Precedenza operatori:
94   NOT (+)  DIFF
95   AND      INTERSECT
96   OR  (-)  UNION
97 - L'ordinamento di default e' quello alfabetico crescente in base al nome 
98   delle rvar
99 - REF aumenta performance perche' NON accede al data base (costoso).
100 - l'argomento di PATTERN ha sintassi di una espressione regolare 
101   POSIX 1003.2-1992
102 - Possibile <function> (<quoted-constant-string>):
103   NAME (* URIREF -> nome_oggetto *)
104 - MEET aumenta performance nel caso si verifichi (a in S) oppure 
105   (b in S) = ({a,b} meet S) perche' valuta S una volta sola
106   Il MEET codifica inoltre l'esistenziale su risorse (URI) in un certo
107   insieme che soddisfa certe condizioni
108 - record <rvar>.<svar> serve per disambiguare nomi uguali di variabili
109 - Operatori (come EQ) hanno nomi abbreviati rispetto ai costrutti del 
110   linguaggio
111 - EX verfica che la sua condizione sia vera per almeno un insieme di attributi
112   associato all'URI in rvar 
113 - Possibili RELATION sono:
114   USE con attributo POSITION (riferimenti backward) e valori MAINHYPOTHESIS, 
115                     HYPOTHESIS, MAINCONCLUSION, CONCLUSION, BODY
116   USEBY con attributo POSITION (riferimenti forward) e valori MAINHYPOTHESIS, 
117                     HYPOTHESIS, MAINCONCLUSION, CONCLUSION, BODY
118   CONSTRUCTORS
119   INTHEORY con attributo ITEMTYPE (riferimenti oggetti contenuti in teorie)
120   THEORYREFTO con attributo ITEMTYPE (riferimenti teorie referenti a oggetti)
121 - <string-set> invece di <set> come argomento di <function> poiche' la REF non
122   e' piu' restrittiva su argomento/i e quindi e' inutile imporne l'uso quando
123   si passano i riferimenti alle funzioni. Con <string-set> l'utente e' libero
124   di passare direttamente le stringhe dei riferimenti.
125 - Il costrutto di ordinamento:
126   <set> SORTEDBY <function> <order>   (* unione insieme ordinato secondo
127                                          valore funzione e ordine *)
128   <order>:= DESC                      (* ordinamento decrescente *)
129          |  ASC                       (* ordinamento crescente *) 
130   perde di senso nel caso di metadati, poiche' per definizione le proprieta' 
131   in RDF possono essere ripetute quindi restituiscono (come anche le funzioni 
132   in generale) valori multipli per ogni riferimento (ambiguita' nell'ordine)
133 - Possibili proprieta' (<quoted-constant-string>):
134   le DC: TITLE, CONTRIBUTOR, CREATOR, PUBLISHER, SUBJECT, DESCRIPTION, DATE,
135   TYPE, FORMAT, IDENTIFIER, LANGUAGE, RELATION, SOURCE, COVERAGE, RIGHTS, 
136   RIGHTS; and INSTITUTION, CONTACT, FIRSTVERSION, MODIFIED, THEORY
137 - Il concetto di Classe, sottoclasse, superclasse, puo' essere visto come una
138   particolare proprieta' (type o tipo) di una risorsa, e quindi codificabile
139   da RELATION