1 GRAMMATICA PER QUERY SU DOCUMENTI MATEMATICI
3 MATHEMATICAL QUERY LANGUAGE (MathQL)
5 <query> := <set> (* clausola iniziale *)
7 <set> := ( <set> ) (* parentesizzazione *)
8 | <rvar> (* var per insieme singoletto
10 | <svar> (* var per insieme di risorse
11 (insieme di valori) *)
12 | REF <string-set> (* oggetto/i referenziato/i da
14 | PATTERN <string-set> (* oggetto/i referenziato/i da
15 URI ottenute da espansione
17 | SELECT <rvar> IN <set> WHERE <bool> (* selezione *)
18 | LET <svar> BE <set> IN <set> (* assegnazione a set-var in
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
25 | <set> UNION <set> (* unione *)
26 | <set> INTERSECT <set> (* intersezione *)
29 | <vvar> , <vvar-list>
31 <bool> := ( <bool> ) (* parentesizzazione *)
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
43 | EX <bool> (* existential on attributes
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
53 | <function> <quoted-constant-string> <rvar>
54 (* applicazione di funzione
55 specificata a riferim. *)
57 <quoted-constant-string-set> := <quoted-constant-string>
58 | <quoted-constant-string> , <quoted-constant-string-set>
59 (* lista di stringhe *)
61 <function> := FUN (* funzione generale *)
63 <rvar> := @ <not-reserved-identifier> (* variabile per riferimento *)
64 <vvar> := $ <not-reserved-identifier> (* variabile per insiemi
66 <svar> := % <not-reserved-identifier> (* variabile per insiemi
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
77 - Precedenza operatori:
81 - L'ordinamento di default e' quello alfabetico crescente in base al nome
83 - REF aumenta performance perche' NON accede al data base (costoso).
84 - L'argomento di PATTERN ha sintassi di una espressione regolare
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
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
101 INTHEORY con attributo ITEMTYPE (riferimenti oggetti contenuti in teorie)
102 THEORYREFTO con attributo ITEMTYPE (riferimenti teorie referenti a oggetti)