5. Knowledge Graphs and Ontologies
Dato un linguaggio di rappresentazione logico e un mondo sul quale ragionare, i progettisti devono decidere come decomporre il mondo d’interesse in individui e relazioni.
Le relazioni sono da definire seguendo alcune linee guida: una relazione può essere unaria, ma questo renderebbe difficile determinate query, ricordando che i nomi dei predicati non possono essere variabili; in alternativa, si può ridurre un concetto astratto a oggetto (reificazione), ad esempio il colore red per denotare il rosso, più il predicato color(Ind, Val) dove Val è il colore dell’individuo Ind, in modo da poter formulare adesso query del tipo “Di che colore è l’oggetto a?” con ask color(a, C); la rappresentazione di color come predicato non permette però domande del tipo “Quale proprietà di questo oggetto ha valore red?”, dove la risposta sarebbe color, pertanto si può reificare una proprietà come individuo inventando una relazione prop, scrivendo “l’individuo a ha per la proprietà color il valore red” come prop(a, color, red), in questo modo tutte le query sono rese possibili.
La rappresentazione a tripla individuo-proprietà-valore prop(Ind, Prop, Val) indica che Ind ha per la proprietà Prop il valore Val. In generale è possibile vederla come una tripla (s, p, o) con s soggetto, p predicato verbale, o oggetto. In una tripla, il verbo è una proprietà p avente come dominio l’insieme di individui che possono essere soggetti in triple con verbo p e come codominio l’insieme di valori che possono essere oggetti in triple con verbo p. Un attributo è una coppia proprietà-valore.
Individui e identificatori
Gli individui sono denotati da identificatori univoci detti IRI (Internationalized Resource Identifier) (= URI), ovvero un nome univoco per identificare qualsiasi risorsa.
Rappresentazioni grafiche
La relazione prop è interpretabile in termine di knowledge graph, ovvero di un grafo orientato dove i nodi sono le entità, e gli archi sono etichettati dalle proprietà tra di essi. Questa rappresentazione porta il vantaggio di rendere la visualizzazione delle relazioni facile senza dover imparare la sintassi di un linguaggio logico, ed è possibile memorizzare le triple in maniera efficiente in un triple store, che ha bisogno di 8 indici per ritrovare le triple nelle diverse posizioni. Un estremo è quando soggetto, verbo e oggetto sono dati e la query chiede di determinare se una particolare tripla sia in memoria. Dall’altro estremo, non sono specificate le posizioni, e l’obiettivo è enumerarle. Tra questi due estremi, ad esempio potrei avere soggetto, verbo o oggetto eventualmente non specificati e l’obiettivo è enumerare i verbi collegati tra loro.
1 Classi e proprietà
Tipicamente, si conosce di più di un dominio rispetto a quello rappresentato in un database di fatti; potremmo conoscere regole generale dalle quali derivare altri fatti.
La conoscenza primitiva è conoscenza asserita esplicitamente in termini di fatti.
La conoscenza derivata è conoscenza inferita da conoscenza primitiva o da altra conoscenza derivata mediante uso di regole.
Le regole sono una rappresentazione più compatta della conoscenza. Relazioni derivate permettono di generalizzare per inferire la conoscenza di una classe. Questo è importante perchè non tutto di un dominio è osservabile.
Un modo standard di usare conoscenza derivata è di specificare gli attributi comuni per tutti i membri di una classe. Gli individui ereditano gli attributi associati alle classi cui appartengono. Raggruppare membri in classi permette una rappresentazione più concisa invece che rappresentare tutti gli attributi per ogni singolo individuo.
Una classe è un insieme di individui attuali e potenziali, definito in forma intensionale, ovvero tramite funzione caratteristica vera per i membri dell’insieme e falso per gli altri individui. In alternativa si può prevedere un insieme estensionale, elencando gli elementi, comoda per quando l’insieme è momentaneamente finito. Gli insiemi non sono da limitare a quegli individui non ancora esistenti/modellati, pertanto l’equivalenza tra classi non è limitata ai soli membri conosciuti, altrimenti due insiemi di individui magari inesistenti risulterebbero uguali. Stiamo lavorando in ambito web, quindi con assunzione di mondo aperto.
Un tipo naturale è una classe che rende la descrizione dell’insieme più concisa. Ad esempio mammifero è un tipo naturale, perchè descrivere gli attributi comuni ai mammiferi in questo modo rende più compatta la KB, evitando ripetizioni per ogni singolo individuo.
1.1 Gerarchie di classi
La classe S è una sottoclasse della classe C se ogni individuo di tipo S è di tipo C. Vale anche per gli individui futuri, quelli non ancora presenti nella classe.
La relazione tra tipi e sottoclassi possono essere scritte come clausole definite: prop(X, type, C) \leftarrow prop(S, subClassOf, C) \land prop(X, type, S)
type e subClassOf possono essere trattati come proprietà speciali che permettono l’ereditarietà di proprietà, che occorre quando un valore per una proprietà è specificato a livello di classe ed ereditato da tutti i membri della classe. Se tutti i membri di una classe c hanno valore v per la proprietà p, questo può essere scritto come prop(Ind, p , v) \leftarrow prop(Ind, type, c).
1.2 Proprietà
Il dominio di una proprietà è una classe tale che il soggetto (primo argomento) della tripla con la proprietà devono far parte della classe, ovvero se p(x, y) allora x \in C. Se una proprietà p ha dominio C_1 e dominio C_2, allora ogni soggetto sarà sia in C_1 che in C_2.
Il range di una proprietà è una classe tale che l’oggetto (ultimo argomento) della tripla con la proprietà devono essere nella classe, ovvero se p(x, y) allora y \in C.
Una proprietà è funzionale se c’è al massimo un oggetto associato a ogni soggetto, ovvero se p(x, y_1) e p(x, y_2) allora y_1 = y_2.
La proprietà p_1 è una sottoproprietà della proprietà C se ogni coppia relativa a p_1 è relativa anche a p_2, ovvero p_1(x, y) implica p_2(x, y). Possiamo quindi prevedere gerarchie di proprietà.
1.3 Costruire una classe
Per costruire un’ontologia seguiamo questi passi:
Per ogni classe da definire, determinare una superclasse rilevante e poi selezionare gli attributi che la distinguono dalle altre sottoclassi. Ogni attributo ha una proprietà e un valore.
Per ogni proprietà, si definiscono come dominio e range le classi più generali per ciò cui abbia senso. Il range può essere definito anche semplicemente enumerando i valori.
Una gerarchia delle classi è un grafo aciclico orientato con archi che vanno dalle sottoclassi alle rispettive superclassi dirette. La metodologia non porta necessariamente ad alberi, perchè gli oggetti possono appartenere a classi distinte, e ogni classi non ha una sola superclasse più specifica.
2 Ontologie e condivisione della conoscenza
Una concettualizzazione (o interpretazione intesa) è un’associazione tra i simboli usati nella macchina e gli individui e le relazioni del mondo. Questa porta a una particolare astrazione del mondo e la sua notazione per tale astrazione. Una concettualizzazione di una piccola KB può essere riportata in modo informale come documentazione (poco scalabile),mentre per grandi sistemi la concettualizzazione va condivisa.
Una ontologia è la specificazione di una concettualizzazione, si tratta cioè di una specificazione di quali individui e relazioni si presume esistano e di quale terminologia viene utilizzata per essi.
Una ontologia è formata dalle seguenti componenti:
un vocabolario delle categorie di cose da rappresentare (classi e proprietà)
un organizzazione delle categorie, mediante gerarchia d’ereditarietà usando subClassOf o subPropertyOf, o altre modalità
un insieme di assiomi che vincolano la definizione di alcuni simboli per riflettere meglio il significato inteso. A volte le relazioni sono definite in termini di più relazioni primitive che non sono state definite (modo intensionale).
Una ontologia non definisce gli individui sconosciuti in fase di progettazione, ma al più quelli ritenuti necessari, da condividere, e fissi. Lo scopo primario di una ontologia è quello di documentare il significato dei simboli, associando simboli a concetti. Dato un simbolo, una problema dovrebbe usare un’ontologia per determinare cosa significhi. Quando qualcosa ha un concetto da rappresentare, l’ontologia è usata per trovare il simbolo appropriato o per determinare che quel concetto non esiste nell’ontologia. Lo scopo secondario di una ontologia ottenuto usando gli assiomi, è quello di permettere l’inference o per individuare contraddizioni
3 Web Semantico
Il web semantico è un modo per permettere la distribuzione, sfruttando l’architettura del web basata su ipertesti, di conoscenza comprensibile alla macchina, in un formato che sia anche leggibile agli umani.
Alla base del web semantico, XML è un linguaggio di markup che fornisce una sintassi progettata per l’elaborazione automatica ma anche leggibile da persone, è un linguaggio testuale costituito da tag organizzati gerarchicamente, pertanto si limita a dire se un documento è ben formato.
Un IRI è utilizzato per identificare univocamente una risorsa. Una risorsa è qualunque cosa che può essere identificata univocamente, come individui, classi e proprietà. Tipicamente gli IRI seguono la sintassi degli URL.
L’RDF è un framework la cui sintassi è costruita su XML per modellare le triple individuo-proprietà-valore. L’RDF permette la reificazione di enunciati, questo significa che è possibile rappresentare formule logiche arbitrarie, quindi non è decidibile in generale, ovvero non possiamo porre un upper bound al tempo che un calcolo potrebbe richiedere. Programmi logici con funzioni sono anch’essi indecidibili.
SPARQL è un protocollo + linguaggio per l’interrogazione di KB (grafi di triple RDF) attraverso endpoint. Le query sono definite da pattern fatti da triple con variabili. SPARQL serve per il ritrovamento, quindi è al di sotto del ragionamento come potenza.
L’RDF-Schema permette di definire le classi e le proprietà in termini di altre risorse, utilizzando subClassOf e subPropertyOf.
3.1 OWL
L’OWL è un linguaggio di ontologie per il web più potente di RDF, che definisce classi e proprietà con un’interpretazione fissa che può essere usata per descrivere classi, proprietà e individui.
OWL è basato sulle logiche descrittive, utilizzate per descrivere classi, proprietò e individui. L’idea fondante è quella di separare la base di conoscenza in una parte terminologica formata da assiomi molto complesse da cui poter definire il significato dei simboli sotto forma di triple, e una parte asserzionale che specifica qualcosa di vero a runtime.
OWL descrive i domini in termini di:
Individui, ovvero entità del mondo che si descrive (es. l’URI di una data casa)
Classi, ovvero insiemi di individui. Una classe è un insieme di cose reali o potenziali che potrebbero appartenervi (es. House è l’insieme di tutte le cose presenti e future classificabili come case)
Proprietà, usate per descrivere relazioni binarie tra individui e altri individui. Una datatype property ha dei valori (terzo elemento della tupla) che sono tipi primitivi, quindi interi, stringhe o date (es. “streetName” può essere un datatype property tra una strada e una stringa). Un object property ha valori che sono altri individui (es. “nextTo” può essere una proprietà tra due case).
OWL non assume la UNA: due nomi non denotano necessariamente individui differenti o classi differenti. Non assume inoltre conoscenza completa: non si può assumere che tutti i fatti rilevanti siano stati dichiarati.
OWL non ha le clausole definite: per dire che tutti gli elementi di un insieme S hanno valore v per un predicato p, si dice che S è sottoinsieme dell’insieme di tutte le cose con valore v per p (assioma di inclusione, \sqsubseteq)
3.2 Ontologie di dominio
Una ontologia di dominio è un’ontologia riguardante un particolare dominio d’interesse per specifiche applicazioni.
Le linee guida per definire ontologie di dominio solo le seguenti:
Usare ontologie esistenti in modo che la KB potrà interagire con altre che le adottano
Se esiste un’ontologia che non corrisponda esattamente ai requisiti, la si può integrare ed eventualmente altri la vorranno adottare, aumentando l’interoperabilità della loro applicazione
Assicurarsi che l’ontologia si integri con ontologie affini, in moo da usare la stessa terminologia per le stesse cose in ontologie differenti
Tentare di conformarsi a ontologie top-level che rendono molto più facile l’integrazione della conoscenza di altre fonti
Seguire le convenzioni di denominazione, come usare il nome singolare per i membri di una classe
3.3 Principi dei Linked Data
URI come nomi per le cose
URI HTTP per permetterne la ricerca sfruttando l’infrastruttura del Web
Informazione fornita usando standard come RDF e SPARQL
Link verso altri URI per abilitare la scoperta di altra conoscenza
4 Ontologie Top-Level
Una ontologia top-level fornisce delle definizioni del tutto a un livello di astrazione molto elevato.
Il goal dell’ontologia top-level è di fornire una categorizzazione su cui basare le altre ontologie.
Esplicitare il conformarsi delle ontologie di dominio a ontologie di livello superiore facilita l’integrazione delle stesse. L’integrazione delle ontologie è necessaria per permettere alle applicazioni di riferirsi a più KB, ognuna delle quali può usare diverse ontologie.