WebProtégé

De Cliomatica - Digital History
Tempo di lettura 12 minuti - per Federico Mazzoni


WebProtégé

Presentiamo adesso un breve tutorial esemplificativo su come mettere in pratica quanto abbiamo visto. Esistono diversi software che permettono di realizzare delle ontologie senza richiedere particolari conoscenze né di programmazione, né delle sintassi di RDF, RDFS e OWL.

In questo tutorial useremo WebProtégé, versione semplificata (e online) di Protégé: rispetto al programma principale, WebProtégé ha molte meno funzionalità (in particolare sono assenti alcune proprie di OWL), ma permette di accedere intuitivamente a una rappresentazione grafica della propria ontologia.

È possibile accedere a WebProtégé dall’indirizzo https://webprotege.stanford.edu/, previa (gratuita) registrazione.

Introduzione a WebProtegé

Dopo aver effettuato il log-in, si aprirà la seguente schermata, la home di WebProtegé:

InMazzoni1.png

Sarà sufficiente cliccare su Create New Project per creare un nuovo progetto. Nella schermata che si aprirà, dovremo includere il nome del progetto e, eventualmente, altre informazioni. Nell’immagine a lato descriviamo le varie funzioni.

InMazzoni2.png

Dopo aver compilato i vari campi, cliccando su “Create New Project” creeremo finalmente il nostro progetto, che apparirà nella home del sito.

Cliccando sull’icona del menù a destra, apriremo una finestra da cui aprire il progetto, aprire il progetto in una nuova finestra, scaricarlo o spostarlo nel cestino. È anche possibile aprire il progetto facendo doppio click sul suo nome.

InMazzoni3.png

Il progetto si aprirà nella sezione Classes. È possibile spostarsi cliccando sui rispettivi nomi in alto alla schermata.

InMazzoni4.png

Nell’ordine troviamo:

  • Classes: sezione dedicata alle classi dei vari individui. È possibile creare nuove classi e impostarne proprietà e relazioni (ovvero, è possibile creare una tassonomia di classi). owl:Thing è la classe convenzionale che include tutte le altre sottoclassi: per questo motivo, è estremamente sconsigliato impostarne proprietà o relazioni, che verrebbero “ereditate” da tutte le altre classi e individui;
  • Properties: sezione dedicata alle proprietà delle classi e degli individui, cioè da quell’oggetto che lega un elemento (con la funzione di soggetto) a un altro elemento (con la funzione di oggetto, e parliamo di Object Properties) o a un valore (e parliamo di Data Properties). owl:topDataProperty e owl:topObjectProperty sono la controparte di owl:Thing: delle classi convenzionali che racchiudono tutte le altre proprietà che l’utente è invitato a non modificare. Fra le proprietà sono presenti anche le Annotations Properties, la cui funzione è annotare l’ontologia per usi particolari (o per altri utenti che dovranno modificarla), ma non saranno oggetto di questo breve tutorial;
  • Individuals: sezione dedicata ai singoli individui che popolano l’ontologia (ad esempio la nave Andrea Doria). È possibile ordinarli per classe, come vedremo;
  • Comments, Changes by Entity e History: eventuali commenti, lista dei cambiamenti per ogni oggetto (o entità) presente e dell’ontologia in generale. Come le Annotations Properties, non riguardano il contenuto dell’ontologia in quanto tale, ma il documento che l’utente sta modificando.

Creare una classe

InMazzoni5.png
Proviamo adesso a creare una classe. Per farlo, andiamo nella sezione Classes e clicchiamo poi sull’icona con una + in alto a sinistra.

Nella finestra che si aprirà scriviamo il nome della nostra classe. Pensando all’Andrea Doria, la classe ideale è una nave: creiamo quindi la classe Ship [1]. La sezione relativa al tag linguistico può essere lasciata vuota [2] . La classe Ship sarà ora presente nella lista delle classi a sinistra, come sottoclasse di owl:Thing (che, ribadiamo, è fortemente consigliato non modificare).


InMazzoni6.png InMazzoni7.png

Se volessimo cancellare la classe, sarà sufficiente cliccare sull’icona con una x. La lente d’ingrandimento permette invece di cercare fra le classi create.

InMazzoni8.png
Notiamo al centro della schermata che possiamo impostare diversi campi: Annotations (in cui troviamo già un’annotazione di default: “Ship”, il nome che abbiamo dato alla classe, è formalmente il label che RDFS dà a quell’oggetto), Parents e Relationship. Poiché una nave è una sottoclasse di veicolo, proviamo a scrivere Vehicle in Parents. Aprendo un fumetto, il programma darà la possibilità di creare una nuova classe Vehicle, super-classe di Ship. Per farlo, sarà sufficiente cliccare sul fumetto.

Verrà così creata la classe Vehicle e inizierà a prendere forma una semplice tassonomia.

InMazzoni9.png InMazzoni10.png


InMazzoni11.png
È anche possibile creare prima la super-classe e successivamente la sotto-classe. Cliccando su owl:Thing per spostare su di lui la selezione, clicchiamo nuovamente sul pulsante + per creare una nuova classe, dedicata ai luoghi: Place . Analogamente, clicchiamo su Place e creiamo la classe dedicata al mare: Sea. Sea verrà creato come sottoclasse di Place.


Creare una proprietà (object)

InMazzoni12.png


