From: Irene Schena Date: Wed, 28 Aug 2002 14:57:52 +0000 (+0000) Subject: Modified Files: X-Git-Tag: new_mathql_before_first_merge~58 X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=commitdiff_plain;h=083c4f014ec4ed17b33fef4a01efca2c72d85b06;p=helm.git Modified Files: 1)core_grammar.txt grammar.txt query.xml xmathql.dtd: new version ---------------------------------------------------------------------- --- diff --git a/helm/mathql/core_grammar.txt b/helm/mathql/core_grammar.txt index 65c6cbe8d..737741c48 100644 --- a/helm/mathql/core_grammar.txt +++ b/helm/mathql/core_grammar.txt @@ -2,27 +2,31 @@ GRAMMATICA PER QUERY SU DOCUMENTI MATEMATICI VERSIONE IMPLEMENTATA MATHEMATICAL QUERY LANGUAGE (MathQL) - := (* clausola iniziale *) + := (* clausola iniziale *) - := ( ) (* 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 *) - | LET BE IN (* assegnazione a var in + := ( ) (* parentesizzazione *) + | (* var per insieme singoletto + di una risorsa *) + | (* var per insieme di risorse + (insieme di valori) *) + | REF (* oggetto/i referenziato/i da + URI esplicita/e *) + | PATTERN (* oggetto/i referenziato/i da + URI ottenute da espansione + del pattern *) + | SELECT IN WHERE (* selezione *) + | LET BE IN (* assegnazione a set-var in contesto *) - | USE POSITION (* unione lista backward *) - | USEDBY POSITION (* unione lista forward *) - | UNION (* unione *) - | INTERSECT (* intersezione *) - | SORTEDBY (* unione lista ordinata secondo - valore funzione e ordine *) -:= DESC (* ordinamento decrescente *) - | ASC (* ordinamento crescente *) + | RELATION ATTR + (* unione insieme risorse in + relazione specificata con le + risorse in set, ognuna con + attributi (ATTR) *) + | UNION (* unione *) + | INTERSECT (* intersezione *) + + := + | , := ( ) (* parentesizzazione *) | TRUE (* vero *) @@ -30,75 +34,69 @@ MATHEMATICAL QUERY LANGUAGE (MathQL) | NOT (* negazione *) | AND (* congiunzione *) | OR (* disgiunzione *) - | IS (* case sensitive matching *) - | SETEQUAL (* uguaglianza tra liste *) - | SUBSET (* operazione di sottoinsieme *) + | EQ (* uguaglianza tra insiemi + stringhe (case sensitive) *) + | SUB (* operazione di sottoinsieme + tra insiemi stringhe *) + | MEET (* operazione di meet tra + insiemi stringhe *) + | EX (* existential on attributes + of references *) + + := {} (* insieme vuoto*) + | (* stringa singoletto *) + | {} (* insieme stringhe *) + | REFOF (* insieme riferimenti *) + | . (* variabile per insieme + stringhe, relativa a + riferimento *) + | + (* applicazione di funzione + specificata a riferim. *) - := <'-quoted-constant-string> (* costante letterale *) - | MAINHYPOTHESIS | HYPOTHESIS (* costanti simboliche *) - | MAINCONCLUSION | CONCLUSION | BODY - | (* variabile *) - | (* variabile *) - | (* applicazione di funzione *) - - := NAME (* URIREF -> nome_oggetto *) - | TITLE (* URIREF -> valore_prop_DC *) - | CONTRIBUTOR - | CREATOR - | PUBLISHER - | SUBJECT - | DESCRIPTION - | DATE - | TYPE - | FORMAT - | IDENTIFIER - | LANGUAGE - | RELATION - | SOURCE - | COVERAGE - | RIGHTS - | INSTITUTION - | CONTACT - | FIRSTVERSION - | MODIFIED + := + | , + (* lista di stringhe *) - := <"-quoted-constant-string> (* pattern costante *) - := <'-quoted-constant-string> (* riferimento costante *) + := FUN (* funzione generale *) - := (* variabile per riferimenti *) - := $ (* variabile per stringhe *) - := % (* variabile per liste *) + := @ (* variabile per riferimento *) + := $ (* variabile per insiemi + stringhe *) + := % (* variabile per insiemi + riferimenti *) -- le stringhe sono "case sensitive" -- la funzione non definita sull'argomento restituisce la stringa nulla -- le si presuppongono essere istanziate come URI references costituite +- MEET e' definito come "esiste almeno un elemento che appartiene + all'interserzione tra due insiemi" +- 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 (nomi nuovi) - Precedenza operatori: NOT (+) DIFF AND INTERSECT OR (-) UNION - 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) - L'espressione regolare contiene i seguenti costrutti: - - costrutto semanticamente fa match con - ? un singolo carattere diverso da / # : - * la piu' lunga sottostringa che non contiene / # : - ** la piu' lunga sottostringa che non contiene # : - altro carattere solo se' stesso - - costrutto puo' appareire in - ? "body" - * dovunque - ** "body" e "fragment" - altro carattere dovunque - - "body" parte compresa fra le occorrenze di ":/" e "#1" escluse - "fragment" parte successiva all'occorrenza "#1" \ No newline at end of file +- REF aumenta performance perche' NON accede al data base (costoso). +- L'argomento di PATTERN ha sintassi di una espressione regolare + POSIX 1003.2-1992 +- Possibili FUN (): + NAME (* URIREF -> nome_oggetto *) +- MEET aumenta performance nel caso si verifichi (a in S) oppure + (b in S) = ({a,b} meet S) perche' valuta S una volta sola +- Record . serve per disambiguare nomi uguali di variabili +- Operatori (come EQ) hanno nomi abbreviati rispetto ai costrutti del + linguaggio +- EX verfica che la sua condizione sia vera per almeno un insieme di attributi + associato all'URI in rvar +- Possibili RELATION sono: + USE con attributo POSITION (riferimenti backward) e valori MAINHYPOTHESIS, + HYPOTHESIS, MAINCONCLUSION, CONCLUSION, BODY + USEBY con attributo POSITION (riferimenti forward) e valori MAINHYPOTHESIS, + HYPOTHESIS, MAINCONCLUSION, CONCLUSION, BODY + CONSTRUCTORS + INTHEORY con attributo ITEMTYPE (riferimenti oggetti contenuti in teorie) + THEORYREFTO con attributo ITEMTYPE (riferimenti teorie referenti a oggetti) \ No newline at end of file diff --git a/helm/mathql/grammar.txt b/helm/mathql/grammar.txt index 4a54af070..48d3a6383 100644 --- a/helm/mathql/grammar.txt +++ b/helm/mathql/grammar.txt @@ -1,43 +1,35 @@ GRAMMATICA PER QUERY SU DOCUMENTI MATEMATICI MATHEMATICAL QUERY LANGUAGE (MathQL) - := (* clausola iniziale *) + := (* clausola iniziale *) - := (* 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 *) - | LET BE IN (* assegnazione a var in + := ( ) (* parentesizzazione *) + | (* var per insieme singoletto + di una risorsa *) + | (* var per insieme di risorse + (insieme di valori) *) + | REF (* oggetto/i referenziato/i da + URI esplicita/e *) + | PATTERN (* oggetto/i referenziato/i da + URI ottenute da espansione + del pattern *) + | SELECT IN WHERE (* selezione *) + | LET BE IN (* assegnazione a set-var in contesto *) - | USE POSITION (* unione lista backward *) - | USEDBY POSITION (* unione lista forward *) - | CONTRUCTORS (* unione costruttori della - lista oggetti*) - | INTHEORY ITEMTYPE (* unione oggetti lista - teorie *) - | THEORYREFTO (* unione teorie che fanno - riferimento a lista oggetti *) - | OFTYPE (* unione oggetti in base a + | RELATION ATTR + (* unione insieme risorse in + relazione specificata con le + risorse in set, ognuna con + attributi (ATTR) *) + | OFTYPE (* unione oggetti in base a classi RDF *) - | OFSUPERTYPE (* unione oggetti in base a + | OFSUPERTYPE (* unione oggetti in base a classi e loro superclassi *) - | OFSUBTYPE (* unione oggetti in base a - classi e loro sottoclassi *) - | 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 *) + | OFSUBTYPE (* unione oggetti in base a + classi e loro sottoclassi *) + | UNION (* unione *) + | INTERSECT (* intersezione *) + | DIFF (* differenza *) := ( ) (* parentesizzazione *) | TRUE (* vero *) @@ -45,110 +37,88 @@ MATHEMATICAL QUERY LANGUAGE (MathQL) | NOT (* negazione *) | AND (* congiunzione *) | OR (* disgiunzione *) - | IS (* case sensitive matching *) - | SETEQUAL (* uguaglianza tra liste *) - | SUBSET (* operazione di sottoinsieme *) - | EXISTS IN (* esistenziale *) + | EQ (* uguaglianza tra insiemi + stringhe (case sensitive) *) + | SUB (* operazione di sottoinsieme + tra insiemi stringhe *) + | MEET (* operazione di meet tra + insiemi stringhe *) + | EX (* existential on attributes + of references *) - := <'-quoted-constant-string> (* costante letterale *) - | 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 *) - | CONTRIBUTOR - | CREATOR - | PUBLISHER - | SUBJECT - | DESCRIPTION - | DATE - | TYPE - | FORMAT - | IDENTIFIER - | LANGUAGE - | RELATION - | SOURCE - | COVERAGE - | RIGHTS - | INSTITUTION - | CONTACT - | FIRSTVERSION - | MODIFIED - | VALUEOF (* nome_propr URIREF -> - valore_Proprieta' *) - | + := {} (* insieme vuoto*) + | (* stringa singoletto *) + | {} (* insieme stringhe *) + | REFOF (* insieme riferimenti *) + | . (* variabile per insieme + stringhe, relativa a + riferimento *) + | + (* applicazione di funzione + specificata a riferim. *) - := SUB (* proprieta' e sotto-proprieta' - di *) - | SUPER (* proprieta' e super-proprieta' - di *) - := <'-quoted-constant-string> (* costante letterale *) + := + | , + (* lista di stringhe *) - := <"-quoted-constant-string> (* pattern costante *) - := <'-quoted-constant-string> (* riferimento costante *) + := FUN (* funzione generale *) + | - := (* variabile per riferimenti *) - := $ (* variabile per stringhe *) - := % (* variabile per liste *) + := VALUEOF (* funzione proprieta': restituisce + suoi valori*) + | SUBVALUE (* restituisce valori proprieta' e + sotto-proprieta' di *) + | SUPERVALUE (* restituisce valori proprieta' e + super-proprieta' di *) -- query vuota e' caso patologico: non si puo' verificare + := @ (* variabile per riferimento *) + := $ (* variabile per insiemi + stringhe *) + := % (* variabile per insiemi + riferimenti *) + + + +- MEET e' definito come "esiste almeno un elemento che appartiene + all'interserzione tra due insiemi" - 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 (nomi nuovi) - Precedenza operatori: NOT (+) DIFF AND INTERSECT OR (-) UNION -- Possibili tipi di RELATION e DEPENDENCE sono rappresentati dalle loro - subproperties -- FUTURO: thesauri di parole e sinonimi per ricerche testuali, ordinamenti sui - risultati, caratteri jolly. Una volta reperito l'oggetto si possono - visualizzare le info associate. -- FUTURO: in output numeri ad esempio a fini statistici, aggiungendo anche - operatori aritmetici e di confronto (< = >). Es. Quante proofs di un certo - 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) - L'espressione regolare contiene i seguenti costrutti: - - costrutto semanticamente fa match con - ? un singolo carattere diverso da / # : - * la piu' lunga sottostringa che non contiene / # : - ** la piu' lunga sottostringa che non contiene # : - altro carattere solo se' stesso - - costrutto puo' appareire in - ? "body" - * dovunque - ** "body" e "fragment" - altro carattere dovunque +- REF aumenta performance perche' NON accede al data base (costoso). +- l'argomento di PATTERN ha sintassi di una espressione regolare + POSIX 1003.2-1992 +- Possibile (): + NAME (* URIREF -> nome_oggetto *) +- MEET aumenta performance nel caso si verifichi (a in S) oppure + (b in S) = ({a,b} meet S) perche' valuta S una volta sola + Il MEET codifica inoltre l'esistenziale su risorse (URI) in un certo + insieme che soddisfa certe condizioni +- record . serve per disambiguare nomi uguali di variabili +- Operatori (come EQ) hanno nomi abbreviati rispetto ai costrutti del + linguaggio +- EX verfica che la sua condizione sia vera per almeno un insieme di attributi + associato all'URI in rvar +- Il costrutto di ordinamento: + SORTEDBY (* unione insieme ordinato secondo + valore funzione e ordine *) + := DESC (* ordinamento decrescente *) + | ASC (* ordinamento crescente *) + perde di senso nel caso di metadati, poiche' per definizione le proprieta' + in RDF possono essere ripetute quindi restituiscono (come anche le funzioni + in generale) valori multipli per ogni riferimento (ambiguita' nell'ordine) +- Possibili proprieta' (): + le DC: TITLE, CONTRIBUTOR, CREATOR, PUBLISHER, SUBJECT, DESCRIPTION, DATE, + TYPE, FORMAT, IDENTIFIER, LANGUAGE, RELATION, SOURCE, COVERAGE, RIGHTS, + RIGHTS; and INSTITUTION, CONTACT, FIRSTVERSION, MODIFIED, THEORY - "body" parte compresa fra le occorrenze di ":/" e "#1" escluse - "fragment" parte successiva all'occorrenza "#1" -- 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). -- 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 diff --git a/helm/mathql/query.xml b/helm/mathql/query.xml index e51944e8d..748ab0098 100644 --- a/helm/mathql/query.xml +++ b/helm/mathql/query.xml @@ -7,36 +7,23 @@ diff --git a/helm/mathql/xmathql.dtd b/helm/mathql/xmathql.dtd index 69b0cab9e..bcff12560 100644 --- a/helm/mathql/xmathql.dtd +++ b/helm/mathql/xmathql.dtd @@ -27,6 +27,7 @@ + @@ -40,154 +41,91 @@ - - - - - - - - + + + + - - - - - + - - - + - + - + - + - + - + + + - - - + - + - + - - - - - - - - - + - + + - + - + - + - - - - - - - - - - - - - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - + - + + svar CDATA #REQUIRED> - - + - - - - - - @@ -200,40 +138,38 @@ - + - + - + - + - + - - + - + + + - - - - + + - + - + - + \ No newline at end of file