GRAMMATICA PER QUERY SU DOCUMENTI MATEMATICI VERSIONE IMPLEMENTATA MATHEMATICAL QUERY LANGUAGE (MathQL) := (* 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 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 *) := ( ) (* parentesizzazione *) | 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> (* 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 := <"-quoted-constant-string> (* pattern costante *) := <'-quoted-constant-string> (* riferimento costante *) := (* variabile per riferimenti *) := $ (* variabile per stringhe *) := % (* variabile per liste *) - 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"