Spostiamoci nella sezione delle proprietà, e analogamente a quanto abbiamo visto per le classi, creiamo la proprietà isUsedIn, la proprietà che unisce ciascun veicolo al luogo in cui è usato (una nave è usata in mare).


InMazzoni13.png
A sinistra, dove per classi era possibile impostare la classe parent, è possibile impostare dominio e range della proprietà. Il dominio è la classe che può essere “soggetto”, il range la classe “soggetto”. Nel nostro caso impostiamo la classe Vehicle come dominio e Place come range. Non è necessario impostare anche Ship e Sea: essendo rispettivamente Vehicle e Place, “ereditano” il loro appartenere al dominio o al range dalla rispettiva super-classe.

Abbiamo adesso creato una proprietà. Torniamo nella sezione delle classi per applicarla. Selezioniamo la classe Vehicle e, al centro della schermata, in basso, spostiamo la nostra attenzione sul campo Relationship. Qui possiamo scrivere il nome della proprietà di cui la nostra classe è soggetto (isUsedIn) e l’oggetto a cui è unita (Place). Operiamo analogamente facciamo con Ship: nel suo caso, però, l’oggetto a cui sarà collegata non sarà il generico Place, ma il più specifico Sea.

InMazzoni14.png InMazzoni15.png

A questo punto selezioniamo la nostra classe Ship e clicchiamo sulla seconda icona in alto al centro, sotto il nome della classe: simboleggia l’ Entity Graph, cioè il grafo dell’entità analizzato. Vedremo visualizzati tutti gli oggetti finora creati in qualche modo in relazione (diretta o indiretta) con la classe Ship.

InMazzoni16.png

Creare un individuo

InMazzoni17.png

Spostiamoci adesso nella sezione degli individui.

Notiamo nuovamente, in alto a destra, una famigliare icona con un +. Clicchiamoci sopra e creiamo l’individuo andreaDoria.[3] Ripetiamo l’operazione e creiamo oceanoAtlantico. A sinistra saranno apparsi i nostri due nuovi individui. Sopra di loro, il programma offre la possibilità di cercare individui dividendoli già per la classe a cui appartengono.

Al centro della schermata, possiamo definire la classe (Types) di ogni individuo e che in relazione si trova con altri individui (o, se usiamo una data property, valori). Definiamo andreaDoria come Ship e oceanoAtlantico come Sea.

Torniamo poi a andreaDoria, cliccando sul suo nome nella lista degli individui: noteremo che è stata compiuta una piccola inferenza. Poiché andreaDoria è di classe Ship, e la classe Ship è connessa a Sea della proprietà isUsedIn, allora anche andreaDoria sarà connessa a Sea dalla proprietà isUsedIn.


InMazzoni18.png

Il sogno di Berners-Lee è realizzato: la macchina è riuscita a ragionare attraverso un semplice sillogismo. Noi però vogliamo però essere più specifici, e dichiarare che andreaDoria è connessa da isUsedIn a uno specifico individuo di classe Sea: oceanoAtlantico.

InMazzoni19.png

Cliccando, come fatto precedentemente, sull’icona dell’Entity Graph possiamo visualizzare in che modo i vari oggetti si relazionano con andreaDoria.

InMazzoni20.png

Creare una proprietà (data)

Come ultimo esempio analizziamo come creare una data property. Le object property collegano un oggetto a un altro oggetto: ad esempio la classe Ship con la classe Sea, o l’individuo andreaDoria con l’individuo oceanoAtlantico. Le data property collegano un individuo con un valore: ad esempio una stringa (un libro con il suo titolo), una data, un valore di verità. Questi valori sono tutti definiti tramite i datatypes di XML. Per semplicità [4] utilizzeremo un valore di verità, ovvero un valore o true o false definito da xsd:boolean.

InMazzoni21.png
Torniamo nella sezione delle proprietà e selezioniamo Data Properties. Con la procedura già vista, creiamo una nuova proprietà: isDestroyed. Questa proprietà indica se il veicolo che ci interessa è distrutto oppure no.

Al centro, possiamo specificare il dominio e il range della proprietà, e se questa è Functional: cioè, se può avere associato un solo valore. Poiché un oggetto o è distrutto (e quindi è associato a true da isDestroyed) o non lo (è associato a false), selezioniamo che la nostra proprietà isDestroyed è Functional. Come dominio impostiamo Vehicle e come range xsd:boolean: i valori che la funzione può assumere sono i due previsti da xsd:boolean.

InMazzoni22.png

Torniamo quindi alla sezione relativa agli individui e aggiungiamo la proprietà, con valore true, a andreaDoria.

InMazzoni23.png


Bibliografia e sitografia

  1. Poiché le classi rappresentano degli oggetti universali, per convenzione il nome è sempre declinato al singolare, benché possano raggruppare più oggetti.
  2. Incontreremo spesso sezioni analoghe riservate a tag linguistici: in tutti i casi possono essere lasciate vuote.
  3. Per convenzione i nomi degli individui iniziano con lettera minuscola.
  4. Rimandiamo alla pagina dedicata ai datatypes di W3 per una ben più approfondita trattazione.https://www.w3.org/TR/xmlschema-2/



Citazione di questo articolo
Come citare: MAZZONI, Federico . "WebProtégé". In: CLIOMATICA - Portale di Storia Digitale e ricerca. Disponibile in: http://lhs.unb.br/cliomatica/index.php/WebProt%C3%A9g%C3%A9. il giorno: 29/06/2024.






Informare errori in questa pagina