1 GRAMMATICA PER QUERY SU DOCUMENTI MATEMATICI
2 MATHEMATICAL QUERY LANGUAGE (MathQL)
4 <query> := <list> (* clausola iniziale *)
6 <list> := ( <list> ) (* parentesizazione *)
7 | <list> UNION <list> (* unione *)
8 | <list> INTERSECT <list> (* intersezione *)
9 | <list> DIFF <list> (* differenza *)
10 | SELECT <rvar> IN <list> WHERE <bool> (* selezione *)
11 | EXISTS <rvar> IN <list> WHERE <bool> (* esistenziale *)
12 | USE <list> POSITION <svar> (* unione lista backward *)
13 | USEDBY <list> POSITION <svar> (* unione lista forward *)
14 | CONTRUCTORS <list> (* unione costruttori della
16 | PATTERN <pattern> (* espansione del pattern *)
17 | REFERENCE <reference> (* oggetto referenziato *)
18 | INTHEORY <list> ITEMTYPE <svar> (* unione oggetti lista teorie *)
19 | THEORYREFTO <list> (* unione teorie che fanno
20 riferimento a lista oggetti *)
21 | <list> OFTYPE <svar> (* unione oggetti in base a
23 | <list> OFSUPERTYPE <svar> (* unione oggetti in base a
24 classi e loro superclassi *)
25 | <list> OFSUBTYPE <svar> (* unione oggetti in base a
26 classi e loro sottoclassi *)
27 | <rvar> (* valore della var*)
29 <bool> := ( <bool> ) (* parentesizzazione *)
30 | <bool> AND <bool> (* congiunzione *)
31 | <bool> OR <bool> (* disgiunzione *)
32 | NOT <bool> (* negazione *)
35 | <string> IS <string> (* case sensitive matching *)
36 | <list> SETEQUAL <list> (* uguaglianza tra liste *)
37 | <list> SUBSET <list> (* operazione di sottoinsieme *)
39 <pattern> := <"-quoted-constant-string> (* pattern costante *)
40 <reference> := <'-quoted-constant-string> (* riferimento costante *)
42 <string> := <'-quoted-constant-string> (* costante letterale *)
43 | CONCLUSION | HYPOTHESIS | BODY (* costanti simboliche *)
44 | MAINCONCLUSION | MAINHYPOTHESIS
45 | <rvar> (* variabile *)
46 | <svar> (* variabile *)
47 | <function> <rvar> (* applicazione di funzione *)
49 <function> := NAME (* URIREF -> nome_oggetto *)
52 <property> := THEORY (* URIREF -> valore_Proprieta' *)
53 | TITLE (* URIREF -> valore_Prop_DC *)
72 | <refineprop> <property>
74 <refineprop> := SUB (* proprieta' e sotto-proprieta'
76 | SUPER (* proprieta' e super-proprieta'
79 <rvar> := <not-reserved-identifier> (* variabile per risorse *)
80 <svar> := $ <not-reserved-identifier> (* variabile per stringhe *)
82 - () = lista vuota (?)
83 - le stringhe sono "case sensitive"
84 - la funzione non definita sull'argomento restituisce la stringa nulla
85 - le <rvar> si presuppongono essere istanziate come URI references costituite
86 da un URI e da un fragment identifier opzionale complete; i riferimenti
88 - ogni binding lega una variabile libera (nuova)
89 - Precedenza operatori:
93 - Possibili tipi di RELATION e DEPENDENCE sono rappresentati dalle loro
95 - FUTURO: thesauri di parole e sinonimi per ricerche testuali, ordinamenti sui
96 risultati, caratteri jolly. Una volta reperito l'oggetto si possono
97 visualizzare le info associate.
98 - FUTURO: in output numeri ad esempio a fini statistici, aggiungendo anche
99 operatori aritmetici e di confronto (< = >). Es. Quante proofs di un certo
101 - L'ordinamento di default e' quello alfabetico crescente in base al nome
104 Contiene un'espressione regolare per selezionare delle "reference"
105 (cioe` delle uri eventualmente seguite da un fragment identifier)
106 L'espressione regolare contiene i seguenti costrutti:
108 costrutto semanticamente fa match con
109 ? un singolo carattere diverso da / # :
110 * la piu' lunga sottostringa che non contiene / # :
111 ** la piu' lunga sottostringa che non contiene # :
112 altro carattere solo se' stesso
114 costrutto puo' appareire in
117 ** "body" e "fragment"
118 altro carattere dovunque
120 "body" parte compresa fra le occorrenze di ":/" e "#1" escluse
121 "fragment" parte successiva all'occorrenza "#1"
122 - FUTURO: operatore di ordinamento sul risultato finale della query.
123 <query> SORTEDBY <order> <function> (* unione lista ordinata secondo
124 ordine e valore funzione *)
125 <order> := DESC (* ordinamento decrescente *)
126 | ASC (* ordinamento crescente *)
128 <!ENTITY % order '(ascendant|descendant)'>
129 <!ELEMENT Query %queryexpr;>
130 <!ELEMENT SortBy (Query, SortField)>
131 <!ELEMENT SortField %functexpr;>
133 order %order; #IMPLIED>
134 - RILASSAMENTO degli operatori UNION e INTERSECT. Operatori fuzzy con
135 introduzione di pesi associati ai risultati.