XML: RAPPRESENTARE E INTERROGARE DATI SEMI...

14
MONDO DIGITALE •n.2 - giugno 2005 1. DATI O DOCUMENTI? LA CONVERGENZA DI DUE VITE PARALLELE L a disposizione della memoria su un na- stro infinito non è soddisfacente in pratica, per il dispendio di tempo andando avanti e indietro alla ricerca delle unità di informazione richieste nei vari momenti. Questa difficoltà doveva angustiare gli anti- chi egizi, che scrivevano i loro libri su rotoli di papiro”. Così nel 1947 A. M. Turing, padre dell’informatica teorica e pioniere di quella pratica, provocava una platea di matematici a proposito del principale difetto di un meto- do per rappresentare ed elaborare l’informa- zione che lui stesso aveva teorizzato, e che consentiva di effettuare qualsiasi operazione computabile. Un’accusa analoga poteva essere mossa, al- la fine degli anni 90, alla consolidata tecnolo- gia dei database relazionali, per i loro limiti nella gestione efficiente dei dati semi-strut- turati, cioè informazioni di un tipo relativa- mente nuovo – per popolarità e diffusione – la cui mole ed importanza da allora sono cre- sciute sempre più rapidamente, in parallelo con il fenomeno Internet. Alla base dall’affermazione di Turing, infatti, c’è una considerazione che è evidente per chiunque si occupi di informatica: il modo in cui sono rappresentate le informazioni ha un impatto sulla complessità e sull’efficienza delle applicazioni che devono gestirle. Nel caso in esame, i documenti che costituiscono il Web contengono prevalentemente dati se- La nostra società si caratterizza sempre più come società dell’informazio- ne, nella quale l’infrastruttura informatica svolge il ruolo cruciale di gestire la conservazione e lo scambio dei dati. In questo scenario, XML è ormai di- ventato lo standard per la rappresentazione e lo scambio dei dati in moltis- sime applicazioni. Questo articolo descrive le caratteristiche di XML che ne hanno determinato il successo e presenta i linguaggi e le tecnologie per la manipolazione di dati codificati in XML. Daniele Braga Alessandro Campi Stefano Ceri XML: RAPPRESENTARE E INTERROGARE DATI SEMI-STRUTTURATI 45 3.2 Dati e Documenti nel tempo Nel mondo dei database 1970 database relazionali 1990 nested relational model e databese object- oriented 1995 database semi-strutturati La gestione dei documenti 1986 SGML 1990 HTML 1992 URL Dati + documenti = informazione 1997 XML 1999 XPath 1.0 e XSLT 1.0 2004 XQuery 1.0 e XSLT 2.0 (draft quasi consolidati)

Transcript of XML: RAPPRESENTARE E INTERROGARE DATI SEMI...

M O N D O D I G I T A L E • n . 2 - g i u g n o 2 0 0 5

1. DATI O DOCUMENTI?LA CONVERGENZA DI DUE VITEPARALLELE

“L a disposizione della memoria su un na-stro infinito non è soddisfacente in

pratica, per il dispendio di tempo andandoavanti e indietro alla ricerca delle unità diinformazione richieste nei vari momenti.Questa difficoltà doveva angustiare gli anti-chi egizi, che scrivevano i loro libri su rotoli dipapiro”. Così nel 1947 A. M. Turing, padredell’informatica teorica e pioniere di quellapratica, provocava una platea di matematicia proposito del principale difetto di un meto-do per rappresentare ed elaborare l’informa-zione che lui stesso aveva teorizzato, e checonsentiva di effettuare qualsiasi operazionecomputabile.Un’accusa analoga poteva essere mossa, al-la fine degli anni 90, alla consolidata tecnolo-gia dei database relazionali, per i loro limitinella gestione efficiente dei dati semi-strut-turati, cioè informazioni di un tipo relativa-mente nuovo – per popolarità e diffusione –la cui mole ed importanza da allora sono cre-

sciute sempre più rapidamente, in parallelocon il fenomeno Internet.Alla base dall’affermazione di Turing, infatti,c’è una considerazione che è evidente perchiunque si occupi di informatica: il modo incui sono rappresentate le informazioni ha unimpatto sulla complessità e sull’efficienzadelle applicazioni che devono gestirle. Nelcaso in esame, i documenti che costituisconoil Web contengono prevalentemente dati se-

La nostra società si caratterizza sempre più come società dell’informazio-

ne, nella quale l’infrastruttura informatica svolge il ruolo cruciale di gestire la

conservazione e lo scambio dei dati. In questo scenario, XML è ormai di-

ventato lo standard per la rappresentazione e lo scambio dei dati in moltis-

sime applicazioni. Questo articolo descrive le caratteristiche di XML che ne

hanno determinato il successo e presenta i linguaggi e le tecnologie per la

manipolazione di dati codificati in XML.

Daniele BragaAlessandro CampiStefano Ceri

XML: RAPPRESENTAREE INTERROGARE DATISEMI-STRUTTURATI

45

3.2

Dati e Documenti nel tempo

Nel mondo dei database1970 database relazionali1990 nested relational model e databese object-

oriented1995 database semi-strutturati

La gestione dei documenti1986 SGML1990 HTML1992 URL

Dati + documenti = informazione1997 XML1999 XPath 1.0 e XSLT 1.02004 XQuery 1.0 e XSLT 2.0 (draft quasi consolidati)

mi-strutturati, una tipologia di informazionetroppo liberamente strutturata, come già ac-cennato, per essere rigidamente imbrigliatanelle tabelle dei database relazionali e gesti-ta in modo efficiente.L’esigenza di una rappresentazione efficaceper tali documenti, unitamente all’esigenzadi flessibilità di utenti e applicazioni chespesso devono integrare dati provenienti dasorgenti eterogenee, ha favorito la diffusionedi XML, rapidamente adottato come formatostandard per la codifica di informazioni semi-strutturate. Infatti la principale caratteristicadi XML, e anche uno dei suoi principali puntidi forza, è l’attenuazione della distinzione tradati e schema dei dati, con la possibilità dirappresentare un ampio spettro di situazioniintermedie tra gli estremi dell’informazionetotalmente destrutturata (ad esempio un se-gnale audio) e dell’informazione del tuttovincolata a uno schema rigido (come nei da-tabase relazionali). In questi mesi, inoltre, sistanno consolidando, dopo un processo lun-go, controverso e faticoso ad opera del WorldWide Web Consortium (W3C) anche le speci-fiche di XPath, XQuery e XSLT, i linguaggicandidati ad essere lo standard per interro-gare e manipolare dati rappresentati in XML.Questo articolo, dopo una breve introduzio-ne ad XML, presenta dapprima alcuni scenariin cui esso si dimostra utile ed efficace, de-scrive poi XPath, XSLT e XQuery basandosi suuna progressione di esempi, e termina conuna panoramica sullo stato dell’arte delletecnologie collegate ad XML.

2. XML PER RAPPRESENTARELE INFORMAZIONI

