X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fmathql%2Fgrammar.txt;h=4a54af0702c7df4c19f9dd347ab1ea41884030d3;hb=8f89cdd08d9ee0a243cf84201bf42e5503759ee3;hp=7bdd67c3aeec2efab71c1cde13d1859ad6fab4e5;hpb=b2aca35e823328d93ddc3f76a4c0af60a0c2bde8;p=helm.git diff --git a/helm/mathql/grammar.txt b/helm/mathql/grammar.txt index 7bdd67c3a..4a54af070 100644 --- a/helm/mathql/grammar.txt +++ b/helm/mathql/grammar.txt @@ -3,54 +3,65 @@ MATHEMATICAL QUERY LANGUAGE (MathQL) := (* clausola iniziale *) - := ( ) (* parentesizazione *) - | UNION (* unione *) - | INTERSECT (* intersezione *) - | DIFF (* differenza *) + := (* lista vuota *) + | ( ) (* parentesizazione *) + | (* lista singoletto var + (lista valori) *) + | (* lista singoletto var + (lista valori) *) + | 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 *) | USEDBY POSITION (* unione lista forward *) | CONTRUCTORS (* unione costruttori della lista oggetti*) - | PATTERN (* espansione del pattern *) - | REFERENCE (* oggetto referenziato *) - | INTHEORY ITEMTYPE (* unione oggetti lista teorie *) + | INTHEORY ITEMTYPE (* unione oggetti lista + teorie *) | THEORYREFTO (* unione teorie che fanno riferimento a lista oggetti *) | OFTYPE (* unione oggetti in base a - classi *) + classi RDF *) | OFSUPERTYPE (* unione oggetti in base a classi e loro superclassi *) | OFSUBTYPE (* unione oggetti in base a classi e loro sottoclassi *) - | (* valore della var*) + | 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 *) - | AND (* congiunzione *) - | OR (* disgiunzione *) - | NOT (* negazione *) | TRUE (* vero *) | FALSE (* falso *) + | NOT (* negazione *) + | AND (* congiunzione *) + | OR (* disgiunzione *) | IS (* case sensitive matching *) | SETEQUAL (* uguaglianza tra liste *) - | SUBSET (* operazione di sottoinsieme *) - - := <"-quoted-constant-string> (* pattern costante *) - := <'-quoted-constant-string> (* riferimento costante *) - + | SUBSET (* operazione di sottoinsieme *) + | EXISTS IN (* esistenziale *) + := <'-quoted-constant-string> (* costante letterale *) - | CONCLUSION | HYPOTHESIS | BODY (* costanti simboliche *) - | MAINCONCLUSION | MAINHYPOTHESIS - | (* variabile *) + | MAINHYPOTHESIS | HYPOTHESIS (* costanti simboliche *) + | MAINCONCLUSION | CONCLUSION | BODY | (* variabile *) + | (* variabile *) | (* applicazione di funzione *) := NAME (* URIREF -> nome_oggetto *) - | + | (* proprieta' RDF *) - := THEORY (* URIREF -> valore_Proprieta' *) - | TITLE (* URIREF -> valore_Prop_DC *) + := THEORY (* URIREF -> valore_proprieta' *) + | TITLE (* URIREF -> valore_prop_DC *) | CONTRIBUTOR | CREATOR | PUBLISHER @@ -69,23 +80,30 @@ MATHEMATICAL QUERY LANGUAGE (MathQL) | CONTACT | FIRSTVERSION | MODIFIED + | VALUEOF (* nome_propr URIREF -> + valore_Proprieta' *) | := SUB (* proprieta' e sotto-proprieta' di *) | SUPER (* proprieta' e super-proprieta' di *) + := <'-quoted-constant-string> (* costante letterale *) + + := <"-quoted-constant-string> (* pattern costante *) + := <'-quoted-constant-string> (* riferimento costante *) - := (* variabile per risorse *) + := (* variabile per riferimenti *) := $ (* 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 @@ -100,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) @@ -119,17 +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. \ No newline at end of file + 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). +- 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