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 *)
28 <relation> := RELATION (* relazione (proprieta') *)
29 | SUBRELATION (* proprieta' e
31 | SUPERRELATION (* proprieta' e
35 | <vvar> , <vvar-list>
37 <bool> := ( <bool> ) (* parentesizzazione *)
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
49 | EX <bool> (* existential on attributes
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
59 | <function> <quoted-constant-string> <string-set>
60 (* applicazione di funzione
61 specificata a riferimento
62 o insiemi di rif. o var*)
64 <quoted-constant-string-set> := <quoted-constant-string>
65 | <quoted-constant-string> , <quoted-constant-string-set>
66 (* lista di stringhe *)
68 <function> := FUN (* funzione generale *)
70 <rvar> := @ <not-reserved-identifier> (* variabile per riferimento *)
71 <vvar> := $ <not-reserved-identifier> (* variabile per insiemi
73 <svar> := % <not-reserved-identifier> (* variabile per insiemi
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
84 - Precedenza operatori:
88 - L'ordinamento di default e' quello alfabetico crescente in base al nome
90 - REF aumenta performance perche' NON accede al data base (costoso).
91 - L'argomento di PATTERN ha sintassi di una espressione regolare
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
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
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.