2.1. Il segreto del successo di XMLXML (eXtensible Markup Language) è un “lin-guaggio a marcatori” (tag language) estre-mamente flessibile, derivato da SGML (Stan-dard Generalized Markup Language) e natoper gestire la pubblicazione su larga scala didocumenti elettronici tramite il Web. In se-guito, XML si è rivelato adatto a rappresenta-re dati in contesti estremamente eterogenei.

Da SGML a XMLSGML è un linguaggio per la definizione di lin-guaggi di marcatura e offre costrutti per speci-

ficarne la sintassi (i vincoli da rispettare nelcomporre i tag) e la semantica (il significatodei tag, cioè il comportamento del programmache li interpreta). SGMLsi consolida a metà de-gli anno ‘80 come sintesi di circa venti anni disforzi profusi nel mondo dell’editoria elettroni-ca per la standardizzazione di un meccanismogenerale di definizione di stili di marcatura di-versi, seppure in un contesto omogeneo. Giànegli anni ’60, infatti, si era avvertita la neces-sità di superare l’uso di codici di controllo spe-cifici di ogni particolare formato, a vantaggio diuno schema generale di definizione (il cosid-detto “GenCode® concept”) che permettessedi separare il contenuto di un documento dallasua formattazione e di definire una strutturagerarchica in cui piccoli documenti potesseroessere inclusi come parti di documenti più am-pi. Nel 1969 IBM propose GML (ad opera diGoldfarb, Mosher e Lorie, ed anche acronimodi Generalized Markup Language), che per pri-mo introdusse il concetto di “tipo di documen-to” come classe di documenti che si attengonoa precise regole di struttura e di formattazione,definite da uno “schema di marcatura”. SGMLderiva da GML con l’aggiunta, per esempio, diun sistema di collegamento tra documenti tra-mite riferimenti.Alcuni anni dopo, HTML fu definito a partireda SGML come un linguaggio di formattazio-ne per documenti particolari, gli ipertesti. Unipertesto, come oggi siamo ormai abituati aconcepirlo, si rappresenta bene con un lin-guaggio di marcatura e presenta proprio leproblematiche che hanno motivato la nascitadi SGML. La semplicità di HTML è stata peròottenuta al prezzo del suo limite principale:l’impossibilità di estenderlo se non in modo“proprietario”. Con l’aumentare della moledei dati pubblicati sul Web si è diffusa l’ideadi realizzare un linguaggio più generico, checonsentisse di definire tag proprietari, mache non avesse la complessità di SGML. Cosìsi è aperta la strada che porta ad XML.

XMLNel 1996 è stato proposto XML, un linguaggioche consentiva di realizzare browser comple-tamente estensibili grazie alla possibilità di de-finire attraverso il linguaggio e “dentro” i do-cumenti la tipologia dei tag ammessi e la strut-tura del linguaggio di marcatura. Lo standard

M O N D O D I G I T A L E • n . 2 - g i u g n o 2 0 0 5

1

0

0

0

1

46

di riferimento era SGML, ma occorreva consi-derare anche esigenze nate col Web e con lesue tecnologie. Uno degli obiettivi era quello dipoter includere nel documento una semplicespecifica della sua struttura e del suo signifi-cato, in modo da renderlo “autocontenuto” dalpunto di vista della possibilità di interpretarlo.Per fare ciò si è introdotto il DTD (Document Ty-pe Definition), una specifica sintetica della strut-tura di una classe di documenti.In sintesi XML è:❙ Un formato generale usabile in ogni contesto;❙ Standardizzato dal W3C (www.w3.org);❙ Leggibile sia per le applicazioni softwareche per l’occhio umano;❙ Semplice da analizzare in modo automatico;❙ Internazionalizzato (attraverso la codificaUNICODE);❙ Semplice ed efficace nel dare semantica altesto;❙ Indipendente da piattaforme e fornitori/ven-ditori;❙ Una tecnologia che non richiede grossi inve-stimenti.

2.2. L’abc di XMLUn documento XML è un documento testualele cui sezioni sono racchiuse all’interno di cop-pie di marcatori (o tag). I tag sono distinti daltesto libero (o PCDATA, acronimo di ParsableCharacter DATA) per il fatto di iniziare e finirecon le parentesi angolari ‘<’e ‘>’. Ogni sezione

è definita da un tag di apertura e un tag di chiu-sura che si corrispondono e che sono dotati diuna propria struttura; in particolare il tag di aper-tura può contenere una lista di attributi, men-tre il tag di chiusura è riconoscibile perché ini-zia con la sequenza ‘</’. L’unione di una cop-pia di tag corrispondenti e del loro contenuto èdetta elemento; in un documento è sempre pre-sente un unico elemento iniziale, detto radice,che racchiude l’intero documento.Gli elementi possono sia avere attributi, elen-cati nei tag di apertura in forma di coppie no-me/valore, per specificarne alcune caratteri-stiche, sia contenere sotto-elementi di arbitra-ria complessità, cioè che a loro volta possono(ricorsivamente) contenere altri sotto-elemen-ti. Il contenuto di un elemento può anche esse-re costituito soltanto da PCDATA, o da unacombinazione di PCDATA e di sotto-elementi,liberamente mescolati tra loro (in questo ulti-mo caso si doce che l’elemento è misto).I tag di apertura e di chiusura si corrispondo-no col rigido vincolo per cui non si può chiu-dere un elemento finché non sono stati chiu-si tutti i suoi sotto-elementi, realizzando cosìuna struttura gerarchica rigidamente struttu-rata come le espressioni con parentesi cor-rettamente annidate a più livelli. Un docu-mento che rispetti queste semplici regolesintattiche si dice ben formato.Il seguente esempio (Figura 1) mostra comeun elenco di dischi di vari produttori può es-

M O N D O D I G I T A L E • n . 2 - g i u g n o 2 0 0 5

1

47

0

0

0

1

Musica

Nome Sede

Karim

Anno Anno

1961 1965

Roma

Fabrizio De Andrè F. De Andrè

Nuvole Barocche La Città Vecchia

Disco Disco

Artista Artista

Titolo Titolo

Catalogo

Produttore

<?xml version=“1.0” encoding=“ISO-8859-1”?><musica>

<produttore><nome> Karim </nome><sede> Roma </sede><catalogo>

<disco anno=“1961”><titolo> Nuvole Barocche </titolo><artista> Fabrizio De André </artista>

</disco><disco anno=“1965”>

<titolo> La Città Vecchia </titolo><artista> F. De André </artista>

</disco>…

</catalogo></produttore>

…</musica>

FIGURA 1Esempiodi documento benformato

sere rappresentato in XML; gli elementi cherappresentano ogni disco sono elencati den-tro (o sotto) ad un elemento catalogo, e cosìvia fino all’elemento iniziale (musica). Perquesto si dice che il modello dei dati di XML ègerarchico, e spesso se ne utilizza una rap-presentazione ad albero che aiuta a visualiz-zare la gerarchia tra i vari elementi.La classe di documenti che rispettano lastruttura del documento d’esempio può es-sere per esempio definita dal DTD seguente:

