X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;ds=sidebyside;f=helm%2Fmathql%2Fgrammar.txt;h=4a54af0702c7df4c19f9dd347ab1ea41884030d3;hb=fde1a6daa3aaa72c5c7536f4d2c65a3873b1c1bc;hp=699a6f20a3489b51d596c041c07865cf133b51c1;hpb=85f01e5719399cc2ccf47cbe51f7b8036e12d815;p=helm.git diff --git a/helm/mathql/grammar.txt b/helm/mathql/grammar.txt index 699a6f20a..4a54af070 100644 --- a/helm/mathql/grammar.txt +++ b/helm/mathql/grammar.txt @@ -3,16 +3,16 @@ MATHEMATICAL QUERY LANGUAGE (MathQL) := (* clausola iniziale *) - := ( ) (* parentesizazione *) + := (* lista vuota *) + | ( ) (* parentesizazione *) | (* lista singoletto var (lista valori) *) | (* lista singoletto var (lista valori) *) - | REFERENCE (* oggetto referenziato da - pattern costante *) + | REFERENCE (* oggetto referenziato da URI + esplicita *) | PATTERN (* espansione del pattern *) | SELECT IN WHERE (* selezione *) - | EXISTS IN WHERE (* esistenziale *) | LET BE IN (* assegnazione a var in contesto *) | USE POSITION (* unione lista backward *) @@ -32,6 +32,12 @@ MATHEMATICAL QUERY LANGUAGE (MathQL) | UNION (* unione *) | INTERSECT (* intersezione *) | DIFF (* differenza *) + | MINIMIZE (* minimizzazione del numero + elementi della lista *) + | SORTEDBY (* unione lista ordinata secondo + valore funzione e ordine *) +:= DESC (* ordinamento decrescente *) + | ASC (* ordinamento crescente *) := ( ) (* parentesizzazione *) | TRUE (* vero *) @@ -42,6 +48,7 @@ MATHEMATICAL QUERY LANGUAGE (MathQL) | IS (* case sensitive matching *) | SETEQUAL (* uguaglianza tra liste *) | SUBSET (* operazione di sottoinsieme *) + | EXISTS IN (* esistenziale *) := <'-quoted-constant-string> (* costante letterale *) | MAINHYPOTHESIS | HYPOTHESIS (* costanti simboliche *) @@ -90,13 +97,13 @@ MATHEMATICAL QUERY LANGUAGE (MathQL) := $ (* variabile per stringhe *) := % (* variabile per liste *) -- () = lista vuota (?) +- query vuota e' caso patologico: non si puo' verificare - le stringhe sono "case sensitive" - la funzione non definita sull'argomento restituisce la stringa nulla - le si presuppongono essere istanziate come URI references costituite da un URI e da un fragment identifier opzionale complete; i riferimenti identificano risorse -- ogni binding lega una variabile libera (nuova) +- ogni binding lega una variabile libera (nomi nuovi) - Precedenza operatori: NOT (+) DIFF AND INTERSECT @@ -111,6 +118,7 @@ MATHEMATICAL QUERY LANGUAGE (MathQL) teorema ci sono? - L'ordinamento di default e' quello alfabetico crescente in base al nome delle rvar +- REFERENCE aumenta performance perche' NON accede al data base (costoso). - Note su Contiene un'espressione regolare per selezionare delle "reference" (cioe` delle uri eventualmente seguite da un fragment identifier) @@ -130,22 +138,17 @@ MATHEMATICAL QUERY LANGUAGE (MathQL) "body" parte compresa fra le occorrenze di ":/" e "#1" escluse "fragment" parte successiva all'occorrenza "#1" -- FUTURO: operatore di ordinamento sul risultato finale della query. - SORTEDBY (* unione lista ordinata secondo - ordine e valore funzione *) - := DESC (* ordinamento decrescente *) - | ASC (* ordinamento crescente *) - DTD: - - - - - +- Condizioni associate alla var dell'esisteziale possono essere espresse + nella clausola WHERE di un SELECT nell'argomento dell'EXISTS. - RILASSAMENTO degli operatori UNION e INTERSECT. Operatori fuzzy con introduzione di pesi associati ai risultati. - VALUEOF restituisce il valore o, ricorsivamente sulla struttura, i valori (delle proprieta' delle classi di valori) della proprieta' passatagli. Problema: e' necessario gestire sia i nomi delle classi (costrutti TYPEOF) sia i nomi delle proprieta' (menu a tendina di suggerimenti all'utente in - base agli Schemi RDF relativi ai dati). \ No newline at end of file + base agli Schemi RDF relativi ai dati). +- L'algoritmo che implementa MINIMIZE puo' ad esempio eliminare le entrate + URI+insieme_di_attributi duplicate oppure le entrate con URI ripetute + accorpando i diversi insieme_di_attributi per l'URI in un unica entrata + della lista. + \ No newline at end of file