1 GRAMMATICA PER QUERY SU DOCUMENTI MATEMATICI
2 MATHEMATICAL QUERY LANGUAGE (MathQL)
4 <query> := <set> (* clausola iniziale *)
6 <set> := ( <set> ) (* parentesizzazione *)
7 | <rvar> (* var per insieme singoletto
9 | <svar> (* var per insieme di risorse
10 (insieme di valori) *)
11 | REF <string-set> (* oggetto/i referenziato/i da
13 | PATTERN <string-set> (* oggetto/i referenziato/i da
14 URI ottenute da espansione
16 | SELECT <rvar> IN <set> WHERE <bool> (* selezione *)
17 | LET <svar> BE <set> IN <set> (* assegnazione a set-var in
19 | LET <vvar> BE <string-set> IN <set> (* assegnamento a value-var
21 | RELATION <refine_op> <quoted-constant-string> <set> ATTR <vvar-list>
22 (* unione insieme risorse in
23 relazione specificata con le
24 risorse in set, ognuna con
26 | <set> UNION <set> (* unione *)
27 | <set> INTERSECT <set> (* intersezione *)
28 | <set> DIFF <set> (* differenza *)
30 <refine_op> := <quoted-constant-string-set> (* relazione (proprieta')
34 | SUPER (* proprieta' e
37 <quoted-constant-string-set> := ""
38 | <quoted-constant-string>
39 | <quoted-constant-string> <quoted-constant-string-set>
40 (* insieme di stringhe *)
43 | <vvar> , <vvar-list>
46 <bool> := ( <bool> ) (* parentesizzazione *)
49 | NOT <bool> (* negazione *)
50 | <bool> AND <bool> (* congiunzione *)
51 | <bool> OR <bool> (* disgiunzione *)
52 | <string-set> EQ <string-set> (* uguaglianza tra insiemi
53 stringhe (case sensitive) *)
54 | <string-set> SUB <string-set> (* operazione di sottoinsieme
55 tra insiemi stringhe *)
56 | <string-set> MEET <string-set> (* operazione di meet tra
58 | EX <bool> (* existential on attributes
60 <string-set> := {} (* insieme vuoto*)
61 | <quoted-constant-string> (* stringa singoletto *)
62 | {<quoted-constant-string-list>}(* insieme stringhe *)
63 | REFOF <set> (* insieme riferimenti *)
64 | <rvar>.<vvar> (* variabile per insieme
67 | <function> <quoted-constant-string> <string-set>
68 (* applicazione di funzione
69 specificata a riferimento
70 o insiemi di rif. o var*)
71 | <vvar> (* vvar introduced by LET *)
73 <quoted-constant-string-list> := <quoted-constant-string>
74 | <quoted-constant-string> , <quoted-constant-string-list>
75 (* lista di stringhe *)
77 <function> := FUN (* funzione generale *)
80 <property> := ATTRIBUTE <refine-op> (* funzione proprieta': restituisce
81 suoi valori (anche strutturati)
82 (e delle sotto-proprieta' o
86 <rvar> := @ <not-reserved-identifier> (* variabile per riferimento *)
87 <vvar> := $ <not-reserved-identifier> (* variabile per insiemi
89 <svar> := % <not-reserved-identifier> (* variabile per insiemi
93 - Idea di base: grammatica del linguaggio semplice e permissiva (duttile)
94 - MEET e' definito come "esiste almeno un elemento che appartiene
95 all'interserzione tra due insiemi"
96 - le stringhe sono "case sensitive"
97 - la funzione non definita sull'argomento restituisce la stringa nulla
98 - le <rvar> si presuppongono essere istanziate come URI references costituite
99 da un URI e da un fragment identifier opzionale complete; i riferimenti
101 - Precedenza operatori:
105 - L'ordinamento di default e' quello alfabetico crescente in base al nome
107 - REF aumenta performance perche' NON accede al data base (costoso).
108 - l'argomento di PATTERN ha sintassi di una espressione regolare
110 - Possibile FUN (<quoted-constant-string>):
111 NAME (* URIREF -> nome_oggetto *)
112 - MEET aumenta performance nel caso si verifichi (a in S) oppure
113 (b in S) = ({a,b} meet S) perche' valuta S una volta sola
114 Il MEET codifica inoltre l'esistenziale su risorse (URI) in un certo
115 insieme che soddisfa certe condizioni
116 - record <rvar>.<svar> serve per disambiguare nomi uguali di variabili
117 - Operatori (come EQ) hanno nomi abbreviati rispetto ai costrutti del
119 - EX verfica che la sua condizione sia vera per almeno un insieme di attributi
120 associato all'URI in rvar
121 - Possibili RELATION sono:
122 USE con attributo POSITION (riferimenti backward) e valori MAINHYPOTHESIS,
123 HYPOTHESIS, MAINCONCLUSION, CONCLUSION, BODY
124 USEBY con attributo POSITION (riferimenti forward) e valori MAINHYPOTHESIS,
125 HYPOTHESIS, MAINCONCLUSION, CONCLUSION, BODY
127 INTHEORY con attributo ITEMTYPE (riferimenti oggetti contenuti in teorie)
128 THEORYREFTO con attributo ITEMTYPE (riferimenti teorie referenti a oggetti)
129 - <string-set> invece di <set> come argomento di <function> poiche' la REF non
130 e' piu' restrittiva su argomento/i e quindi e' inutile imporne l'uso quando
131 si passano i riferimenti alle funzioni. Con <string-set> l'utente e' libero
132 di passare direttamente le stringhe dei riferimenti.
133 - Il costrutto di ordinamento:
134 <set> SORTEDBY <function> <order> (* unione insieme ordinato secondo
135 valore funzione e ordine *)
136 <order>:= DESC (* ordinamento decrescente *)
137 | ASC (* ordinamento crescente *)
138 perde di senso nel caso di metadati, poiche' per definizione le proprieta'
139 in RDF possono essere ripetute quindi restituiscono (come anche le funzioni
140 in generale) valori multipli per ogni riferimento (ambiguita' nell'ordine)
141 - Possibili proprieta' (<quoted-constant-string>):
142 le DC: TITLE, CONTRIBUTOR, CREATOR, PUBLISHER, SUBJECT, DESCRIPTION, DATE,
143 TYPE, FORMAT, IDENTIFIER, LANGUAGE, RELATION, SOURCE, COVERAGE, RIGHTS,
144 RIGHTS; and INSTITUTION, CONTACT, FIRSTVERSION, MODIFIED, THEORY
145 - Il concetto di Classe, sottoclasse, superclasse, puo' essere visto come una
146 particolare proprieta' (type o tipo) di una risorsa, e quindi codificabile