Il linguaggio ALN (Attributive Language with Number restrictions) è un formalismo appartenente alla famiglia dei linguaggi attributivi (AL), che è una famiglia di linguaggi derivati dai linguaggi descrittivi. I linguaggi AL sono stati introdotti come linguaggi minimali che sono di interesse pratico.
A cosa serve?
ALN è molto valido per la realizzazione di ontologie.
Quali sono i costrutti di questo linguaggio?
Essendo un linguaggio attributivo, possiede tutti i costrutti degli AL, che sono i seguenti:
|
Concetto Universale (Top Concept) |
|
Concetto Vuoto (Bottom Concept) |
|
Concetto Atomico |
|
Negazione Atomica |
|
Intersezione |
|
Restrizione di Valore su un Ruolo; indica che tutti gli individui che partecipano al ruolo R appartengono a C |
|
Restrizione di Esistenza su un Ruolo; impone l’esistenza di un individuo di C che partecipi alla relazione R |
Per aumentarne l’espressività, un linguaggio AL può essere esteso con ulteriori costrutti, come i seguenti:
|
Restrizioni Numeriche; (≥ n R), (≤ n R) indicano rispettivamente il numero minimo e massimo di volte che le istanze del concetto devono partecipare alla relazione R |
|
Unione |
|
Quantificatore Esistenziale Pieno |
|
Complementazione di un Concetto |
A seconda dei costrutti utilizzati per espandere il set di base, I linguaggi AL possono assumere diverse caratteristiche. La formula AL[N][U][E][C] viene utilizzata per indicare quale variante del linguaggio si sta utilizzando.
ALN è quindi, molto semplicemente, una variante di AL che supporta i costrutti per le Restrizioni Numeriche.
Antonio Cicirelli
Di cosa stiamo parlando?
La Rappresentazione della Conoscenza (Knowledge Representation) è una branca dell’intelligenza artificiale che studia il modo in cui avviene il ragionamento umano e si preoccupa di definire dei simbolismi o dei linguaggi che permettano di formalizzare la conoscenza al fine di renderla comprensibile alle macchine per potervi fare dei ragionamenti automatici (inferendo le informazioni presenti) ed estrarre così nuova conoscenza.
Quindi un punto chiave della rappresentazione della conoscenza è la definizione di linguaggi che siano sufficientemente espressivi da permettere di descrivere il dominio di interesse ma non troppo ricchi di espressività, in quanto richiederebbero troppe risorse e/o troppo tempo per applicare i meccanismi inferenziali.
In linea generale, i linguaggi di rappresentazione della conoscenza forniscono sia una serie di costrutti per definire la sintassi del dominio di interesse (le regole sulle quali costruire delle asserzioni accettabili), sia una serie di operatori (quantificatori, operatori modali, etc.) che permettano di dare un significato, un valore di verità alle asserzioni rispetto al modello di riferimento.
Attraverso il linguaggio scelto si andranno ad effettuare una serie di asserzioni sul mondo, che andranno insieme a costituire una Base di Conoscenza (KB Knowledge Base). È inoltre importante che il linguaggio scelto per fare le asserzioni sia anche in grado di operare sulla KB per estrarre nuova conoscenza e per aggiungerne di nuova.
Quali linguaggi utilizzeremo?
Utilizzeremo i Linguaggi Descrittivi, o Logiche Descrittive (DL), che sono attualmente i linguaggi più diffusi per la rappresentazione della conoscenza in quanto permettono di rappresentare in maniera semplice e rigorosa informazioni complesse e permettono altresì, attraverso il ragionamento, di distinguere la conoscenza implicitamente rappresentata, dalla conoscenza che è contenuta esplicitamente nella base di conoscenza.
Le logiche descrittive fanno uso di modelli di inferenza che si presentano in molte applicazioni dei sistemi intelligenti di elaborazione dell’informazione e che sono usati dagli esseri umani per strutturare e capire il mondo: la classificazione dei concetti e degli individui.
Le DL sono dotate di una serie di costrutti, un insieme di primitive ben formalizzate che portano alla definizione di tipi strutturali primitivi (concetti e ruoli) e di operazioni necessarie alla creazione di strutture (specializzazioni, restrizioni, differenziazioni).
Quindi l’elemento principale di queste logiche usato per rappresentare la conoscenza è il concetto; e possiamo subito effettuare una distinzione fondamentale tra 2 tipi di concetto:
- Concetto primitivo, che rappresenta un elemento di base del dominio che non si riesce a descrivere partendo da altri concetti del dominio. Inoltre un concetto primitivo specifica quelli che sono i requisiti necessari affinché un altro concetto del dominio possa appartenere a tale tipo.
- Concetto definito, che rappresenta un elemento che viene espresso sulla base dei concetti primitivi. Il concetto definito specifica quali sono le condizioni necessarie e sufficienti per rappresentare un termine del linguaggio.
Altra nozione importante è quella di ruolo (role o property) di un concetto che è, molto semplicemente, una relazione che descrive il legame tra i concetti e tra le istanze dei tipi definiti dai concetti.
Un esempio di concetto primitivo può essere quello di Prodotto all’interno di un dominio dei prodotti in vendita su una libreria on-line (vedi articolo Realizzazione di una Ontologia). Il concetto di Libro, invece, è un concetto definito e può essere espresso come segue:
Libro ≡ Prodotto ∩ ∀haFormato.Cartaceo
Questa formula – che sarà più chiara dopo aver visto i costrutti del linguaggio ALN – sta ad indicare che il concetto di Libro è espresso a partire dal concetto di Prodotto grazie all’uso del ruolo haFormato e del concetto Cartaceo.
Le caratteristiche chiave dei logiche descrittive risiedono proprio nelle costruzioni usate per la stabilizzazione dei rapporti fra i concetti.
Qual è la struttura di un Sistema basato sulle Logiche Descrittive?
Un Sistema di Rappresentazione della Conoscenza (KRS) basato sulla DL fornisce i mezzi per installare le basi di conoscenza, per ragionare circa il loro contenuti e per manipolarli.
Detto questo, diamo un’occhiata alle figure per capire meglio come è fatta l’architettura di un KRS e come funziona (clikka sulle immagini per ingrandire):
Due miei schemi che secondo me ben rappresentano
l’Architettura di un Sistema per la Rappresentazione della Conoscenza DL-based
Dalle prime due figure si evince chiaramente il ruolo delle Logiche Descrittive: esse sono alla base del Sistema, sono il suo fulcro centrale, sulla base del quale vengono costruiti i servizi veri e propri.
Vediamo in dettaglio gli altri componenti di un KRS:
- La TBox (Terminological Box) introduce la terminologia, cioè, il vocabolario di un domino di applicazione. Rappresenta la sintassi del dominio di interesse, l’Ontologia. In essa infatti sono contenuti i concetti del dominio e le relazioni che legano tali concetti.
La TBox rappresenta un tipo di conoscenza che viene comunemente definita intensionale, nel senso che essa è indipendente dal tempo e dalle circostanze.
- La ABox (Assertional Box) contiene la popolazione del dominio, ovvero le asserzioni circa le istanze (gli individui) dei concetti definiti nella TBox.
La conoscenza rappresentata dalla ABox viene invece definita estensionale, nel senso che essa dipende dal tempo e dalle circostanze, in quanto la popolazione del dominio è in continuo mutamento.
Inoltre, la semantica della ABox non necessita la conoscenza completa della realtà di interesse, ovvero rappresenta un semantic open-world (contrapposto al semantic close-world dei database tradizionali); questo significa che non è necessaria una formalizzazione completa della conoscenza, ma è sufficiente che essa sia compatibile con una situazione di conoscenza parziale.
- Servizi di Ragionamento (Reasoning): sono i servizi che permettono di dedurre nuova conoscenza a partire a da quella esplicitata nella Base di Conoscenza (Knowledge Base – KB), la quale altro non è che l’insieme di TBox e ABox.
Ogni KRS offre almeno due servizi di ragionamento, che possiamo definire fondamentali:- Sussunzione (Subsumption);
- Soddisfacibilità (Satisfiability).
Il servizio di sussunzione è un servizio che possiamo definire binario, in quanto opera su una coppia di concetti per volta, e ha come obiettivo quello di verificare che un concetto (sussuntore) è più generico di un altro (sussunto).
Ad esempio, tornando sempre alla nostra ontologia, la sussunzione controlla che il concetto di Prodotto sia più generico del concetto di Libro.Il servizio di soddisfacibilità è un servizio che serve a verificare che un concetto ammetta almeno un individuo; ovvero, riconducendolo alla sussunzione (o, meglio, alla non-sussunzione), si tratta di verificare che il sussunto di un concetto sia proprio il concetto vuoto.
Vediamo ora un altro schema classico che rappresenta l’architettura di un sistema di rappresentazione della conoscenza:
Tra i tanti linguaggi descrittivi, quale usiamo?
Tra i tanti linguaggi descrittivi entreremo nel merito degli Attributive Language with Number restrictions (ALN), che analizzeremo a fondo nel prossimo articolo.
Antonio Cicirelli
Come abbiamo visto nell’articolo relativo al Web Semantico, una Ontologia non è altro che il risultato finale di un processo di ingegnerizzazione della conoscenza.
Ma esattamente di cosa si tratta?
Per capire bene di cosa si tratta vediamo come viene comunemente definita:
Un’ontologia è una esplicita e formale specificazione dei concetti appartenenti ad un dominio e delle relazioni tra essi (Gruber, ’93)
Un’ontologia è un catalogo strutturato e limitato di concetti non ambiguamente definiti (Uitermark, ’01)
Quindi possiamo dedurre che un’ontologia altro non è che uno strumento per rappresentare la conoscenza, uno schema rigoroso e ben definito che ci permette di esprimere senza ambiguità i concetti e le relazioni che li legano relativamente ad uno specifico dominio di conoscenza.
È importante porre l’accento sul fatto che l’obiettivo è quello di rappresentare la conoscenza in maniera chiara, non ambigua. Se ci fossero delle ambiguità, i dati prodotti col ragionamento sarebbero inconsistenti, quindi inutili.
Un altro grande vantaggio di una ontologia è che, essendo una descrizione esplicita qualitativamente avanzata dei concetti di un dominio, può essere pubblicata e utilizzata per scopi differenti da quelli per i quali era stata prodotta. Esistono in rete svariati esempi di ontologie che sono condivise e accessibili a tutti, come per esempio la Dublin Core, OpenCyc oppure WordNet. Sulla base di tali ontologie ben standardizzate diventa più semplice sviluppare le proprie per fini più specifici.
Abbiamo detto che per realizzare un’ontologia bisogna passare per un processo di ingegnerizzazione della conoscenza.
Ma in cosa consiste questo processo?
Sappiamo dove vogliamo giungere con questo processo: alla definizione di una ontologia. Ma da dove partiamo?
FASE 1: Definizione del dominio e degli scopi dell’ontologia
Il punto di partenza si trova nel dominio di conoscenza che vogliamo modellare. Quindi bisognerà:
- Definire specificamente il dominio dell’ontologia
- Definire l’uso che si intende fare dell’ontologia
- Capire quali conoscenze rappresentate dall’ontologia saranno usate per dedurre nuova conoscenza
- Capire chi sarà l’utilizzatore finale dell’ontologia
Uno dei modi per capire specificatamente quale sia il dominio dell’ontologia è quello di stendere una lista di domande alle quali la base di conoscenza basata sulla nostra ontologia dovrebbe essere in grado di rispondere, domande di competenza – competency questions – (Gruninger and Fox 95).
Queste domande saranno inoltre utili in seguito per capire se l’ontologia contiene sufficienti informazioni e se il livello di dettaglio dei concetti è sufficiente o va ulteriormente dettagliato. Questa lista è solo una bozza e non deve necessariamente essere esaustiva.
FASE 2: Cercare e valutare la possibilità di usare una ontologia esistente.
È sicuramente una delle fasi più importanti e non va assolutamente sottovalutata. Infatti qualcun altro potrebbe aver già realizzato una ontologia sullo stesso argomento, risparmiandoci un sacco di fatiche e scervellamenti. Oppure può capitare che la nostra applicazione debba estendere una ontologia già esistente perchè ha la necessità di operare con applicazioni che già interagiscono con tale ontologia.
Per cui valutiamo sempre la possibilità di utilizzare e magari estendere una ontologia già esistente.
FASE 3: Definizione dei concetti
Si estraggono e si elencano tutti i termini relativi al dominio in esame, senza effettuare distinzioni a priori.
Da questo elenco si vanno ad individuare i termini che possono rappresentare i concetti e i termini che possono rappresentare le relazioni. Per quanto riguarda i concetti si preferisce utilizzare i sostantivi.
Una volta individuati i concetti, si passa alla definizione delle relazioni gerarchiche che sono presenti tra di loro. Ci sono tre approcci all’individuazione delle gerarchie:
- Top-down: si parte dai concetti più generali per giunger a quelli più specifici, fino al livello di dettaglio desiderato;
- Bottom-up: si parte dai concetti più specifici e si risale la gerarchia fino ai concetti più generali;
- Ibrido: si parte dai concetti di più immediata individuazione, per specificarli o astrarli dove necessario.
I concetti sono anche definiti classi.
FASE 4: Definizione delle proprietà
Partendo sempre dall’elenco dei termini, si individuano quelli che possono rappresentare delle proprietà dei concetti individuati nella fase precedente.
Avremo due categorie di proprietà:
- Intrinseche: relative al contenuto del concetto;
- Estrinseche: evidenziano le relazioni tra due o più concetti.
Grande importanza rivestono inoltre i vincoli di un concetto, che ne rendono valida la struttura. Ad esempio, ogni tesista deve avere un docente referente, che è un vincolo di tipo string, oppure il voto di un esame universitario non può superare 30, ed è un vincolo numerico.
Tra i vincoli più utilizzati troviamo i vincoli di:
- dominio: indica che l’utilizzo di una certa proprietà può soddisfare esclusivamente le classi facenti parte del dominio;
- range: indica che il contenuto di una proprietà deve appartenere all’insieme delle classi specificato nel range (o codominio).
L’ontologia è stata costruita!
Ovviamente tale processo può essere iterato all’infinito, al fine di ottenere una granularità dei concetti sempre più fina. Ricordiamo tuttavia che un’ontologia dovrebbe limitarsi a rappresentare i concetti e le relazioni necessari al suo compito, senza esagerare.
Gli strumenti utilizzati in questa fase sono i linguaggi ontologici.
Per quanto riguarda il Web semantico, i linguaggi di riferimento sono RDF (Resource Description Framework) e OWL (Web Ontology Language), entrambi basati su XML.
Antonio Cicirelli
Di cosa stiamo parlando?
Solo a sentir pronunciare il termine Web Semantico (consciuto anche come Web 3.0) un brivido caldo di eccitazione ci percorre tutta la schiena e ci sentiamo proiettati in un avveniristico futuro.
Ma cosa è il Web Semantico?
Molto semplicemente notiamo che siamo di fronte a due parole: Web (abbreviazione di World Wide Web, che sappiamo essere un servizio di Internet per la condivisione e la fruizione di contenuti multimediali) e Semantico, che letteralmente vuol dire “significato”.
Quindi lo scopo del Web Semantico è dare un significato al Web e ai suoi contenuti.
Ma allora il Web “attuale”, quello che noi conosciamo non ha un significato?
Il Web attuale ha sì un significato, ma solo per gli esseri umani. Obiettivo del Semantic Web è proprio quello di rendere le risorse presenti in rete “machine understandable”, ovvero comprensibili per le macchine.
In questo modo, se esistono applicazioni (agenti) che “capiscono” il significato delle risorse e possono derivare nuova conoscenza da quella presente, il Web si trasforma e può offrire nuovi servizi. Le nuove applicazioni “intelligenti” saranno in grado di guidare l’utente verso le informazioni desiderate, di sostituirsi a lui nello svolgimento di alcuni suoi compiti e addirittura di verificare l’attendibilità delle informazioni presenti in una risorsa (grazie a ricerche incrociate e comprensione del dominio).
Le macchine diventano capaci di analizzare tutti i dati sul Web, il contenuto, i link e le transazioni tra persone e computer. La “Rete Semantica” che dovrebbe renderlo possibile deve ancora nascere, ma quando l’avremo i meccanismi quotidiani di commercio, burocrazie e vita saranno gestiti da macchine che parleranno a macchine, lasciando che gli uomini pensino soltanto a fornire l’ispirazione e l’intuito. (Tim Berners-Lee, L’architettura del nuovo Web , Interzone, 2001)
Quali saranno gli strumenti magici per trasformare il nostro Web nel Semantic Web?
Gli strumenti magici nelle mani dei maghi informatici sono tanto semplici quanto efficaci: si utilizzeranno sistemi per la Rappresentazione della Conoscenza.
Ovvero verranno utilizzati degli schemi (Ontologie) per esprimere concetti e relazioni tra concetti e poi verranno utilizzati dei metadati per riportare i dati presenti nelle risorse ai concetti espressi nello schema. Su questi dati opportunamente strutturati gli agenti intelligenti potranno a tutti gli effetti “ragionare” per produrre il risultato desiderato dall’utente.
Praticamente verranno utilizzati tecnologie e standards che approfondiremo bene in vari articoli di questo blog, come XML, RDF, OWL, etc….
Qui di seguito vediamo uno schema che rappresenta la struttura alla base del Semantic Web:
Antonio Cicirelli
Che l’avvenura abbia inizio!!!
Benvenuti a tutti i nuovi visitatori.
Lo scopo di questo blog è cercare di rendere semplice e accessibile a tutti la conoscenza in merito al Web Semantico e a tutte le tecnologie ad esso collegate.
In particolare questo sarà il mio diario di bordo in cui annoterò periodicamente le nozioni che man mano apprendo durante il mio lavoro di tesi in modo da renderle pubbliche a tutti voi.
Spero che un giorno il mio lavoro possa essere utile a qualcuno.
Antonio Cicirelli