Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
2) Caratteristiche di XML
- case-sensitive
- ammette caratteri Unicode + whitespace
- le sezioni CDATA contengono testo che non viene processato
- permette riferimenti alle entit (es. & -> &)
3) La dischiarazione XML
Definisce versione, encoding e standalone (se il documento ha significato in s o
parte di un altro documento).
Non obbligatoria: se omessa, il default <?XML version=1.0 ?>
4) Namespace XML
Per differenziare eventuali elementi con definizioni diverse ma nomi uguali
(provenienti da autori diversi)
si usa un nome qualificato, composto cio da ns:nome-elemento. I namespace del
documento si definiscono
tramite l'attributo ** xmlns:nome-ns="URI-ns" **.
N.B: i namespace hanno valore informativo, non dichiarativo (cio possono contenere
URI inesistenti)
5) Verifica e convalida
La verifica assicura che il documento sia ben formato, privo cio di errori sintattici.
Viene effettuata dal parser.
Le regole sono:
- tag di apertura e chiusura corrispondenti e ben annidati
- presenza di un elemento root
- tag vuoti chiusi con <nome-elemento ... />
- attributi racchiusi tra virgolette
La convalida, in presenza di uno schema, assicura che il documento rispetti la
struttura imposta dallo schema. Viene effettuata dallo schema processor.
Un parser che effettua anche la convalida si chiama parser validante.
---------------
1) XPath
XPath un linguaggio di traversing di un documento XML basato sui "percorsi di
posizione (location path)",
ordinati secondo la gerarchia del documento. Un location step consiste di:
- asse
- test
- predicati
La valutazione di un'espressione XPath parte da un contesto, composto da:
- nodo di contesto
- posizione e dimensione
- insieme di operatori
- funzioni di libreria
- dichiarazione di namespace
3) I test di XPath
Un test definisce se includere un tipo di nodo nel risultato della ricerca:
- text()
- comment()
- processing-instruction()
- node()
- *: tutti i nodi, indipendentemente dal tipo
- element-name: i nodi del tipo specificato
- *:localname: i nodi con nome qualificato
- ns:*: tutti i nodi del namespace indicato
4) I predicati XPath
Un predicato un espressione booleana che viene verificata sugli elementi risultanti
dopo la parte di test.
Pu anche contenere un'ulteriore espressione XPath, che viene valutata senza
spostarsi nell'albero.
Es.
* //recipe[//ingredient/@name="sugar] seleziona le ricette con discendenti ingredienti
con figli con attributo name="sugar"
* //recipe[//ingredient@name="sugar"] seleziona le ricette con discendenti con
attributo name="sugar"
* //recipe/ingredient@name="sugar" seleziona gli ingredienti con attributo
name="sugar"
------
1) XQuery
E' un linguaggio pensato per trasformare e generare documenti XML e segue il
paradignma FLOWR:
- For: iterazione su ogni elemento di una selezione XPath
- Let: assegna un risultato XPath ad una variabile
- Where
- Order by
- Return: costruisce il risultato (si possono usare direttamente costrutti XML)
Le espressioni XQuery sono racchiuse tra {}
------
1) WebService
Un servizio una procedura/metodo/oggetto con un'interfaccia pubblica e stabile
invocabile da un client.
L'interfaccia composta da protocollo + formato + comportamento. Il suo ciclo di vita
articolato in:
- Creation: il servizio reso disponibile e pubblicato (tramite registrazione ad un
directory service
o disseminazione di messaggi di advertisement)
- Procurement: fornitore e client si accordano in base a discovery (ricerca del servizio
pi adatto) e
negotiation (termini di fornitura - SLA - e Quality Of Service)
- Enactment: fruitura del servizio
Un WebService realizza un servizio sul WEB, tramite HTTP + XML + SOAP. Esso offre:
- interoperabilit
- modularit
- riuso
- affidabilit
- sicurezza
------
1) SOAP
Protocollo per realizzare SOA sul Web. Specifica:
- formato dei messaggi, in XML
- binding su HTTP e SMTP
- regole di elaborazione dei messaggi
- convenzioni per le RPC (Remote Procedure Call)
I messaggi SOAP sono racchiusi in Envelope, costituite da:
- header: opzionale, con istruzioni per il middleware (di gestione)
- body: obbligatorio, con istruzioni per le applicazioni
SOAP un protocollo molto semplice e interoperabile, ma piuttosto inefficiente e
troppo generico
2) L'Header SOAP
Contiene informazioni di coordinamento, identificazione, sicurezza...
Non ha una struttura obbligatoria, ma esistono campi predefiniti:
- role: URI del tipo di nodo che pu elaborare il blocco. Invece di un URI, si pu usare
uno tra:
* none: propagare senza elaborare
* next: tutti possono elaborare
* ultimateReceiver (default): il blocco per il destinatario finale
- mustUnderstand: true/false se obbligatorio elaborare il messaggio (un nodo che
non completa l'elaborazione
deve generare un fault)
- relay: indica se inoltrare una eventuale parte del messaggio non elaborata
3) Il Body SOAP
Contiene i dati per il destinatario. Pu contenere i blocchi:
- Fault: composto da un codice (Code) obbligatorio tra Sender, Receiver,
MustUnderstand, VersionMismatch e DataEncodingUnknown
e Reason (per gli umani, non elaborata) + eventualmente Detail, Node, Role
- RPC: Document-style o RPC-style, contiene i metodi + i parametri delle chiamate a
procedure remote
4) UDDI (Universal Description, Discovery and Integration)
Permette il binding dinamico di WebService in modo automatico.
Classifica le informazioni secondo le modalit:
- pagine bianche: secondo le organizzazioni, con i loro dati e i servizi che espongono
- pagine gialle: secondo la tassonomia dei servizi
- pagine verdi: secondo i dettagli tecnici dei servizi (modalit di utilizzo e parametri di
QoS)
------
1) Il Semantic Web
Lo scopo del semantic web di rendere il web da machine-representable a machine-
understandable tramite l'uso
di un framework per la definizione della conoscenza, un linguaggio ontologico ed
efficiente con semantica condivisa,
un'infrastruttura a "indirizzamento" univoco nel web.
4) Reificazione
Riduzione ad oggetto di una asserzione tramite le proprit rdf:type=Statement,
rdf:subject, rdf:predicate, rdf:object.
Permette di specificare ulteriori metadati (autore, timestamp...)
5) I literal
Un literal una stringa a cui pu essere aggiunta informazione:
- sulla lingua, via @lang-code
- sul tipo, via ^^datatype (sono disponibili i datatype di XSD)
------
------
2) Licenze IODL
Riferite agli Italian Open Data (del progetto Open Government Directive sulla
divulgazione dei dati e-government), prevedono:
- IODL 1.0: i lavori derivati devono mantenere la stessa licenza
- IODL 2.0: bisogna citare la fonte dei dati
------