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-path> <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> := "" (* relazione (proprieta') *)
33 | SUPER (* proprieta' e
36 <quoted-constant-string-path> := <quoted-constant-string>
37 (* relazione (proprieta') *)
38 | <quoted-constant-string> "/" <quoted-constant-string-path>
39 (* insieme di stringhe:
40 proprieta' strutturata *)
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> := ( <string-set> ) (* parentesizzazione *)
61 | {} (* insieme vuoto*)
62 | <quoted-constant-string> (* stringa singoletto *)
63 | {<quoted-constant-string-list>}(* insieme stringhe *)
64 | REFOF <set> (* insieme riferimenti *)
65 | <rvar>.<vvar> (* variabile per insieme
68 | <function> <quoted-constant-string> <string-set>
69 (* applicazione di funzione
70 specificata a riferimento
71 o insiemi di rif. o var*)
72 | <vvar> (* vvar introduced by LET *)
74 <quoted-constant-string-list> := <quoted-constant-string>
75 | <quoted-constant-string> , <quoted-constant-string-list>
76 (* lista di stringhe *)
78 <function> := FUN (* funzione generale *)
81 <property> := ATTRIBUTE <refine-op> (* funzione proprieta': restituisce
82 suoi valori (anche strutturati)
83 (e delle sotto-proprieta' o
87 <rvar> := @ <not-reserved-identifier> (* variabile per riferimento *)
88 <vvar> := $ <not-reserved-identifier> (* variabile per insiemi
90 <svar> := % <not-reserved-identifier> (* variabile per insiemi
94 - Idea di base: grammatica del linguaggio semplice e permissiva (duttile)
95 - MEET e' definito come "esiste almeno un elemento che appartiene
96 all'interserzione tra due insiemi"
97 - le stringhe sono "case sensitive"
98 - la funzione non definita sull'argomento restituisce la stringa nulla
99 - le <rvar> si presuppongono essere istanziate come URI references costituite
100 da un URI e da un fragment identifier opzionale complete; i riferimenti
102 - Precedenza operatori:
106 - L'ordinamento di default e' quello alfabetico crescente in base al nome
108 - REF aumenta performance perche' NON accede al data base (costoso).
109 - l'argomento di PATTERN ha sintassi di una espressione regolare
111 - Possibile FUN (<quoted-constant-string>):
112 NAME (* URIREF -> nome_oggetto *)
113 - MEET aumenta performance nel caso si verifichi (a in S) oppure
114 (b in S) = ({a,b} meet S) perche' valuta S una volta sola
115 Il MEET codifica inoltre l'esistenziale su risorse (URI) in un certo
116 insieme che soddisfa certe condizioni
117 - record <rvar>.<svar> serve per disambiguare nomi uguali di variabili
118 - Operatori (come EQ) hanno nomi abbreviati rispetto ai costrutti del
120 - EX verfica che la sua condizione sia vera per almeno un insieme di attributi
121 associato all'URI in rvar
122 - Possibili RELATION sono:
123 USE con attributo POSITION (riferimenti backward) e valori MAINHYPOTHESIS,
124 HYPOTHESIS, MAINCONCLUSION, CONCLUSION, BODY
125 USEBY con attributo POSITION (riferimenti forward) e valori MAINHYPOTHESIS,
126 HYPOTHESIS, MAINCONCLUSION, CONCLUSION, BODY
128 INTHEORY con attributo ITEMTYPE (riferimenti oggetti contenuti in teorie)
129 THEORYREFTO con attributo ITEMTYPE (riferimenti teorie referenti a oggetti)
130 - <string-set> invece di <set> come argomento di <function> poiche' la REF non
131 e' piu' restrittiva su argomento/i e quindi e' inutile imporne l'uso quando
132 si passano i riferimenti alle funzioni. Con <string-set> l'utente e' libero
133 di passare direttamente le stringhe dei riferimenti.
134 - Il costrutto di ordinamento:
135 <set> SORTEDBY <function> <order> (* unione insieme ordinato secondo
136 valore funzione e ordine *)
137 <order>:= DESC (* ordinamento decrescente *)
138 | ASC (* ordinamento crescente *)
139 perde di senso nel caso di metadati, poiche' per definizione le proprieta'
140 in RDF possono essere ripetute quindi restituiscono (come anche le funzioni
141 in generale) valori multipli per ogni riferimento (ambiguita' nell'ordine)
142 - Possibili proprieta' (<quoted-constant-string>):
143 le DC: TITLE, CONTRIBUTOR, CREATOR, PUBLISHER, SUBJECT, DESCRIPTION, DATE,
144 TYPE, FORMAT, IDENTIFIER, LANGUAGE, RELATION, SOURCE, COVERAGE, RIGHTS,
145 RIGHTS; and INSTITUTION, CONTACT, FIRSTVERSION, MODIFIED, THEORY
146 - Il concetto di Classe, sottoclasse, superclasse, puo' essere visto come una
147 particolare proprieta' (type o tipo) di una risorsa, e quindi codificabile