]> matita.cs.unibo.it Git - helm.git/blob - helm/mathql/grammar.txt
dded semantic notes on <pattern>
[helm.git] / helm / mathql / grammar.txt
1 GRAMMATICA PER QUERY SU DOCUMENTI MATEMATICI
2 MATHEMATICAL QUERY LANGUAGE (MathQL) 
3
4 <query> := <list>                              (* clausola iniziale *)
5
6 <list> := ( <list> )                           (* parentesizazione *)
7        |  <list> UNION <list>                  (* unione *)
8        |  <list> INTERSECT <list>              (* intersezione *)
9        |  <list> DIFF <list>                   (* differenza *)
10        |  <list> SORTEDBY <order> <function>   (* unione lista ordinata secondo
11                                                   ordine e valore funzione *)
12        |  SELECT <rvar> IN <list> WHERE <bool> (* selezione *)
13        |  EXISTS <rvar> IN <list> WHERE <bool> (* esistenziale *)
14        |  USE <list> POSITION <svar>           (* unione lista backward *)
15        |  USEDBY <list> POSITION <svar>        (* unione lista forward *)
16        |  CONTRUCTORS <list>                   (* unione costruttori della 
17                                                   lista oggetti*)
18        |  PATTERN <pattern>                    (* espansione del pattern *)
19        |  INTHEORY <list> ITEMTYPE <svar>      (* unione oggetti lista teorie *)
20        |  THEORYREFTO <list>                   (* unione teorie che fanno 
21                                                  riferimento a lista oggetti *)
22        |  <list> OFTYPE <svar>                 (* unione oggetti in base a 
23                                                   classi *)
24        |  <list> OFSUPERTYPE <svar>            (* unione oggetti in base a 
25                                                   classi e loro superclassi *)
26        |  <list> OFSUBTYPE <svar>              (* unione oggetti in base a 
27                                                   classi e loro sottoclassi *)
28
29 <bool> := ( <bool> )                           (* parentesizzazione *)
30        |  <bool> AND <bool>                    (* congiunzione *)
31        |  <bool> OR <bool>                     (* disgiunzione *)
32        |  NOT <bool>                           (* negazione *)
33        |  TRUE                                 (* vero *)
34        |  FALSE                                (* falso *)
35        |  <string> IS <string>                 (* case sensitive matching *)
36        
37 <pattern> := <quoted-constant-string>          (* pattern costante *)
38           
39 <string> := <quoted-constant-string>           (* costante letterale *)
40          |  CONCLUSION | HYPOTHESIS | BODY     (* costanti simboliche *)
41          |  MAINCONCLUSION | MAINHYPOTHESIS
42          |  <rvar>                             (* variabile *)
43          |  <svar>                             (* variabile *)
44          |  <function> <rvar>                  (* applicazione di funzione *)
45          
46 <function> := NAME                             (* URIREF -> nome_oggetto *)
47            |  <property>
48
49 <property> := THEORY                           (* URIREF -> valore_Proprieta' *)
50            |  TITLE                            (* URIREF -> valore_Prop_DC *)
51            |  CONTRIBUTOR
52            |  CREATOR
53            |  PUBLISHER
54            |  SUBJECT
55            |  DESCRIPTION
56            |  DATE
57            |  TYPE
58            |  FORMAT
59            |  IDENTIFIER
60            |  LANGUAGE
61            |  RELATION
62            |  SOURCE
63            |  COVERAGE
64            |  RIGHTS
65            |  INSTITUTION
66            |  CONTACT
67            |  FIRSTVERSION
68            |  MODIFIED
69            |  <refineprop> <property>
70
71 <refineprop> := SUB                            (* proprieta' e sotto-proprieta'
72                                                   di *) 
73              |  SUPER                          (* proprieta' e super-proprieta'
74                                                   di *)
75
76 <order>    := DESC                             (* ordinamento decrescente *)
77            |  ASC                              (* ordinamento crescente *) 
78
79 <rvar> := <not-reserved-identifier>            (* variabile per risorse *)
80 <svar> := $ <not-reserved-identifier>          (* variabile per stringhe *)
81
82 - le stringhe sono "case sensitive" 
83 - la funzione non definita sull'argomento restituisce la stringa nulla
84 - le <rvar> si presuppongono essere istanziate come URI references costituite
85   da un URI e da un fragment identifier opzionalecomplete; esse identificano 
86   risorse 
87 - ogni binding lega una variabile libera (nuova) 
88 - Precedenza operatori:
89   NOT (+)  DIFF
90   AND      INTERSECT
91   OR  (-)  UNION
92 - Possibili tipi di RELATION e DEPENDENCE sono rappresentati dalle loro
93   subproperties
94 - FUTURO: thesauri di parole e sinonimi per ricerche testuali, ordinamenti sui 
95   risultati, caratteri jolly. Una volta reperito l'oggetto si possono 
96   visualizzare le info associate. 
97 - FUTURO: in output numeri ad esempio a fini statistici, aggiungendo anche 
98   operatori aritmetici e di confronto (< = >). Es. Quante proofs di un certo 
99   teorema ci sono? 
100 - L'ordinamento di default e' quello alfabetico crescente in base al nome 
101   delle rvar
102 - Note su <pattern>
103   Contiene un'espressione regolare per selezionare delle "reference" 
104   (cioe` delle uri eventualmente seguite da un fragment identifier)
105   L'espressione regolare contiene i seguenti costrutti:
106
107   costrutto        semanticamente fa match con
108   ?                un singolo carattere diverso da / e #
109   *                la piu' lunga sottostringa che non contiene / e #
110   **               la piu' lunga sottostringa che non contiene #
111   altro carattere  solo se' stesso
112
113   Il costrutto ** non puo' comparire nella parte dell'espressione che
114   fa match con un fragment identifier.