GRAMMATICA PER QUERY SU DOCUMENTI MATEMATICI VERSIONE IMPLEMENTATA MATHEMATICAL QUERY LANGUAGE (MathQL) := (* clausola iniziale *) := ( ) (* 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 *) | ATTR (* unione insieme risorse in relazione specificata con le risorse in set, ognuna con attributi (ATTR) *) | UNION (* unione *) | INTERSECT (* intersezione *) := RELATION (* relazione (proprieta') *) | SUBRELATION (* proprieta' e sotto-proprieta' *) | SUPERRELATION (* proprieta' e super-proprieta' *) := | , := ( ) (* parentesizzazione *) | TRUE (* vero *) | FALSE (* falso *) | NOT (* negazione *) | AND (* congiunzione *) | OR (* disgiunzione *) | 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 riferimento o insiemi di rif. o var*) := | , (* lista di stringhe *) := FUN (* funzione generale *) := @ (* 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 - Precedenza operatori: NOT (+) DIFF AND INTERSECT OR (-) UNION - L'ordinamento di default e' quello alfabetico crescente in base al nome delle rvar - 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) - invece di come argomento di poiche' la REF non e' piu' restrittiva su argomento/i e quindi e' inutile imporne l'uso quando si passano i riferimenti alle funzioni. Con l'utente e' libero di passare direttamente le stringhe dei riferimenti.