+++ /dev/null
-GRAMMATICA PER QUERY SU DOCUMENTI MATEMATICI
- VERSIONE IMPLEMENTATA
-MATHEMATICAL QUERY LANGUAGE (MathQL)
-
-<query> := <list> (* clausola iniziale *)
-
-<list> := ( <list> ) (* parentesizazione *)
- | <rvar> (* lista singoletto var
- (lista valori) *)
- | <lvar> (* lista singoletto var
- (lista valori) *)
- | REFERENCE <reference> (* oggetto referenziato da URI
- esplicita *)
- | PATTERN <pattern> (* espansione del pattern *)
- | SELECT <rvar> IN <list> WHERE <bool> (* selezione *)
- | LET <lvar> BE <list> IN <list> (* assegnazione a var in
- contesto *)
- | USE <list> POSITION <svar> (* unione lista backward *)
- | USEDBY <list> POSITION <svar> (* unione lista forward *)
- | <list> UNION <list> (* unione *)
- | <list> INTERSECT <list> (* intersezione *)
- | <list> SORTEDBY <function> <order> (* unione lista ordinata secondo
- valore funzione e ordine *)
-<order>:= DESC (* ordinamento decrescente *)
- | ASC (* ordinamento crescente *)
-
-<bool> := ( <bool> ) (* parentesizzazione *)
- | TRUE (* vero *)
- | FALSE (* falso *)
- | NOT <bool> (* negazione *)
- | <bool> AND <bool> (* congiunzione *)
- | <bool> OR <bool> (* disgiunzione *)
- | <string> IS <string> (* case sensitive matching *)
- | <list> SETEQUAL <list> (* uguaglianza tra liste *)
- | <list> SUBSET <list> (* operazione di sottoinsieme *)
-
-<string> := <'-quoted-constant-string> (* costante letterale *)
- | MAINHYPOTHESIS | HYPOTHESIS (* costanti simboliche *)
- | MAINCONCLUSION | CONCLUSION | BODY
- | <svar> (* variabile *)
- | <rvar> (* variabile *)
- | <function> <rvar> (* applicazione di funzione *)
-
-<function> := 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
-
-<pattern> := <"-quoted-constant-string> (* pattern costante *)
-<reference> := <'-quoted-constant-string> (* riferimento costante *)
-
-<rvar> := <not-reserved-identifier> (* variabile per riferimenti *)
-<svar> := $ <not-reserved-identifier> (* variabile per stringhe *)
-<lvar> := % <not-reserved-identifier> (* variabile per liste *)
-
-
-- le stringhe sono "case sensitive"
-- la funzione non definita sull'argomento restituisce la stringa nulla
-- le <rvar> 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 <pattern>
- 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