GRAMMATICA PER QUERY SU DOCUMENTI MATEMATICI 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 *) | 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 classi e loro superclassi *) | OFSUBTYPE (* unione oggetti in base a classi e loro sottoclassi *) | UNION (* unione *) | INTERSECT (* intersezione *) | DIFF (* differenza *) := ( ) (* 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 riferim. *) := | , (* lista di stringhe *) := FUN (* funzione generale *) | := VALUEOF (* funzione proprieta': restituisce suoi valori*) | SUBVALUE (* restituisce valori proprieta' e sotto-proprieta' di *) | SUPERVALUE (* restituisce valori proprieta' e super-proprieta' di *) := @ (* 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 - 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