MediaWiki si basa su un potente e complesso database, ricchissimo di dati. Tuttavia la sua "unità di misura elementare" è il contenuto dell'intera pagina, con l'eccezione di alcuni elementi particolari del suo contenuto (categorie, link ad altre pagine, interwiki); tutto il resto della pagina non è facilmente utilizzabile come "dato".

Per essere utilizzata come dato un'informazione dev'essere:

  1. caratterizzata da un contenuto ben definito
  2. caratterizzata da un nome perfettamente definito
  3. caratterizzata da un metodo ben chiaro e perfettamente definito per la sua creazione, recupero, aggiornamento e cancellazione

MediaWiki al momento non fornisce strumenti specificamente dedicati alla gestione dei dati elementari all'interno delle pagine; un notevole passo in avanti potrà essere fatto al momento della piena implementazione del progetto Wikidata. Non è chiaro se l'implementazione di WikiData sarà sufficiente a emulare le caratteristiche di SemanticWiki (ossia, delle caratteristiche che permettono di "disseminare", all'interno della pagina, vere e proprie variabili).

Avendone la necessità o il desiderio, è comunque possibile sfruttare alcuni strumenti del software o del normale HTML per inserire, con un certo impegno e con tecniche sviluppate localmente, dei veri "dati", ideando e implementando metodi per il loro contenuto, nome e metodo di gestione.

Template

modifica

Da un certo punto di vista, i template costituiscono veri "contenitori di dati". Questo non vale per il codice del template, usualmente memorizzato in nsTemplate, ma per il codice di chiamata al template, costituito da un nome generale (il nome del template) e da una serie di parametri individuati implicitamente dalla loro posizione o direttamente per nome.

{{quickbar
| image=
| localizzazione= [[Immagine:Deutschland Lage des Saarlandes.svg|200px|Cartina della Germania con il land di Saarland evidenziato in colore più scuro]]
| bandiera= [[Immagine:Flag of Saarland.svg|noframe|100px|center]]
| capitale=[[Saarbrücken]]
| superficie=  2,569 km²
| abitanti= 1,039,000 (<small>2007</small>)
| sito=[http://www.tourismus.saarland.de/ <small>Sito ufficiale del turismo</small>]
}}

Dall'esempio, preso dalla pagina Saarland, si vede che il codice della chiamata a quickbar contiene proprio una serie di "nomi di variabili" (localizzazione, bandiera, capitale...) ognuno appaiato con un "valore della variabile". Notiamo anche che in realtà per identificare ognuno dei dati è necessario considerare anche il nome della pagina che contiene il template: Saarland. Nell'esempio, il nome completo del "dato" capitale potrebbe essere considerato essere Saarland.quickbar.capitale o meglio ancora itwikivoyage.Saarland.quickbar.capitale. Con questo "nome" a disposizione, da qualsiasi punto del web è possibile accedere al contenuto della variabile. Tuttavia i dati non sono strutturali, in mediawiki, per essere utilizzati in questomodo,ma solo per essere utilizzati per uso interno; questo significa che viene lasciato all'utente il compito di ideare dei metodi che ripeschino il dato. La cosa si può fare, ma non è affatto semplice.

Labeled sections

modifica

L'estensione LST (Labeled Section Transclusion), utilizzata prevalentemente in wikisource, NON nasce per la gestione di dati ma di frammenti, più o meno lunghi, di testo "marcati" in modo invisibile da due tag speciali tipo <section begin=nome /> e <section end=nome />. Agli utenti che hanno "occhio" per la gestione dei dati, è apparso rapidamente evidente che questo sistema consentiva di inserire nelle pagine delle vere e proprie variabili, senza minimamente interferire con la visualizzazione della pagina: ciò che è contenuto fra i due tag può essere considerato il valore della variabile mentre il nome della section può essere considerato il nome della variabile. Le cose sono anche più semplici del caso precedente: il nome completo della variabile, per recuperarne il contenuto, potrebbe essere semplicemente itwikivoyage.Saarland.capitale.

Microformat

modifica

E' possibile utilizzare le normali caratteristiche dei tag html per "nascondere" il nome di una variabile in un attributo del tag (es. l'attributo class), e seguire la convenzione che il valore della variabile è costituito dal testo racchiuso dal tag. Ad esempio, scrivendo <span class="capitale">Saarbrücken</span> nella pagina Saarland, si possono immaginare tecniche per raggiungere il dato dal web, il cui nome completo è (esattamente come nel caso precedente) itwikivoyage.Saarland.capitale. Questo metodo ha un enorme vantaggio rispetto ai due metodi precedenti: viene conservato e può essere quindi recuperato sia dal codice wiki, che dal codice html della pagina in modalità view e non dipende da estensioni specifiche (come il metodo 2) nè dall'uso di specifici template (come il metodo 1).

Attributi html data

modifica

Con HTML5 vengono introdotti ulteriori attributi a contenuto libero nei tag html, caratterizzati dal prefisso data-. Questi attributo sono specificamente progettati per contenere dati; la parte finale del nome dell'attributo che segue il prefisso data- rappresenta il nome della variabile, il valore dell'attributo rappresenta il valore della variabile. Utilizzando questa convenzione, nella pagina Saarland, il nome della capitale può essere registrato con questa sintassi: <span data-capitale="Saarbrücken"></span>; nulla impedisce che lo stesso tag contenga variabili multiple, ciascuna scritta con la stessa convenzione: <span id="dati" data-capitale="Saarbrücken" data-superficie="2,569 km²" data-abitanti="1,039,000" ..... ></span>. Nonostante il metodo sia stato sviluppato per HTML5, può essere utilizzato immediatamente in qualsiasi tag nei siti MediaWiki attuali. Notate che perchè si possa ripescare il dato, occorre "marcare" il tag HTML in modo che possa essere distinto da tutti gli altri (che potrebbero essere migliaia!) presenti nella stessa pagina; a questo serve l'attributo "id" che ho aggiunto nel tag span. Il nome completo della variabili, in questo caso, per rintracciarle a colpo sicuro nel mare magnum web, sarebbe itwikivoiage.Saarland.dati.capitale, itwikivoiage.Saarland.dati.superficie, itwikivoiage.Saarland.dati.abitanti....

Dalla teoria alla pratica

modifica

Nella pratica occorre porsi innanzitutto due domande, essenziali per capire se vale la pena di implementare delle informazioni come "dati" e, solo se la risposta è SI, quale implementazione è la migliore:

  1. che dati mi servono?
  2. cosa ne voglio fare?

Dopodichè occorre lavorare su questi altri problemi:

  1. tecnicamente, come posso recuperare i dati?
  2. come posso utilizzarli per elaborarli?
  3. come posso aggiornarli o cancellarli?
  4. come posso rendere la procedura abbastanza semplice perchè qualsiasi utente che modifica la pagina li gestisca in modo corretto - ossia li inserisca con accuratezza per quanto riguarda il contenuto, e rispettando rigorosamente la sintassi richiesta per quanto riguarda l'associazione fra contenuto e nome?

Mica facile. :-P