Knowledge Engineering 2022-2023
Indice
1 Introduzione 2
1.1 Resource Description Framework . . . . . . . . . . . . . . . . . . . . . . 2
2 SPARQL 12
3 Ontologia 32
3.1 OWL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.1.1 OWL 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.2 Strumenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.2.1 Protégé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.2.2 LOV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
3.3 SKOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
3.4 Dublin Core Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
3.5 FOAF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
3.6 schema.org . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
3.7 Ontology Alignment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4 Reasoning 57
4.1 Profiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
5 Ontology Engineering 78
5.1 Pattern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
5.2 Ciclo di vita di un’ontologia . . . . . . . . . . . . . . . . . . . . . . . . . 85
5.3 Cloud Ontology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
5.4 SHACL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
5.5 DB Relazionali & Web Of Data . . . . . . . . . . . . . . . . . . . . . . . 87
6 Natural Language Processing 90
6.1 Web Crawling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
6.2 Natural Language Processing . . . . . . . . . . . . . . . . . . . . . . . . 97
6.2.1 Stato dell’arte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
6.2.2 Fasi del NLP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
6.3 Anonymization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
Capitolo 1 Introduzione
Web Il rappresenta un sistema di navigazione tra documenti HTML, collegati tra loro. Tali documenti contengono molte informazioni ovvero facilmente human-readable, accessibili dall’uomo, e di conseguenza meno fruibili dalle macchine. Per questo motivo nasce l’esigenza di rendere questa enorme quantità di informazioni più accessibile alle macchine. A tale scopo nasce il Semantic Web Web Of Data).
N.B: la (knowledge) indica un sinonimo di informazioni (o dati). conoscenza
Il Semantic Web deve:
- Essere comprensibile alle macchine (ovvero deve rappresentare le informazioni in un formato facilmente processabile dalle macchine).
- Definire tra dati o risorse (Linked prodotti da organizzazioni diverse. In particolare, queste risorse devono:
- Essere facilmente accessibili attraverso protocolli del Web (come HTTP).
- Possedere un identificativo univoco.
- Possedere una descrizione comprensibile alla macchina. In particolare, per W3C RDF Descriptions soddisfare questo requisito nasce il (Resource Framework), che definisce il modo con cui possiamo descrivere tali risorse.
- Data Providers Essere collegate con le altre risorse, prodotte da differenti (fornitori di dati).
1.1 Resource Description Framework
Resource Description Framework Il (RDF) è una raccomandazione sviluppata da W3C per la descrizione delle risorse.
Ogni risorsa è identificata da un URI (Uniform Resource Identifier) non univoco, ovvero una risorsa può possedere più identificatori che la rappresentano.
Le risorse sono connesse tra loro, oppure a dati primitivi (cioè stringhe, numeri, ecc...), proprietà. attraverso delle
N.B: anche le proprietà sono identificate da URI.
2 Capitolo 1. Introduzione 3 triple Un modello RDF è costituito da soggetto predicato oggetto, che definiscono il collegamento tra le risorse. Il collegamento tra più risorse definisce un Graph (grafo dove i nodi rappresentano le risorse e gli archi orientati (dal di triple), soggetto verso l’oggetto) rappresentano i predicati.
Esempio di triple RDF
ES: Consideriamo le seguenti triple RDF:
Da Vincii .paintedhLeonardo hGiocondai.
locatedInhGiocondai hStanza 154i
Del Louvrei .insidehStanza hMuseo154i
Le risorse Da Vincii, ehLeonardo hGiocondai, hStanza 154iDel Louvrei sono collegate tra loro attraverso le proprietà (o pre-hMuseo object properties.dicati) e dette painted, locatedIn inside,
N.B: le connettono tra loro due risorse. object properties
Tali collegamenti possono essere rappresentati attraverso il seguente TripleGraph:
Questo permette anche di dedurre nuovi collegamenti a partire da quelli già esistenti, favorendo l’inferenza. Ad esempio possiamo dedurre che sia collegata con Del Louvrei, poiché i predicati loca-hGiocondai hMuseo ed sono sinonimi (cioè e quindi possiamotedIn inside locatedIn inside)= applicare la proprietà transitiva:
Capitolo 1. Introduzione 4
Le risorse possono essere collegate anche con dati primitivi (detti anche letterali). Consideriamo ad esempio le seguenti triple:
Da Vincii “1452-04-15” .bornhLeonardo Da Vincii “Leonardo Da Vinci” .namehLeonardo “379122” .populationhFirenzei
In particolare, le proprietà (o predicati) e sono dette born, name population data properties.
N.B: le collegano una risorsa ad un letterale.data properties tipo
Un dato può essere associato ad un (ad esempio xsd:date, xsd:time, xsd:integer, xsd:float, ecc...), che fornisce dettagli sull’interpretazione del dato.
N.B: per definire il tipo di un dato si utilizza il formato XMLSchema.
N.B: è possibile definire nuovi tipi personalizzabili.
ES: xsd:date Da Vincii “1452-04-15” .born &&hLeonardo xsd:integer“379122” .population &&hFirenzei
In questo modo forniamo maggiori informazioni sintattiche. Ad esempio il xsd:date tipo richiede che il dato sia nel formato “YYYY-MM-DD”. In caso contrario si ottiene un errore.
N.B: il tipo del dato viene specificato dopo il simbolo .&&
Quando un dato primitivo rappresenta un testo (ovvero una stringa), allora possiamo associare al dato un identificatore di lingua ISO (as esempio “it”, “en”, “fr”, ecc...). In questo modo possiamo indicare la lingua di riferimento per il testo.
ES: “Firenze”@it .namehFirenzei “Florence”@en .namehFirenzei “Florenz”@de .namehFirenzei
Nel Semantic Web, ogni entità (o risorsa) è identificata da un URI (possibilmente non unico). In particolare, un URI (Uniform Resource Identifier) può essere classificato come URL (Uniform Resource Locator), che identifica la locazione della risorsa, oppure come URN (Uniform Resource Name), che identifica il nome della risorsa.
N.B: in generale utilizzeremo la rappresentazione URL per permettere il collegamento tra i dati (Linked Data).
Capitolo 1. Introduzione 5
ES: Definiamo i seguenti URI (con rappresentazione URL) per alcune risorse viste in precedenza:
- Http://dbpedia.org/resource/Florence
- Http://it.dbpedia.org/resource/Firenze
- Http://it.dbpedia.org/resource/Leonardo_da_Vinci
Blank node e prefixes
blank node Un si riferisce ad una risorsa “senza nome” (unnamed). Queste particolari risorse sono utilizzate per aggregare o strutturare delle entità. Il nome utilizzato per la definizione di queste risorse ha solamente una validità locale ed, in generale, non può essere usato per riferirsi ad una parte di un’entità.
ES: Consideriamo l’entità Ingegneria Firenzei a cui è associato un ad-hScuola Tale indirizzo è costituito da tre diverse informazioni, ovvero la città dress. (city), la via (address) ed il numero civico (number). Per aggregare questi dati possiamo utilizzare un blank node:
PREFIXES I vengono utilizzati per abbreviare gli URI. In questo modo è possibile semplificare la scrittura delle triple, che possono avere URI piuttosto lunghi.
Esistono vari prefissi standard:
- Dbr: <http://dbpedia.org/resource#>
- Rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
- Rdfs: <http://www.w3.org/2000/01/rdf-schema#>
- Owl: <http://www.w3.org/2002/07/owl#>
- Skos: <http://www.w3.org/2004/02/skos/core#>
Ad esempio possiamo semplificare l’URI http://dbpedia.org/resource/Florence con dbr:Florence (abbiamo utilizzato il prefisso dbr).
N.B: possiamo usare http://prefix.ccto per cercare la definizione dei prefissi standard. RDF Graph. Come abbiamo già osservato, un insieme di triple costituisce un
Capitolo 1. Introduzione 6
Figura 1.1: La risorsa rappresenta il luogo di nascita (birthPlaceOf ) della risorsa hFlorencei Alighierii, che lavora (occupation) comehDante hPoeti.classi.
Le risorse possono essere raggruppate in In particolare, una risorsa appartiene Ra una classe se rdf:typehRi hCi.C
Figura 1.2: La risorsa appartiene alla classe Questa relazione è definitahFlorencei hPopulatedPlacei.dalla proprietà rdf:type.
Anche le classi vengono definite e descritte attraverso RDF. In particolare possiamo assegnare delle proprietà anche alle classi:
- (afferma che è una sottoclasse di ).rdfs:subClassOfhC i hC i C C1 2 1 2
- (afferma che le classi ed sono equivalenti).owl:equivalentClasshXi hY i X Y
Figura 1.3: La classe contiene la classe che è equivalente alla classehPopulatedPlacei hPlacei, In questo modo possiamo anche dedurre delle proprietà delle istanze. Infatti, sehLocationi. hFlorencei è un’istanza della classe che a sua volta contiene la classe allora possiamohPopulatedPlacei, hPlacei, dedurre che è un’istanza anche di (e quindi anche di poiché sono classihFlorencei hPlacei hLocationiequivalenti).
N.B: il contrario non è sempre vero, cioè se è un’istanza di non possiamo dire chehFlorencei hPlacei, sia anche un’istanza di hPopulatedPlacei.
Un’ontologia (Ontology), o Vocabolario, è una descrizione di un dominio che definisce:
- Classi;
- Proprietà;
- Relazioni tra queste.
Capitolo 1. Introduzione 7
Nel W3C sono state definite una serie di linguaggi standard per rappresentare le Ontologie, ad esempio RDFS (RDF Scheme) o Ontology Web Language (OWL).
Le triple possono essere scritte in diversi formati standard (ad esempio ntriples, turtle, RDF-XML o JSON-LD). Questi formati vengono utilizzati per condividere informazioni tra differenti Data Providers. Analizziamo i differenti formati:
ntriples
ntriples: rappresenta un formato testuale molto semplice e ripetitivo, in cui viene definita una tripla per ogni riga: object...i .hhttp://...subject...i hhttp://...predicate...i hhttp://... “...text...” .hhttp://...subject...i hhttp://...predicate...i “...text...”@en .hhttp://...subject...i hhttp://...predicate...i “...data...” type...i .&&hhttp://...subject...i hhttp://...predicate...i hhttp://...data_:id1 .hhttp://...subject...i hhttp://...predicate...i_:id1 ...hhttp://...predicate...i
N.B: il punto al termine della tripla indica la sua terminazione.
N.B: un blank node si definisce come _:id ed ha una valenza locale (quindi, una volta pubblicato il file, questo identificativo non sarà più presente).
turtle
turtle: rappresenta un formato testuale più compatto e più interpretabile anche dall’uomo (oltre che dalla macchina). In particolare permette di definire dei prefissi per semplificare la definizione delle triple:
dbr:hhttp://dbpedia.org/resource/i@prefix dbo:hhttp://dbpedia.org/ontology/i@prefix ex:hhttp://example.org/i@prefixdbr:Florence dbo:birthPlaceOf dbr:Dante_Alighieri .
Questa scrittura risulta equivalente alla seguente rappresentazione in ntriples: .hhttp://dbpedia.org/resource/Florencei hhttp://dbpedia.org/ontology/birthPlaceOfi hhttp://dbpedia.org/resource/Dante_Alighierii
Inoltre, turtle permette ulteriori semplificazioni. In particolare, se alcune triple condividono lo stesso soggetto, allora possiamo inserire il carattere “;” seguito dalle coppie predicato-oggetto che fanno riferimento allo stesso soggetto: ;dbr:Dante_Alighieri dbr:Ravennadbo:deathPlace“1265-5-0” xsd:date .dbo:birthDate &&
La corrispondente soluzione in formato esteso sarà:
dbr:Dante_Alighieri dbr:Ravenna .dbo:deathPlacedbr:Dante_Alighieri “1265-5-0” xsd:date .dbo:birthDate &&
Se, invece, alcune triple condividono lo stesso soggetto e lo stesso predicato, allora possiamo inserire il carattere “,” seguito dagli oggetti che fanno riferimento alle stesse coppie soggetto-predicato: ,dbr:Dante_Alighieri dbr:Poet dbr:Politician .dbo:occupation
Capitolo 1. Introduzione 8
La corrispondente soluzione in formato esteso sarà:
dbr:Dante_Alighieri dbr:Poet .dbo:occupationdbr:Dante_Alighieri dbr:Politician .dbo:occupation
I blank node vengono definiti all’interno dei caratteri “[ ]”:[ex:ScuolaIngegneria ex:address“Via S. Marta” ;ex:street “3” ;ex:civicdbr:Florenceex:city] .
La corrispondente soluzione in formato esteso sarà:
ex:ScuolaIngegneria .ex:address_:addr1_:addr1 “Via S. Marta” .ex:street_:addr1 “3” .ex:civic_:addr1 dbr:Florence .ex:city
N.B: in turtle possiamo definire i blank node anche nello stesso modo in cui vengono definiti in ntriples.
RDF-XML
RDF-XML: rappresenta un formato testuale più verboso, caratterizzato da un tag di intestazione. I prefissi vengono definiti in un namespace ed ha una struttura gerarchica (ad esempio possiamo collegare un soggetto, comune a più oggetti, definendo gli oggetti all’interno del tag del soggetto). I tag definiscono le proprietà e i valori che assumono definiscono le risorse (o i dati primitivi):
<?xml version=“1.0”?><rdf:RDFxmlns:rdf=“http://www.w3.org/1999/02/22-rdf-syntax-ns#”xmlns:dbo=“http://dbpedia.org/ontology/”><rdf:Description rdf:about=“http://dbpedia.org/resource/Florence”><dbo:population>132000</dbo:population><dbo:birthPlaceOfrdf:resource=“http://dbpedia.org/resource/Dante_alighieri”/></rdf:Description></rdf:RDF>
JSON-LD
JSON-LD (JSON Linked Data): rappresenta un formato testuale più compatto che estende il formato JSON. In particolare è presente un livello globale context che permette di descrivere e di interpretare le informazioni e le proprietà definite (ad esempio definisce come deve essere interpretata la proprietà “name”):
{ “@context”: {“name”: “http://schema.org/name”,“image”: {“@id”: “http://schema.org/image”,“@type”: “@id”},“homepage”: {“@id”: “http://schema.org/url”,“@type”: “@id”}},“@id”: “http://people.org/resource/manu_sporny”,“@type”: “http://schema.org/Person”,“name”: “Manu Sporny”,“homepage”: “http://manu.sporny.org/”,“image”: “http://manu.sporny.org/images/manu.png”}
Capitolo 1. Introduzione 9
La corrispondente definizione nel formato turtle sarà:
PREFIX schema: hhttp://schema.org/i schema:Person ;rdf:typehhttp://people.org/resource/manu_spornyi“Manu Sporny” ;schema:name ;schema:url hhttp://manu.sporny.orgi .schema:image hhttp://manu.sporny.org/images/manu.pngi
RDFa
RDFa: utilizzato per fornire informazioni leggibili dalla macchina direttamente nel documento HTML. In questo modo non è necessario distinguere le informazioni human friendly, con quelle machine friendly. L’idea è quella di assegnare delle proprietà (dette metatag) interpretabili dalla macchina, direttamente nei file HTML. Da queste proprietà possiamo ricavare le triple RDF:
vocab=“http://xmlns.com/foaf/0.1/” about=“#me”><div property=“name”>JohnMy name is <span Doe</span> and my blog is calledrel=“homepage” href=“http://example.org/blog/”>Understanding<a Semantics</a>.</div>
La corrispondente definizione nel formato turtle sarà:
PREFIX foaf: hhttp://xmlns.com/foaf/0.1/i“John Doe” ;foaf:nameh#mei .foaf:homepage hhttp://example.org/blog/i
RDF Store
RDF Store Un rappresenta un particolare tipo di database NoSQL, che permette di memorizzare un insieme di triple soggetto-predicato-oggetto (abbreviate come p, oi)hs, RDF e consente di definire delle query su esse. Tale database è l’unico che possiede un modello di dati standard condiviso (RDF) ed è l’unico che possiede una serie di formati di interscambio standard (RDFXML, Turtle, Ntriple, JSON-LD). Inoltre è l’unico database con un linguaggio standard SPARQL per le query, con un protocollo di comunicazione standard e con un linguaggio di manipolazione standard SPARUL (per aggiungere, modificare e rimuovere triple).
L’RDF Store è fo
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
-
Knowledge management - Appunti
-
Information and Knowledge: Appunti di Sistemi
-
Appunti Chemical reaction engineering
-
Clinical Engineering - slides riscritte con appunti