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> UNION <set> (* unione *)
25 | <set> INTERSECT <set> (* intersezione *)
26 | <set> DIFF <set> (* differenza *)
28 <relation> := RELATION (* relazione (proprieta') *)
29 | SUBRELATION (* proprieta' e
31 | SUPERRELATION (* proprieta' e
35 | <vvar> , <vvar-list>
38 <bool> := ( <bool> ) (* parentesizzazione *)
41 | NOT <bool> (* negazione *)
42 | <bool> AND <bool> (* congiunzione *)
43 | <bool> OR <bool> (* disgiunzione *)
44 | <string-set> EQ <string-set> (* uguaglianza tra insiemi
45 stringhe (case sensitive) *)
46 | <string-set> SUB <string-set> (* operazione di sottoinsieme
47 tra insiemi stringhe *)
48 | <string-set> MEET <string-set> (* operazione di meet tra
50 | 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-list> := <quoted-constant-string>
65 | <quoted-constant-string> , <quoted-constant-string-list>
66 (* lista di stringhe *)
68 <function> := FUN (* funzione generale *)
71 <property> := ATTRIBUTE (* funzione proprieta': restituisce
73 | SUBATTR (* restituisce valori proprieta' e
74 sotto-proprieta' di *)
75 | SUPERATTR (* restituisce valori proprieta' e
76 super-proprieta' di *)
78 <rvar> := @ <not-reserved-identifier> (* variabile per riferimento *)
79 <vvar> := $ <not-reserved-identifier> (* variabile per insiemi
81 <svar> := % <not-reserved-identifier> (* variabile per insiemi
85 - Idea di base: grammatica del linguaggio semplice e permissiva (duttile)
86 - MEET e' definito come "esiste almeno un elemento che appartiene
87 all'interserzione tra due insiemi"
88 - le stringhe sono "case sensitive"
89 - la funzione non definita sull'argomento restituisce la stringa nulla
90 - le <rvar> si presuppongono essere istanziate come URI references costituite
91 da un URI e da un fragment identifier opzionale complete; i riferimenti
93 - Precedenza operatori:
97 - L'ordinamento di default e' quello alfabetico crescente in base al nome
99 - REF aumenta performance perche' NON accede al data base (costoso).
100 - l'argomento di PATTERN ha sintassi di una espressione regolare
102 - Possibile <function> (<quoted-constant-string>):
103 NAME (* URIREF -> nome_oggetto *)
104 - MEET aumenta performance nel caso si verifichi (a in S) oppure
105 (b in S) = ({a,b} meet S) perche' valuta S una volta sola
106 Il MEET codifica inoltre l'esistenziale su risorse (URI) in un certo
107 insieme che soddisfa certe condizioni
108 - record <rvar>.<svar> serve per disambiguare nomi uguali di variabili
109 - Operatori (come EQ) hanno nomi abbreviati rispetto ai costrutti del
111 - EX verfica che la sua condizione sia vera per almeno un insieme di attributi
112 associato all'URI in rvar
113 - Possibili RELATION sono:
114 USE con attributo POSITION (riferimenti backward) e valori MAINHYPOTHESIS,
115 HYPOTHESIS, MAINCONCLUSION, CONCLUSION, BODY
116 USEBY con attributo POSITION (riferimenti forward) e valori MAINHYPOTHESIS,
117 HYPOTHESIS, MAINCONCLUSION, CONCLUSION, BODY
119 INTHEORY con attributo ITEMTYPE (riferimenti oggetti contenuti in teorie)
120 THEORYREFTO con attributo ITEMTYPE (riferimenti teorie referenti a oggetti)
121 - <string-set> invece di <set> come argomento di <function> poiche' la REF non
122 e' piu' restrittiva su argomento/i e quindi e' inutile imporne l'uso quando
123 si passano i riferimenti alle funzioni. Con <string-set> l'utente e' libero
124 di passare direttamente le stringhe dei riferimenti.
125 - Il costrutto di ordinamento:
126 <set> SORTEDBY <function> <order> (* unione insieme ordinato secondo
127 valore funzione e ordine *)
128 <order>:= DESC (* ordinamento decrescente *)
129 | ASC (* ordinamento crescente *)
130 perde di senso nel caso di metadati, poiche' per definizione le proprieta'
131 in RDF possono essere ripetute quindi restituiscono (come anche le funzioni
132 in generale) valori multipli per ogni riferimento (ambiguita' nell'ordine)
133 - Possibili proprieta' (<quoted-constant-string>):
134 le DC: TITLE, CONTRIBUTOR, CREATOR, PUBLISHER, SUBJECT, DESCRIPTION, DATE,
135 TYPE, FORMAT, IDENTIFIER, LANGUAGE, RELATION, SOURCE, COVERAGE, RIGHTS,
136 RIGHTS; and INSTITUTION, CONTACT, FIRSTVERSION, MODIFIED, THEORY
137 - Il concetto di Classe, sottoclasse, superclasse, puo' essere visto come una
138 particolare proprieta' (type o tipo) di una risorsa, e quindi codificabile