<!ELEMENT musica (produttore+)><!ELEMENTproduttore (nome, sede, catalogo)><!ELEMENT nome (#PCDATA)><!ELEMENT sede (#PCDATA)><!ELEMENT catalogo (disco+)><!ELEMENT disco (titolo, artista)><!ATTLIST disco anno CDATA #REQUIRED><!ELEMENT titolo (#PCDATA)><!ELEMENT artista (#PCDATA)>

Lo si legge piuttosto intuitivamente come se-gue: l’elemento radice musica contiene unalista di (uno o più) elementi produttore,ognuno dei quali è composto di una triplettadi elementi: nome, sede e catalogo. I primidue, come anche in seguito titolo e artista,contengono solo testo libero (PCDATA), men-tre ogni catalogo contiene una lista di (uno opiù) elementi disco, ognuno con un attributo“anno” (che essendo dichiarato #REQUIREDnon può essere omesso), un titolo e il nomedell’artista. Ogni documento che sia ben for-mato e che rispetti i vincoli strutturali cosìspecificati si dice valido rispetto al DTD.Il principale limite di questo modo di speci-ficare lo schema di una classe di documentiXML è la povertà del sistema di tipizzazionedei dati, che si riduce alla distinzione tra te-sto libero e tag. In molti contesti questasemplicità si è mostrata un vantaggio com-petitivo, ma per ovviare a questo limite, nelcaso in cui sia necessario definire tipi di da-to come nei tradizionali linguaggi di pro-grammazione, è stato introdotto XML Sche-ma (www.w3.org/XML/Schema), che preve-de un ampio insieme di tipi di base e nume-rose primitive di costruzione di tipi com-plessi a partire dai tipi di base. Una tratta-zione esaustiva di XML Schema esula dagliscopi di questo articolo.

3. ADOTTARE XML? SCENARI,VANTAGGI, SVANTAGGIE SOLUZIONI IBRIDE

Le ragioni del successo di XML sono moltepli-ci e assai diverse fra loro. Vediamo una rasse-gna di alcuni dei suoi più importanti ambitiapplicativi.

3.1. XML come “lingua franca”per lo scambio di datiLe caratteristiche di XML che abbiamo de-scritto mostrano come esso permetta a qual-siasi applicazione di rappresentare informa-zione in modo indipendente sia dal linguag-gio di programmazione in cui è stata svilup-pata sia dal sistema operativo su cui è in ese-cuzione. XML, pertanto, si candida ad essereun ottimo veicolo per scambiare informazionitra applicazioni arbitrariamente eterogenee.Naturalmente XML può essere usato ancheper lo scambio di dati tra componenti di unastessa applicazione: programmatori diversipossono lavorare in modo indipendente, apatto di concordare un formato comune perla rappresentazione dei dati da scambiare,sfruttando così una tecnologia già consolida-ta per l’interoperabilità esterna, al fine diconseguire una maggiore “apertura” anchenell’architettura interna delle applicazioni.

3.2. XML come linguaggioper la configurazione di sistemidi data managementLa semplicità e la standardizzazione di XMLne fanno anche il linguaggio ideale per rap-presentare le proprietà di configurazione delsoftware, in virtù del requisito che lo vuoleagevolmente leggibile sia per le applicazionisia per l’occhio umano; il suo uso sistemati-co permette di avere file di configurazione al-trettanto semplici da modificare tanto per in-tervento “manuale” diretto quanto per inter-vento mediato via software. Un esempio significativo di questo uso di XMLè Hibernate (http://www.hibernate.org), unpotente strumento che consente al progetti-sta/programmatore di garantire (con poche li-nee di codice) la persistenza degli oggetti diuna applicazione Java su database relazionali.Hibernate consente, con poche istruzioni, di“salvare” (rendere persistente) in un databaselo stato di un’applicazione Java (assieme a tut-

M O N D O D I G I T A L E • n . 2 - g i u g n o 2 0 0 5

1

0

0

0

1

48

ti i suoi oggetti) per ricaricarlo in un secondomomento. XML interviene per specificare l’as-sociazione tra le tabelle di un database (e i re-lativi campi) e le classi dell’applicazione (e re-lativi attributi). L’esempio seguente mostracom’è possibile associare la classe Java Pro-dotto (identificata tramite la sua posizione nel-la gerarchia dei package) alla tabella relazio-nale T-PROD, al fine di mantenere automatica-mente allineati i valori degli attributi degli og-getti con quelli dei record della tabella.

<hibernate-mapping><class name=“com.mokabyte.samples.Prodotto”

table=“T_PROD”><property name=“id” type=“string”/><property name=“descrizione” type=“string”/>

</class></hibernate-mapping>

Quello mostrato è un esempio molto sempli-ce, ma il linguaggio consente la specifica dicorrispondenze più sofisticate.

3.3. XML come ponte tra programmatorie graficiLe attuali applicazioni Web hanno le esigen-ze contrastanti di pubblicare grandi quan-tità di dati e di permettere all’utente di vi-sualizzarli o modificarli in modo semplice eintuitivo. Lo sviluppo e la manutenzione ditali applicazioni è un’attività particolarmen-te complessa, che richiede conoscenze mul-tidisciplinari, per l’impiego di tecniche pro-prie dell’ingegneria del software unite allacapacità di realizzare pagine dall’aspettogradevole. Si rende quindi necessaria la col-laborazione di esperti informatici e designergrafici: il compito dei primi è realizzare la lo-gica dell’applicazione (gestione dati, logicadi business ecc.), realizzando lo stratosoftware che elabora le richieste dell’utentee fornisce le informazioni richieste; il compi-to dei secondi è realizzare un livello di pre-sentazione che mostri al meglio le informa-zioni fornite dallo strato sottostante. È im-portante notare che il livello di presentazio-ne non è necessariamente unico: le richie-ste possono arrivare da personal computer,che possono accedere ad una versione delsito fornita di una raffinata interfaccia grafi-ca (magari in Flash©), oppure da dispositivi

con risorse di calcolo più limitate, come peresempio i telefoni cellulari, che impongonoun’interfaccia meno sofisticata. La comuni-cazione tra i due livelli avviene grazie aXML: lo strato della logica applicativa ri-sponde alle richieste fornendo informazionicodificate in XML, che lo strato di presenta-zione elabora costruendo dinamicamenteun’interfaccia utente codificata in un modoqualsivoglia, ad esempio in Flash oppurecon trasformazioni XSLT che generanoHTML; vedremo più avanti in questo artico-lo che proprio XSLT è uno dei linguaggi chia-ve per utilizzare XML, esemplificando la ge-nerazione di pagine HTML.

3.4. ebXMLebXML (Electronic Business using eXtensibleMarkup Language, http://www.ebxml.org) èun insieme di specifiche nate per offrire alleorganizzazioni geograficamente distribuitela possibilità di effettuare transazioni com-merciali attraverso il Web.Il valore di ebXML consiste nell’essere unostandard aperto, condiviso a livello globale enato da una solida esperienza nell’ambitodegli scambi commerciali elettronici. ebXMLrappresenta un concreto passo avanti versola creazione di un unico mercato elettronicoglobale in cui ogni soggetto può entrare libe-ramente.

3.5. I Web ServiceI Web Service, sempre più usati per fornireservizi informatici via Web, rappresentano unnuovo paradigma per la costruzione di siste-mi informativi distribuiti basati sulla compo-sizione di servizi.I Web Service sono applicazioni tra loro in-dipendenti e basate su standard aperti.Possono essere pubblicati, ricercati e libe-ramente utilizzati attraverso la rete. Posso-no essere aggregati per creare nuove appli-cazioni, servizi e processi. Possono esserepubblicati con una “auto-descrizione”, cheun servizio può sfruttare per ricercare altriservizi con cui tentare di interagire dinami-camente. I pilastri tecnologici su cui poggial’idea dei Web Service sono tre: SOAP, ilprotocollo per lo scambio di messaggi nellacomunicazione con un servizio; WSDL, Il lin-guaggio standard per la specifica dell’inter-

M O N D O D I G I T A L E • n . 2 - g i u g n o 2 0 0 5

1

49

0

0

0

1

faccia di un servizio; UDDI, per l’indicizza-zione dei servizi. Questi standard sono tuttie tre basati su XML e il motivo principale èche tutti i linguaggi di programmazione etutte le piattaforme possono spedire e rice-vere dati in formato XML. Proprio XML, quin-di, rende i Web Service realmente utilizzabi-li da parte di applicazioni eterogenee e supiattaforme eterogenee.

3.6. Ontologie e Semantic WebLa disponibilità dei Web service rende possi-bile l’utilizzo di servizi altrui per realizzareparte di un servizio che si vuole offrire. Un re-quisito fondamentale per poter comporreWeb Service eterogenei nella realizzazione diun ulteriore servizio è la disponibilità di de-scrizioni ricche e molto accurate dei servizistessi (il loro “contratto di utilizzo”); inoltre,per velocizzare e semplificare la ricerca, ilconfronto e la negoziazione tra diversi serviziche soddisfano un certo profilo tecnico econtrattuale, tali descrizioni devono esserepubblicamente accessibili e analizzabili tra-mite un processo automatico.Il primo passo in questa direzione è rappre-sentato dalla standardizzazione dei linguag-gi di descrizione delle interfacce dei servizi(WSDL, UDDI), ma, guardando gli elenchi diWeb Service disponibili in rete (come peresempio http://www.xmethods.com), si no-ta che la ricerca e la pubblicazione di WebService si basano sull’ipotesi che i terminiusati siano comprensibili a tutti i soggetticoinvolti. Al momento sembra ancora impos-sibile costruire un servizio senza che il cliente il server concordino sull’uso dei terminidella transazione che si vuole realizzare.Il motivo per cui è necessaria questa con-trattazione preliminare non è connesso aiWeb Service in sé, ma a un limite intrinsecodi XML: il fatto che XML sia agevolmentetrattabile con sistemi automatici non ne ga-rantisce di per sé la totale interoperabilità.XML permette di inviare messaggi trattabiliin modo automatico, ma che quei messaggiabbiano senso per il destinatario non puòessere garantito da un’analisi automatica.Con questo non si vuole sminuire il ruolo ri-coperto dall’XML, ma precisare che essopuò offrire solo interoperabilità sintattica estrutturale (e già si è detto quanto questo

sia di aiuto per realizzare applicazioni distri-buite), ma non una reale condivisione di co-noscenza, quando non vi sia già una seman-tica condivisa.Come conseguire quindi interoperabilità tradue parti che non sono mai entrate in con-tatto prima? Per colmare questa lacuna etentare di rispondere a questa esigenza sipuò ricorrere alle ontologie, che sono speci-fiche formali di concettualizzazioni che de-scrivono una comprensione comune di undominio, la quale è concordata da una plu-ralità di soggetti e può essere deliberata-mente condivisa tra persone diverse e ap-plicazioni diverse.L’idea fondamentale del Semantic Web è af-fiancare al meccanismo di scambio di datialla base dei Web Service anche una descri-zione dei domini realizzata tramite ontolo-gie. L’uso delle ontologie permetterà in fu-turo di mediare tra sistemi molto eterogeneie (per esempio) di rendere la ricerca di WebService più efficace. Le ontologie, nate indi-pendentemente da XML e dai Web Service,hanno probabilmente trovato nel SemanticWeb la loro applicazione fondamentale, maper uscire dal mondo accademico ed avereuna concreta ricaduta sulle tecnologie dipiù largo uso occorre che siano espresse inun formato standard; anche in questo con-testo XML si è rivelato il miglior candidatoper rendere le ontologie lo standard di rife-rimento per denotare il significato dei termi-ni e rappresentare le relazioni che tra essiintercorrono. È auspicabile che in futuro,anche grazie a tutta l’infrastruttura tecnolo-gica messa a disposizione da XML, le onto-logie permettano la realizzazione di applica-zioni sempre più complesse, che riescanoprogressivamente a catturare il significatodei loro domini applicativi.

3.7. Standard per la descrizione di dominiapplicativi in XMLOltre che per gli scopi precedentemente de-scritti, XML è usato come standard per rap-presentare informazioni in moltissimi dominiapplicativi specifici. A titolo puramenteesemplificativo, ecco alcuni esempi di lin-guaggi usati in domini molto diversi tra loro,scelti tra i moltissimi standard esistenti:❙ HealthCare Level Seven (http://www.hl7.org);

M O N D O D I G I T A L E • n . 2 - g i u g n o 2 0 0 5

1

0

0

0

1

50

❙ Geography Markup Language (GML -http://www.opengeospatial.org);❙ Systems Biology Markup Language (SBML -http://sbml.org);❙ XML based Business Reporting standard(XBRL - http://www.xbrl.org );❙ Global Justice XML Data Model (GJXDM -http://it.ojp.gov/jxdm).

3.8. Il denominatore comuneCosa lega tutte le applicazioni viste finora?Perché XML si è rivelato particolarmenteadatto per tutte? Come si è visto, i contestiapplicativi descritti sono estremamente di-versi. Ad unirli è solo il bisogno di uno stan-dard semplice e generale. XML risponde aquesto bisogno in quanto è semplice da ela-borare da parte dei programmi e si basa suun modello dei dati semplice e intuitivo.

3.9. L’ostacolo comune: dove sono i dati ei documenti XML? Possiamo quindi pensare al Web (di oggi o didomani) come a un grande database di pub-blico accesso? È una definizione suggestiva,ma anche poco realistica, perché la maggiorparte dei dati è protetta da applicazioni che limascherano e ne limitano l’accessibilità. An-che se non mancano le applicazioni cheespongono i dati in formati aperti (tra cuiquelli citati precedentemente), è chiaro chela presenza di numerosi standard per la codi-fica e o scambio dei dati non può vincere diper sé la resistenza a rendere le informazionipubblicamente accessibili; ogni comunitàtenderà sempre a proteggere il proprio patri-monio informativo.

4. LINGUAGGIDI INTERROGAZIONEE TRASFORMAZIONE

Abbiamo visto come XML sia un linguaggiousato in contesti molto diversi. Questa ete-rogeneità nell’uso ha portato alla nascita didiversi linguaggi per interrogare e manipo-lare XML.Il linguaggio di trasformazione più noto èXSLT (eXtensible Stylesheet Language Tran-sformations), usato principalmente per ge-nerare pagine HTML partendo da dati in for-mato XML. Tra i linguaggi di interrogazione

il primo ad essere realmente usato è statoXPath, un linguaggio semplice dal limitatopotere espressivo. In parallelo, il mondo re-lazionale ha prodotto XML/SQL, un’esten-sione di SQL per i documenti XML. Da ulti-mo, il W3C sta concludendo il processo distandardizzazione per XQuery, il linguaggiopiù adatto per le interrogazioni. XQuery eXSLT permettono entrambi di esprimere tut-te le possibili interrogazioni e trasformazio-ni di documenti XML, ma nascono con scopidiversi e ben precisi, e risulta più facile ef-fettuare alcune determinate operazioni conXSLT e altre con XQuery.

4.1. XPathXPath è il linguaggio base per interrogare da-ti XML; permette di usare una sintassi similea quella dei pathname dei file per individuaregli elementi in base alla loro posizione nel-l’albero che rappresenta il documento (cioèper “navigare” nella struttura, come si dice avolte). Una espressione XPath è una stringacontenente nomi di elementi e operatori dinavigazione e selezione, che specificano i“passi” da compiere per raggiungere unaparticolare porzione del documento a partiredall’elemento radice:

. indica il nodo corrente

.. passa al nodo padre del nodo corrente/ passa a un nodo figlio del nodo corrente// passa a un discendente del nodo corrente@ passa a un attributo del nodo corrente* indica qualsiasi nodo[ ... ] predicato di selezione applicato al nodo[n] selesione per posizione (n è un numero)

Per esempio:

doc(musica.xml)//catalogo/disco

estrae tutti gli elementi <disco> contenuti inelementi <catalogo> del documento musi-ca.xml. È anche possibile selezionare gli ele-menti da estrarre applicando dei filtri concondizioni sul valore di sottoelementi conte-nuti negli elementi da estrarre, come in que-sto esempio

doc(“musica.xml”)//catalogo/disco[artista=‘Bob Dylan’]

M O N D O D I G I T A L E • n . 2 - g i u g n o 2 0 0 5

1

51

0

0

0

1

in cui si estraggono gli album di Bob Dylan, oin base a condizioni su sottoelementi di ele-menti in cui l’elemento di interesse è conte-nuto. Per esempio, questa interrogazione

doc(“musica.xml”)//catalogo/disco[artista=‘L. Cohen’]/titolo

estrae solo i titoli degli album di Leonard Cohen.

4.2. XSL/XSLTXSLT è un linguaggio basato su regole (chia-mate template) e usato per trasformare undocumento XML in un altro documento XMLo in un altro tipo di documento (spessoHTML). Più template che concorrono allatrasformazione di una determinata tipolo-gia di documenti sono raccolti in fogli di sti-le (o stylesheet), e si dice che un dato out-put è il risutato dell’applicazione del fogliodi stile al documento in input.Ogni template XSLT si applica a specificielementi XML, opportunamente identifica-ti, e produce come risultato altri elementiXML o qualsiasi altro tipo di informazionetestuale. Durante la sua esecuzione, untemplate può anche aggiungere o eliminareelementi, cambiarne l’ordine e filtrare glielementi oggetto della trasformazione inbase al valore dei loro attributi o sottoele-menti. Intuitivamente, possiamo immagi-nare queste trasformazioni come trasfor-mazioni di alberi XML in altri alberi che de-scrivono la struttura sintattica del risultato(anche se non XML).Per selezionare gli elementi su cui agiscono, itemplate utilizzano XPath. Per caratterizzare

le parti del documento XML sorgente a cuiapplicare le trasformazioni, quindi, si posso-no esprimere sia vincoli di tipo strutturale, in-dividuando elementi in specifiche posizioni,sia vincoli sui valori, considerando solo glielementi le cui sotto-parti soddisfano oppor-tune condizioni.Il motore di esecuzione delle regole procedea una scansione ordinata del documento sor-gente in base alla gerarchia degli elementi(più precisamente, una visita ricorsiva cheesplora di ogni nodo tutti i figli seguendol’ordine da sinistra a destra dell’albero);quando nella scansione si incontra un ele-mento XML che soddisfa le condizioni di unaregola, quest’ultima produce in output il con-tenuto specificato al suo interno, ed even-tualmente specifica come deve proseguirel’esecuzione. Le parti per cui non viene trova-ta nessuna corrispondenza con i templatevengono attraversate senza che ciò abbia al-cun effetto (vedi riquadro 1).Vediamo ora un semplice esempio. Con riferi-mento al codice del riquadro 1, dopo il prolo-go, che specifica che uno stylesheet è a tuttigli effetti un documento XML, l’elemento ra-dice <xsl:stylesheet> definisce l’inizio del fo-glio di stile, il cui contenuto è rappresentato,in questo caso, da una sola regola, definitanell’elemento <xsl:template>.L’attributo match è usato per definire gli ele-menti a cui il template deve essere applicato;nell’esempio il template si applica alla solaradice del documento (la semplicissimaespressione XPath ‘/’ individua, infatti, taleelemento).La parte rimanente del template (in verde) èla porzione di documento restituita in out-put; in questo caso si tratta della struttura diuna pagina HTML che contiene solo una ta-bella con una intestazione e nessuna riga. Sevisualizzato in un browser, il risultato apparecome di seguito.

Vediamo ora di definire una trasformazioneche riempie la tabella con I dati contenutinel documento precedentemente conside-rato. Per farlo, ci serviremo della direttiva<xsl:value-of> che seleziona il valore di un

M O N D O D I G I T A L E • n . 2 - g i u g n o 2 0 0 5

1

0

0

0

1

52

<?xml version=“1.0” encoding=“ISO-8859-1”?><xsl:stylesheetversion=“1.0”xmlns:xsl=“http://www.w3.org/1999/XSL/Transform”>

<xsl:template match=“/”>

<html><body>

<table border=“1”><tr><th>Album</thv<th>Autore</th><th>Etichetta</th></tr>

</table></body>

</html>

</xsl:template></xsl:stylesheetv

Dati in output

RIQUADRO 1

Album Autore Etichetta

elemento del documento XML sorgente dimodo da poterlo inserire nel risultato (vediriquadro 2).La direttiva value-of utilizza un attributo se-lect per denotare attraverso un’espressioneXPath gli elementi di cui produrre in output ilcontenuto. Nell’esempio qui sopra si estrag-gono alcuni dati dal secondo album nel cata-logo del primo produttore.

L’esempio presentato funziona corretta-mente perché estrae solamente un album.Ma se rimuovessimo il selettore di posizio-ne del disco [2] le prime due espressioniXPath restituirebbero tanti dati quanti ve nesono nel documento, e pertanto i titoli e gliautori sarebbero visualizzati tutti nella stes-sa casella?

Per assegnare correttamente titolo, autoree casa discografica a righe diverse della ta-bella occorre sfruttare un costrutto che de-finisce una iterazione: <xsl:for-each> iteral’esecuzione di quanto contenuto al suo in-terno per tutti i dati risultanti dalla valuta-zione di una espressione XPath, ancora unavolta espressa nell’attributo select (vedi ri-quadro 3).Questa trasformazione, dopo l’inserimentodell’intestazione della tabella, inserisce perogni album del catalogo, una riga con una ca-sella col titolo e una col nome dell’artista.

Si noti come le select di direttive contenutein una direttiva più esterna utilizzino espres-sioni XPath che proseguono la discesa nellagerarchia del documento da dove si era fer-

mata la discesa definita nella direttiva che lecontiene. Nell’esempio le select degli ele-menti che costruiscono le caselle nelle ta-belle (titolo, artista, ../../nome) sono la pro-secuzione della path expression produtto-re/catalogo/disco. Si noti inoltre che per in-cludere l’etichetta nella tabella sono neces-sari due passi “verso l’alto” (realizzati conl’operatore “..” che accede al nodo padre delnodo corrente), fino all’elemento <produtto-re>, da cui poi ridiscendere per recuperarneil nome.Gli elementi su cui iterare l’applicazione diuna trasformazione possono essere filtratiper considerarne solo un sottoinsieme; aquesto scopo si sfruttano i predicati ammes-si nelle espressioni XPath. Per esempio l’ag-giunta di un predicato all’attributo selectpermette di aggiungere alla tabella solo le ri-ghe relative agli album di Ray Charles:

M O N D O D I G I T A L E • n . 2 - g i u g n o 2 0 0 5

1

53

0

0

0

1

<xsl:template match=“/”><html>

<body><table border=“1”><tr> <th> Album</th> <th> Autore </th> <th> Etichetta </th> </tr><tr><td><xsl:value-of

select=“produttore[1]//disco[2]/titolo” /></td><td><xsl:value-of

select=“produttore[1]//disco[2]/artista”/></td><td><xsl:value-of select=“produttore[1]/nome” /></td> </tr>

</table></body>

</html></xsl:template>

RIQUADRO 2

RIQUADRO 3

Album Autore Etichetta

La Città Vecchia F. De André Karim

Album Autore Etichetta

Nuvole Barocche Fabrizio De André KarimLa Città Vecchia.. F. De André

Album Autore Etichetta

Nuvole Barocche Fabrizio De André Karim

La Città Vecchia F. De André Karim

<xsl:template match=“/”>

<html><body>

<table border=“1”><tr><th>Album</th><th>Autore</th><th>Etichetta</th></tr><xsl:for-each select=“produttore/catalogo/disco”>

<tr> <td><xsl:value-of select=“titolo”/></td><td><xsl:value-of select=“artista”/></td><td><xsl:value-of select=“../../nome”/></td> </tr>

</xsl:for-each>

</table></body>

</html></xsl:template>

<xsl:for-each select=“produttore/catalo-go/disco[artista='Ray Charles']”>

Oltre a selezionare in base al valore di uncerto sottoelemento, è possibile, con la di-rettiva <xsl:sort/>, ordinare gli elementi inbase al valore di uno dei loro sottoelemen-ti, indicato come al solito attraverso unaespressione XPath inserita nell’attributoselect. Per esempio si può ottenere un or-dinamento degli album in base all’ordinealfabetico dei loro autori con la seguentemodifica:

XSLT offre anche caratteristiche mutuate dailinguaggi di programmazione, come la possi-bilità di effettuare test condizionali. In que-sto ultimo semplice esempio:

<xsl:if test=“prezzo != 10”>…trasformazione…

</xsl:if>

si vincola l’applicazione di una trasformazio-ne al fatto che il prezzo sia diverso da 10.

4.3. XQueryXQuery è il linguaggio standard per interroga-re documenti XML. Il nucleo di XQuery è rap-presentato dalle flwor expression, il costruttopiù versatile del linguaggio. Ogni interrogazio-ne è costruita con espressioni che possono es-sere annidate le une dentro le altre; la costru-zione di una flwor expression può essere assi-milata a quella di una classica espressione se-lect-from-where dell’SQL. Inoltre, XQuery sup-porta la costruzione di nuovi frammenti XML diarbitraria complessità, sia ex-novo sia ricombi-nando arbitrariamente i frammenti estratti.Una flwor expression si compone di cinqueclausole (flwor deriva dalle loro iniziali):❙ for per iterare l’esecuzione in base a

sequenze di valori❙ let per legare singole variabili a inte-

re sequenze di valori

❙ where per esprimere predicati❙ order by per imporre un ordinamento al ri-

sultato❙ return per costruire il risultatoLa return e una almeno tra for e let sono ne-cessarie, le altre sono opzionali. Esempio:

for $cd in doc (“musica.xml”)//discoreturn $cd

La clausola for valuta l’espressione che defi-nisce la variabile $cd, ottenendo un insiemedi elementi, e itera all’interno di tale insieme,assegnando alla variabile $cd un riferimentoad un diverso elemento dell’insieme per ogniiterazione.La clausola return costruisce il risultato del-l’interrogazione. L’esempio restituisce sem-plicemente l’insieme dei valori di $cd, cioè ditutti i dischi che si trovano nel documento“musica.xml”Le clausole let consentono di introdurre va-riabili legate a insiemi di valori:

let $tuttiCD := doc(“musica.xml”)//discoreturn count( $tuttiCD )

La clausola let valuta l’espressione (//disco)e assegna l’intero insieme dei dischi alla va-riabile $tuttiCD. La valutazione di una clauso-la let non effettua alcuna iterazione, ma ge-nera un singolo assegnamento della variabi-le all’intero insieme restituito dall’espressio-ne, passato poi nella return alla funzione chene conta gli elementi.La clausola where esprime una condizione:solamente gli assegnamenti (operati da for elet) che la soddisfano sono utilizzati dallaclausola return. Le condizioni nella clausolawhere possono contenere diversi predicati inAND o in OR. Per esempio:

for $cd in doc(“musica.xml”)//discowhere $cd/artista=“F. De André” and$cd/@anno<“1980”return $cd

restituisce tutti i dischi di De André antece-denti al 1980. Si noti che @anno è precedutodall’operatore XPath ‘@’poiché è un attributo.La clausola return definisce l’output di unaflwor expression, e può essere un nodo, una

M O N D O D I G I T A L E • n . 2 - g i u g n o 2 0 0 5

1

0

0

0

1

54

<xsl:for-each select=“produttore/catalogo/disco”>

<xsl:sort select=“artista”/>

<tr> <td><xsl:value-of select=“titolo”/></td>

<td><xsl:value-of select=“artista”/></td> </tr>

</xsl:for-each>

sequenza ordinata di nodi o un valore ato-mico. Può contenere costruttori di elemen-ti, riferimenti a variabili definite nelle clau-sole for e let ed espressioni annidate. Un co-struttore di elemento consta di un tag inizia-le e di un tag finale che racchiudono una li-sta di espressioni che determinano il conte-nuto di tale elemento:

<ElencoAlbumEurope>{ for $pro in doc(“musica.xml”)//produttore

let $cdEur := $pro/disco[artista=“Europe”]return <CasaDiscografica>

{ $pro/nome,$cdEur/titolo }

</CasaDiscografica>}</ElencoAlbumEurope>

In questo caso, all’interno di un unico elemen-to esterno ElencoAlbumEurope, per ogni pro-duttore viene generato un elemento CasaDi-scografica contenente il nome del produttoree un elenco dei titoli degli album degli Europetutti i titoli degli album estratti (selezionati inbase all’artista) sono inseriti in un unico ele-mento.La clausola order by ordina i frammentiestratti in base a uno o più sottoelementi.Per esempio questa interrogazione

for $cd in doc(“musica.xml”)//discoorder by $cd/titoloreturn <cd>

{ $cd/titolo, $cd/artista }

</cd>

estrae i dischi ordinati rispetto al titolo.Oltre ai costrutti delle FLWOR Expression,XQuery contiene anche un ricco insieme difunzioni predefinite, e offre la possibilità didefinire nuove funzioni, in cui si possonousare tutti i costrutti classici della program-mazione (if-then-else, cicli while, ciclifor,...).

4.4. SQL/XMLSQL/XML (www.sqlx.org) è l’estensione diSQL (parte di ANSI/ISO SQL 2003) per XML.Mentre XQuery è XML-centrico, SQL/XML èSQL-centrico. Esso permette di creare strut-

ture XML con poche e potenti funzioni dedi-cate. SQL/XML è più semplice da imparareper un utente SQL e può sfruttare gli stru-menti a disposizione per il mondo relazio-nale, ma XQuery, linguaggio nato apposita-mente per i dati semi-strutturati, si adattameglio alle peculiarità del diverso modellodei dati.

4.5. XQBE (XQuery By Example)XQBE (XQuery By Example) è un dialetto gra-fico di XQuery che includiamo in questa ras-segna anche perché sviluppato dagli autoripresso il Politecnico di Milano. XQBE si ispiraa QBE (Query By Example), l’interfaccia grafi-ca per la formulazione di semplici interroga-zioni SQL di MS Access®. XQBE è stato pro-gettato per essere intuitivo e semplice damappare su XQuery, ed essere quindi un'in-terfaccia grafica capace di appoggiarsi suivari motori XQuery esistenti.Il successo ottenuto da QBE dimostra cheun'interfaccia visuale per un linguaggio diinterrogazione è efficace quando è basatasu un’astrazione grafica del modello dei da-ti da interrogare. Rispettando tale princi-pio, XQBE è basato su strutture grafiche adalbero con annotazioni, che rispecchiano lanatura gerarchica di XML e in cui gli ele-menti sono rappresentati da rettangoli, gliattributi da pallini neri, i PCDATA da pallinibianchi.XQBE permette di costruire flwor expres-sion annidate, di inserire nuovi elementiXML e di ristrutturare documenti esistenti.Tuttavia il potere espressivo di XQBE è limi-tato rispetto a quello di XQuery. Per esem-pio non è supportata la definizione di fun-zioni da parte dell'utente o l'uso della di-sgiunzione. Queste limitazioni sono precisescelte progettuali, ritenute necessarie perottenere un linguaggio sufficientementesemplice.Nella figura 2 vediamo l’interrogazione XQBEche estrae tutti i dischi di Fabrizio De Andréprecedenti al 1990, mostrandone l’anno dipubblicazione e il titolo.L’interrogazione è divisa in due parti: la par-te sinistra descrive quali condizioni voglia-mo porre sui dati da estrarre, la parte de-stra, il documento da costruire. Nell’esem-pio la parte sinistra estrae tutti gli elementi

M O N D O D I G I T A L E • n . 2 - g i u g n o 2 0 0 5

1

55

0

0

0

1

“disco” che siano discendenti dell’ elemen-to iniziale (radice) “musica”, che contenga-no un sotto-elemento “artista” il cui valoreè “F. De André” e con un attributo “anno”minore di 1990. I dischi così selezionati so-no “trasportati” per mezzo di un bindingedge (collegamento a forma di fulmine) nel-la parte destra, dove sono utilizzati per co-struire il risultato: nell’esempio se ne trat-tengono solo l’attributo “anno” e il sotto-elemento “titolo”. Qui di seguito, la stessainterrogazione espressa in XQuery:

5. LO STATO DELL’ARTEDELLA TECNOLOGIA

Gli strumenti per estrarre informazioni da fontiXML si possono classificare in due tipologie:1. Sistemi di pura interrogazione: si limitanoa caricare in memoria centrale i documentidal file system e a eseguire interrogazioni otrasformazioni su di essi.2.Sistemi che offrono un supporto persisten-te: hanno un proprio sistema di gestione del-

la memoria (sia volatile sia persistente) e diindicizzazione, che aumentano notevolmen-te l’efficienza delle interrogazioni e permet-tono di manipolare documenti molto piùgrandi di quanto permettano i primi.

5.1. Sistemi di pura interrogazione

Sax e DomLe tecnologie più usate dai linguaggi di pro-grammaziono sono DOM (Document ObjectModel) e SAX (Simple Api for Xml). Queste duetecnologie offrono ai programmatori alcunepotenti astrazioni per realizzare in modo sem-plice il codice che naviga o modifica dati in for-mato XML (arrivino da file, dalla rete o sianocreati ad hoc all’interno dell’aplicazione).Le differenze tra queste due tecnologie sonopoche ma importanti, specialmente dal pun-to di vista delle prestazioni. DOM è un model-lo a oggetti di facile utilizzo, basato su classiche creano in memoria una rappresentazionead albero del documento XML. SAX, invece, èuna tecnologia più “leggera”, basata sueventi e priva di un proprio modello a ogget-ti; questo significa che richiede di creare un“parser” ad hoc per processare ogni docu-mento XML, ma si tratta anche della soluzio-ne ideale per trattare documenti di grossedimensioni.

IPSI-XQL’IPSI XQuery Demonstrator (IPSI-XQ) è unprototipo che implementa XQuery secondo lespecifiche del W3C. Le interrogazioni vengo-no eseguite precaricando in memoria centra-le il documento, quindi è uno strumento po-co efficiente per interrogare documenti digrandi dimensioni; è però un ottimo stru-mento per imparare XQuery.

5.2. Sistemi che offrono un supportopersistente

SQL Server 2005 (Yukon)Yukon, l’edizione di Microsoft© SQL Serverche sarà disponibile a breve (2005), intro-duce il supporto ad XQuery per interrogare idati memorizzati in colonne con tipo XML.Per agevolare la scrittura di query, in MSSQL Server Workbench è stata introdottauna finestra di progettazione dedicata a

M O N D O D I G I T A L E • n . 2 - g i u g n o 2 0 0 5

1

0

0

0

1

56

for $d in doc(“musica.xml”)/musica//disco

where $d/artista = “F. De André” and $d/@anno < 1990

return <disco anno=“{ $d/@anno }”>

{ $d/titolo }

</disco>

FIGURA 2Interfaccia grafica XQBE

XQuery, XQuery Designer, per creare querysemplicemente selezionando e trascinandoi nodi XML dalla rappresentazione dellastruttura dei dati. L'editor di testo può sem-pre essere utilizzato per aggiungere co-strutti XQuery complessi. È possibile utiliz-zare XQuery Designer per creare query dainserire poi all'interno di istruzioni select oper la creazione di report.

OracleOracle gestisce i dati in formato XML attra-verso XSU (XML/SQL Utility), una interfacciaper java e PL/SQL (linguaggio di programma-zione proprietario di Oracle). Grazie a XSU, idocumenti XML dotati di struttura regolarepossono essere inseriti in una o più tabelle.Tutto ciò è facilitato dalla tecnologiaobject/relational di Oracle, in cui una tabellapuò contenere altre tabelle annidate; ciò per-mette di mappare direttamente l’annidamen-to gerarchico dei documenti XML.

DB2DB2 gestisce i dati in formato XML sfruttandoun file DAD (Data Access Definition), a suavolta in formato XML, in cui viene specificatala mappatura dei documenti in input: un do-cumento XML può essere inserito in una opiù tabelle utilizzando una funzione che ac-cetta come parametri il documento da pro-cessare e un DAD, che indica la colonna didestinazione per ogni elemento XML.

Tamino Software AGTamino XML Server di software AG consentel’archiviazione, la gestione e la pubblicazio-ne di documenti XML. Esso offre le capacitàdi storage nativo XML e di interrogazione deidati. Inoltre, il prodotto offre servizi cosiddet-ti “di classe enterprise” (sicurezza, affidabi-lità, clustering, fault tolerance ecc...). Lo sto-rage service è in grado di immagazzinare datisia in formato XML che non-XML (per esem-pio in formato grafico o video), abilitandoXML Server anche come soluzione di gestio-ne dei contenuti. Il motore di interrogazioneestende XPath e supporta XQuery.

XylemeXyleme, nato nel 1999 per iniziativa delgruppo Verso dell'INRIA, usa le proprietà

strutturali di XML per fornire maggiore pre-cisione alla ricerca di informazioni sul Web. Idocumenti XML sono letti e memorizzati lo-calmente in un data warehouse su cui sonodisponibili servizi per l’acquisizione e la me-morizzazione di documenti XML, la classifi-cazione semantica, la gestione temporaledelle versioni, l’interrogazione con sofisti-cate funzioni di ricerca nel testo e la gestio-ne a eventi dei contenuti.

eXisteXist (http://exist.sourceforge.net) è un da-tabase XML nativo open source capace dieseguire interrogazioni XQuery in modo effi-ciente sfruttando una opportuna indicizza-zione dei documenti. eXist supporta ancheXUpdate, un linguaggio di modifica di dati informato XML. Il sistema supporta XQuerynella versione del novembre 2003, ad ecce-zione del supporto per XML Schema.

6. CONCLUSIONI

XML, nato nel 1996 con lo scopo di offrire unmetodo semplice, ma generale e rigorosa-mente formalizzato, per separare il contenu-to informativo di un documento dalla sua for-mattazione, si è presto diffuso anche comelinguaggio per rappresentare i dati interna-mente alle applicazioni informatiche, oltreche come standard per lo scambio di infor-mazioni tra applicazioni che si trovano a coo-perare attraverso il Web.Questo articolo ha dapprima contestualiz-zato XML da un punto di vista “storico”, mo-tivandone la nascita e illustrando il percor-so che ha portato alla sua definizione. Suc-cessivamente ha offerto una rapida panora-mica su alcuni dei molteplici scenari d’usodi XML, e ha poi presentato le principali ca-ratteristiche dei suoi linguaggi di interroga-zione, soffermandosi in particolare suXPath, XSLT e XQuery. In conclusione, perdare uno sguardo anche allo stato dell’artedella tecnologia, si sono illustrate le princi-pali caratteristiche di alcuni sistemi di ge-stione di basi di dati che oggi supportanoXML e XQuery.È opinione degli autori che nei prossimi anniXMLe XQuery diverranno sempre più protago-nisti dell’evoluzione della rappresentazione e

M O N D O D I G I T A L E • n . 2 - g i u g n o 2 0 0 5

1

57

0

0

0

1

gestione dei dati, e saranno una parte semprepiù rilevante del bagaglio culturale dei profes-sionisti della società dell’informazione.

Bibliografia

[1] XML: http://www.w3.org/XML/

[2] XMLSchema: http://www.w3.org/XML/Schema

[3] Semantic Web: http://www.w3.org/2001/sw/

[4] SOAP: http://www.w3.org/2000/xp/Group/

[5] XQBE: http://dbgroup.elet.polimi.it/xquery/XQ-BE.html

[6] XQuery: http://www.w3.org/XML/Query

[7] XSLT: http://www.w3.org/Style/XSL/ù

M O N D O D I G I T A L E • n . 2 - g i u g n o 2 0 0 5

1

0

0

0

1

58

DANIELE BRAGA laureato in Ingegneria Informatica al Politecnico di Milano nel 2001, collabora col gruppo di Ba-si di Dati all'attività di ricerca sui linguaggi di interrogazione per dati semi-strutturati; sta terminando il dotto-rato di ricerca in Ingegneria dell'Informazione e partecipa all'attività didattica nell'ambito di vari [email protected]

ALESSANDRO CAMPI è ricercatore del Dipartimento di Elettronica e Informazione del Politecnico di Milano. Vi haconseguito nel 2004 il Dottorato di Ricerca in Ingegneria dell'Informazione. I suoi interessi riguardano i lin-guaggi di interrogazione visuali per dati semi-strutturati. È titolare del corso di Basi di Dati per Ingegneria del-le [email protected]

STEFANO CERI professore ordinario del Dipartimento di Elettronica e Informazione al Politecnico di Milano, è sta-to anche professore-visitatore all'Università di Stanford. I suoi interessi più recenti riguardano l’uso di XMLper la gestione dei dati e i metodi e gli strumenti per la progettazione di applicazioni Web. È autore di moltepubblicazioni internazionali, tra cui otto libri e circa duecento articoli su riviste e atti di [email protected]