• Non ci sono risultati.

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.