GRAMMATICA PER QUERY SU DOCUMENTI MATEMATICI MATHEMATICAL QUERY LANGUAGE (MathQL) := (* clausola iniziale *) := ( ) (* parentesizazione *) | UNION (* unione *) | INTERSECT (* intersezione *) | DIFF (* differenza *) | SELECT IN WHERE (* selezione *) | EXISTS IN WHERE (* esistenziale *) | USE POSITION (* unione lista backward *) | USEDBY POSITION (* unione lista forward *) | CONTRUCTORS (* unione costruttori della lista oggetti*) | PATTERN (* espansione del pattern *) | INTHEORY ITEMTYPE (* unione oggetti lista teorie *) | THEORYREFTO (* unione teorie che fanno riferimento a lista oggetti *) | OFTYPE (* unione oggetti in base a classi *) | OFSUPERTYPE (* unione oggetti in base a classi e loro superclassi *) | OFSUBTYPE (* unione oggetti in base a classi e loro sottoclassi *) := ( ) (* parentesizzazione *) | AND (* congiunzione *) | OR (* disgiunzione *) | NOT (* negazione *) | TRUE (* vero *) | FALSE (* falso *) | IS (* case sensitive matching *) := <"-quoted-constant-string> (* pattern costante *) := <'-quoted-constant-string> (* costante letterale *) | CONCLUSION | HYPOTHESIS | BODY (* costanti simboliche *) | MAINCONCLUSION | MAINHYPOTHESIS | (* variabile *) | (* variabile *) | (* applicazione di funzione *) := NAME (* URIREF -> nome_oggetto *) | := 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 | := SUB (* proprieta' e sotto-proprieta' di *) | SUPER (* proprieta' e super-proprieta' di *) := (* variabile per risorse *) := $ (* variabile per stringhe *) - 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 opzionalecomplete; esse identificano risorse - ogni binding lega una variabile libera (nuova) - 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 - 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" - 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: - RILASSAMENTO degli operatori UNION e INTERSECT. Operatori fuzzy con introduzione di pesi associati ai risultati.