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 | RELATION <quoted-constant-string> <set> ATTR <vvar-list>
20 (* unione insieme risorse in
21 relazione specificata con le
22 risorse in set, ognuna con
24 | <set> OFTYPE <set> (* unione oggetti in base a
26 | <set> OFSUPERTYPE <set> (* unione oggetti in base a
27 classi e loro superclassi *)
28 | <set> OFSUBTYPE <set> (* unione oggetti in base a
29 classi e loro sottoclassi *)
30 | <set> UNION <set> (* unione *)
31 | <set> INTERSECT <set> (* intersezione *)
32 | <set> DIFF <set> (* differenza *)
34 <bool> := ( <bool> ) (* parentesizzazione *)
37 | NOT <bool> (* negazione *)
38 | <bool> AND <bool> (* congiunzione *)
39 | <bool> OR <bool> (* disgiunzione *)
40 | <string-set> EQ <string-set> (* uguaglianza tra insiemi
41 stringhe (case sensitive) *)
42 | <string-set> SUB <string-set> (* operazione di sottoinsieme
43 tra insiemi stringhe *)
44 | <string-set> MEET <string-set> (* operazione di meet tra
46 | EX <bool> (* existential on attributes
50 | <vvar> , <vvar-list>
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> <rvar>
60 (* applicazione di funzione
61 specificata a riferim. *)
63 <quoted-constant-string-list> := <quoted-constant-string>
64 | <quoted-constant-string> , <quoted-constant-string-list>
65 (* lista di stringhe *)
67 <function> := FUN (* funzione generale *)
70 <property> := VALUEOF (* funzione proprieta': restituisce
72 | SUBVALUE (* restituisce valori proprieta' e
73 sotto-proprieta' di *)
74 | SUPERVALUE (* restituisce valori proprieta' e
75 super-proprieta' di *)
77 <rvar> := @ <not-reserved-identifier> (* variabile per riferimento *)
78 <vvar> := $ <not-reserved-identifier> (* variabile per insiemi
80 <svar> := % <not-reserved-identifier> (* variabile per insiemi
85 - MEET e' definito come "esiste almeno un elemento che appartiene
86 all'interserzione tra due insiemi"
87 - le stringhe sono "case sensitive"
88 - la funzione non definita sull'argomento restituisce la stringa nulla
89 - le <rvar> si presuppongono essere istanziate come URI references costituite
90 da un URI e da un fragment identifier opzionale complete; i riferimenti
92 - Precedenza operatori:
96 - L'ordinamento di default e' quello alfabetico crescente in base al nome
98 - REF aumenta performance perche' NON accede al data base (costoso).
99 - l'argomento di PATTERN ha sintassi di una espressione regolare
101 - Possibile <function> (<quoted-constant-string>):
102 NAME (* URIREF -> nome_oggetto *)
103 - MEET aumenta performance nel caso si verifichi (a in S) oppure
104 (b in S) = ({a,b} meet S) perche' valuta S una volta sola
105 Il MEET codifica inoltre l'esistenziale su risorse (URI) in un certo
106 insieme che soddisfa certe condizioni
107 - record <rvar>.<svar> serve per disambiguare nomi uguali di variabili
108 - Operatori (come EQ) hanno nomi abbreviati rispetto ai costrutti del
110 - EX verfica che la sua condizione sia vera per almeno un insieme di attributi
111 associato all'URI in rvar
112 - Il costrutto di ordinamento:
113 <set> SORTEDBY <function> <order> (* unione insieme ordinato secondo
114 valore funzione e ordine *)
115 <order>:= DESC (* ordinamento decrescente *)
116 | ASC (* ordinamento crescente *)
117 perde di senso nel caso di metadati, poiche' per definizione le proprieta'
118 in RDF possono essere ripetute quindi restituiscono (come anche le funzioni
119 in generale) valori multipli per ogni riferimento (ambiguita' nell'ordine)
120 - Possibili proprieta' (<quoted-constant-string>):
121 le DC: TITLE, CONTRIBUTOR, CREATOR, PUBLISHER, SUBJECT, DESCRIPTION, DATE,
122 TYPE, FORMAT, IDENTIFIER, LANGUAGE, RELATION, SOURCE, COVERAGE, RIGHTS,
123 RIGHTS; and INSTITUTION, CONTACT, FIRSTVERSION, MODIFIED, THEORY