Topincs 4, awesome

Da vecchio appassionato di wrestling in, ormai sempre più rare, occasioni davanti allo spettacolo offerto dai lottatori non potevo esimermi dall’esplodere nel coro “this is awesome”.

Lo stesso pensiero mi è balenato provando il nuovo topincs 4 (ad oggi giunto alla versione 4.2.2) rilasciato da Robert Cerny.

La grossa novità è il supporto a TMCL (Topic Maps Constraint Language – standard ISO 19756).

Che roba è questo TMCL? Detto in parole povere tratte dalla mia tesi di dottorato :

Il TMCL è un linguaggio vincolato per creare schemi di validazione per le Topic Maps (sostanzialmente è possibile paragonare il TMCL a ciò che rappresentano XML Schema e Document Type Definition (DTD) nel caso dei documenti XML). Utilizzando il TMCL è possibile esprimere obbligatorietà e ripetibilità degli elementi e dei costrutti previsti all’interno del TMDM o vincolare (anche tramite regular expression) il valore che questi possono assumere

Dunque Topincs 4 ci dovrebbe permettere, a titolo di esempio, di dichiarare che un soggetto produttore o, meglio, un’istanza di topic appartenente a una sottoclasse di agente, deve avere almeno un nome di tipo “forma autorizzata del nome”, può avere uno o più “altre forme del nome” etc.

Una volta creati tutti questi vincoli, magicamente la nostra interfaccia di inserimento è già creata da Topincs, che richiederà, continuando l’esempio precedente, che un topic di tipo ente (sottoclasse di agente) abbia un nome di tipo “forma autorizzata del nome” etc.

Ma veniamo a un esempio pratico:

Ipotiziamo di voler permettere che un topic di tipo “oggetto digitale” possa essere descritto con un dublin core semplice.

Ci sono diversi modi di esprimere dublin core in una Topic Maps: il più immediato potrebbe essere ridurre ogni elemento a un’occorrenza, ma nel nostro caso utilizzeremo la proposta di Steve Pepper (cfr. Expressing Dublin Core in Topic Maps) alla base poi dello standard ISO  29111.

Iniziamo dunque a indicare che la nostra istanza di oggetto digitale dovrà avere almeno un titolo (seguendo le istruzioni dello standard ISO 29111, un topic name con tipo di nome “title”/”titolo” o, in termini generali, un tipo di nome che abbia come subject identifier http://purl.org/dc/elements/1.1/title)

La figura 1 mostra la maschera per creare un vincolo di nome, in cui possiamo indicare l’obbligatorietà e la cardinalità (in questo caso 1:n), eventuali messaggi di errore da segnalare qualora la validazione fallisse etc.

Figura 1 – Creare un vincolo di nome

In maniera simile possiamo dichiarare altri vincoli (figura 2). La maschera per creare una propria “scheda” è piuttosto semplice: si sceglie il tipo di vincolo (nell’esempio in figura 3 “diritti” che è un tipo di occorrenza con subject identifier http://purl.org/dc/elements/1.1/rights) lo si associa a un tipo di topic (oggetto del vincolo), nel nostro caso “oggetto digitale” e si stabiliscono cardinalità e eventuali messaggi di commento o di errore.

Figura 2 - Topincs creazione di un vincolo

Figura 3 - Vincolo di occorrenza (diritti)

Figura 4 - Risultato: il vincolo creato

Per concludere l’esempio, prendiamo in considerazione la creazione di un vincolo per l’autore (il creator di dublin core), che sarà espresso sotto forma di una relazione (associazione, nel lessico delle Topic Maps) fra l’oggetto digitale è una persona o un ente.

Dunque ipotizziamo di aver già creato un tipo di associazione “Creator”/”Creatore” con subject identifier http://purl.org/dc/elements/1.1/creator.

Definiamo quindi un vincolo di ruolo per i nostri oggetti digitali:.

Per prima cosa dovremo indicare che l’associazione “creator” permette due ruoli (risorsa descritta e elemento collegato, figura 5) entrambi questi ruoli saranno obligatori (se ci sarà un’associazione “creator” un topic reciterà il ruolo di elemento collegato e uno di risorsa descritta, obbligatoriamente).

Figura 5 - Stabilire quali ruoli sono ammessi all'interno di un'associazione

Poi definiremo quali ruoli possa recitare i topic di tipo oggetto digitale: in figura 6 indichiamo che all’interno della relazione “Creatore” le istanze di oggetto digitale potranno recitare il ruolo di risorsa descritta.

Figura 5 - Stabilire quali ruoli può recitare un determinato tipo di topic all'interno di un'associazione

Indicando il vincolo corrispettivo per i topic di tipo “persona” e “ente” potremo limitare le associazioni di creato solo con i topic di questo tipo.

Il risultato finale è questa maschera di inserimento (figura 7), notare come siano marcati i campi obbligatori, la possibilità di aggiungere più elementi appaia solo se la cardinalità è multipla (il “+” nel caso di diritti è disattivo) e che come possibili topic associati per l’associazione di creazione vengano proposti solo persone ed enti.

Figura 7 - Maschera di inserimento risultato dei vincoli definiti

Topincs 4, in realtà, ha altre caratteristiche e sorprese… ma di questo cercherò di parlare in seguito, credo, tuttavia, che già questa funzione mostra le potenzialità dell’approccio visto che permetterebbe, senza modifica al database (ma solo via interfaccia) di passare da una descrizione basata su Dublin Core Simple, a una basata su DCTERMS a una basata su EAD (cfr. anche TMDBMS vs RDBMS ovvero, nuovo standard? No problema e il mio intervento “Standard Descrittivi E Standard Di Metadati”alla Conferenza Nazionale disponibile su slideshare).

About these ads

5 thoughts on “Topincs 4, awesome

  1. Pingback: Sulle intestazioni (Topincs Inside) « Cultural Heritage E-Libraries and Archives

  2. Pingback: Perché abbiamo bisogno di software di descrizioni flessibili « Cultural Heritage E-Libraries and Archives

  3. Pingback: Le maschere di inserimento sono semplici, ma excel è veloce (Tèopincs inside) « Cultural Heritage E-Libraries and Archives

  4. Pingback: Le maschere di inserimento sono semplici, ma excel è veloce (Topincs inside) « Cultural Heritage E-Libraries and Archives

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s