DELLA STRUTTURA SINTAGMATICA DI UNA FRASE
6.3 XML TOPIC MAPS ( XTM )
Le specifiche XTM 1.0 sono state sviluppate in seno al consorzio TopicMaps.org e incluse successivamente nella seconda edizione dello standard 13250 del 2003. L’obiettivo è consentire che il paradigma delle Topic Maps sia immediatamente applicabile al web. Negli anni successivi, il lavoro di sviluppo delle specifiche è proseguito culminando con la pubblicazione della versione 2.0 del 2007 (ISO/IEC IS 13250‐3:2007).
L’XTM non è, tuttavia, l’unico formato esistente per la serializzazione delle Topic Maps. Altri sistemi sono stati proposti in alternativa per far fronte ad alcuni difetti dell’XTM, quali l’eccessiva verbosità e la lentezza nella costruzione manuale delle topic maps, quali AsTMa, una famiglia di linguaggi sviluppata allo scopo di supportare la creazione, l’aggiornamento, la definizione di vincoli e processi di querying sulle TM; e LTM (Linear Topic Map Notation), un semplice formato testuale per TM. In seguito si è lavorato sulla possibile fusione di queste due proposte, elaborando CTM (Compact Topic Maps syntax), una proposta che sta avendo una buona accoglienza presso la comunità degli sviluppatori [Bichiri, 2007], anche se al momento XTM resta l’unica sintassi standardizzata ISO.
XTM nasce con l’obiettivo di ottenere una sintassi per l’espressione e l’interscambio di topic map conforme ai seguenti requisiti:
• deve essere usabile in rete;
• deve essere semplice e, pertanto, gli elementi opzionali devono essere ridotti al minimo;
• deve essere human‐readable;
• deve essere in grado di supportare ed essere supportata da un vasto numero di applicazioni.
Dati questi requisiti, le prime specifiche 1.0 (definite tramite una DTD) prevedevano solo diciannove elementi e un unico attributo. Con il rilascio delle specifiche XTM 2.0, è stata proposta una revisione della precedente versione. Esse definiscono una sintassi basata su XML per l’interscambio di istanze del Topic Maps Data Model (che regola l’interpretazione della sintassi). La sintassi è stata definita tramite RELAX‐NG Schema (REgular LAnguage description for Xml Next Generation) [vedi Annesso A]. Il namespace per la sintassi XTM è http://www.topicmaps.org/xtm/ [RELAX‐NG, 2001].
Un documento XTM è, dunque, un documento XML conforme alla sintassi XTM. Senza entrare nel dettaglio della sintassi, vorrei ora definirne gli elementi base.
L’elemento topicMap è l’elemento radice di ogni documento XTM e può essere utilizzato per la reificazione di una topic map.
FIGURA 20 L'ELEMENTO TOPICMAP [GARSHOL, 2006].
L’elemento topic è usato per rappresentare i topic e funge da contenitore e punto di riferimento per le informazioni su questi. Gli elementi figli dell’elemento topic specificano la sua identificazione, i nomi e le occorrenze; mentre i ruoli associativi giocati dal topic sono specificati all’esterno dell’elemento topic. L’attributo id fornisce un identificatore univoco all’interno del documento per il topic, ed è usato per fare riferimento a esso.
FIGURA 21 L'ELEMENTO TOPIC [GARSHOL, 2006].
Questi i restanti elementi principali:
• l’elemento itemIdentity è usato per assegnare un identificatore di item al costrutto della topic map rappresentato dal suo elemento genitore;
• l’elemento subjectLocator è usato per assegnare un localizzatore di soggetto al topic che è rappresentato dal suo elemento topic genitore; • l’elemento subjectIdentifier è usato per assegnare un identificatore di
soggetto al topic che è rappresentato dal suo elemento topic genitore; • l’elemento instanceOf è usato per assegnare uno o più tipi al topic che è
rappresentato dal suo elemento genitore (anche i tipi sono dei topic, indicati dagli elementi figli dell’elemento instanceOf);
• l’elemento name è usato per aggiungere dei nomi all’elemento topic rappresentato dal suo elemento topic genitore (gli elementi figlio dell’elemento name forniscono i valori del topic name item);
• l’elemento value è usato per fornire il valore del nome del topic;
• l‘elemento variant è usato per aggiungere delle varianti di nome al topic name;
• l’elemento scope è usato per assegnare uno scope allo statement rappresentato dall’elemento genitore;
• l’elemento type è usato per assegnare un tipo al costrutto della topic map rappresentato dal suo elemento genitore (il tipo è sempre un topic, indicato dall’elemento figlio dell’elemento type);
• l’elemento occurrence è usato per assegnare una occorrenza al topic definito dall’elemento genitore;
• l’elemento resourceData rappresenta una risorsa informativa, quest’ultima può essere sia una variante di nome sia una occorrenza e può avere un datatype;
• l’attributo datatype contiene un IRI identificante il datatipo della risorsa che è rappresentata dall’elemento resourceData;
• l’elemento resourceRef indirizza a una risorsa informativa che può essere una occorrenza, se l’elemento genitore è occurrence, o una variante di nome, se l’elemento genitore è variant; • l’elemento association rappresenta le associazioni; • l’elemento figlio role dell’elemento association definisce i ruoli associativi dell’associazione; • l’elemento role è usato per assegnare un ruolo associativo all’associazione creata dall’elemento genitore association. FIGURA 22 L'ELEMENTO ASSOCIATION [GARSHOL, 2006].
L’elemento topicRef si riferisce a un topic, sia interno allo stesso documento XTM in cui esso è presente sia esterno. L’elemento mergeMap fa riferimento a un documento XTM esterno che è da fondere all’interno della topic map che lo contiene. Anche il processo di reificazione è esprimibile con una sintassi piuttosto semplice, come si vede nell’esempio che segue in figura:
FIGURA 23 ESEMPIO DI REIFICAZIONE [GARSHOL, 2006].
Data la grande diffusione di strumenti e lavori sviluppati sulla base delle specifiche XTM 1.0, appare utile riportare di seguito le principali modifiche introdotte con la pubblicazione della versione 2.0 (semplificazione dei nomi di alcuni tag, eliminazione di elementi obsoleti; facilitazione del processo di reificazione; etc.): • l’URI del namespace è stato cambiato; • l’attributo version è stato aggiunto all’elemento topicMap; • l’elemento parameters è stata sostituito da scope; • l’elemento roleSpec è stato sostituito da type; • l’elemento member è stato sostituito da role; • un singolo topic reference è ora obbligatorio come figlio di role; • l’elemento baseName è stato sostituito da name;
• l’elemento instanceOf è stato sostituito da type, ovunque tranne che all’interno di topic; • l’elemento type è ora consentito all’interno dell’elemento name; • gli elementi variantName e subjectIdentity sono stati eliminati; • l’elemento variant non può più essere nidificato; • l’elemento type è ora obbligatorio all’interno di occurrence, association e role; • l’elemento mergeMap non supporta più scope aggiuntivi; • l’attributo id è stato eliminato da tutti gli elementi tranne topic; • l’attributo reifies è stato aggiunto ad alcuni elementi;
• gli elementi itemIdentity, subjectLocator e subjectIdentifier sono stati aggiunti;
• l’elemento subjectIndicatorRef è stato eliminato; • XTM non usa più XLink e XML base;
• l’elemento mergeMap ora deve essere inserito prima di tutti gli elementi topic e association;
• l’attributo datatype è stato aggiunto a resourceData, che ora supporta anche markup embedded (questo cambiamento è importantissimo poiché tra i datatype accettati c’è xsd:anyURI; a seguito di tale modifica potremo aggiungere a ogni occurrence markup embebbed, anche con formattazione testuale) [Bichiri, 2007];
• l’attributo reifier è stato aggiunto, sostituendo la reificazione implicita presente nella sintassi 1.0 che usava l’elemento subjectIndicatorRef; • l’elemento baseNameString è stato sostituito dall’elemento value.