300 likes | 427 Views
Francesca Carmagnola carmagnola@di.unito.it. Ontological reasoning. Cosa si può fare con le ontologie?. Ontologie come base di conoscenza avente dati strutturati. Estrazione dati. Inferire nuova conoscenza. Ragionamento.
E N D
Francesca Carmagnolacarmagnola@di.unito.it Ontological reasoning
Cosa si può fare con le ontologie? Ontologie come base di conoscenza avente dati strutturati Estrazione dati Inferire nuova conoscenza Ragionamento Ragionamento inteso come inferenza finalizzato a produrre nuova conoscenza attraverso i linguaggi di reasoning dei SW (SWRL, RuleML, Fuzzy RuleML) Ragionamento automatico che sfrutta opportuni linguaggi di query per ontologie (SQL, SeRQL, SPARQL) per estrarre dati e rendere esplicita conoscenza implicita • Query and Reasoning Tools (Sesame, Jena, Racer, …)
Ontologia vs. Data Base CORRISPONDENZE CON I DB Concetti (o classi) del dominio Proprietà (o slot) dei concetti Restrizioni sulle proprietà ENTITA’ ATTRIBUTI + RELAZIONI VINCOLI Interrogare un Db estrarre istanze, ovvero recuperare i dati memorizzati. Non vi e’ ragionamento automatico perchè i dati hanno legami con ridotto potere espressivo. Interrogare un’ontologia estrarre dati mediante query logiche che sfruttano la struttura ontologica per ottenere dati in modo significativo
Per ragionamento automatico si intende le capacità di elaborare una base di conoscenza secondo alcune regole in modo da validarla ed analizzarla. Ragionamento automatico può avvenire: • solo sulle ontologie in quanto rappresentazione strutturata della conoscenza espresse in un in un linguaggio che usa gli operatori della logica descrittiva RDF(S), OWL • mediante linguaggi di interrogazione capaci di supportare l’interrogazione su tali rappresentazioni
I linguaggi di interrogazione sulle ontologie Linguaggi di query tradizionali non distinguono informazioni da data schema, sono stati sviluppati per interrogare semplici base di triple: A livello di sintassi (alberi e non grafi, mentre l’rdf e’ un grafo. si perdono quindi le relazioni fra le risorse)[XQuery ] A livello di struttura (si interrogano le triple sogg-predicato-oggetto direttamente a livello di data model, ma vengono recuperate dalla query solo asserzioni esplicite) [Squish ] Necessità di interrogare a livello di semantica, cioè l’intera conoscenza contenuta nell’ontologia e non solo le asserzioni esplicite, ma anche quelle implicite. Ragionamento automatico come esplicitazione di conoscenza implicita.
<?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns="http://www.owl-ontologies.com/unnamed.owl#" xml:base="http://www.owl-ontologies.com/unnamed.owl"> <owl:Ontology rdf:about=""/> <owl:Class rdf:ID="maschio"> <owl:disjointWith> <owl:Class rdf:ID="femmina"/> </owl:disjointWith> <rdfs:subClassOf> <owl:Class rdf:ID="persona"/> </rdfs:subClassOf> </owl:Class> <owl:Class rdf:about="#femmina"> <rdfs:subClassOf rdf:resource="#persona"/> <owl:disjointWith rdf:resource="#maschio"/> </owl:Class> <owl:ObjectProperty rdf:ID="amicoDi"> <rdfs:domain rdf:resource="#persona"/> <rdfs:range rdf:resource="#persona"/> </owl:ObjectProperty> <owl:ObjectProperty rdf:ID="ama"> <rdfs:domain rdf:resource="#persona"/> <rdfs:range rdf:resource="#persona"/> </owl:ObjectProperty> <persona rdf:ID="John"> <amicoDi> <femmina rdf:ID="Susan"> <ama rdf:resource="#Andrea"/> </femmina> </amicoDi> </persona> </rdf:RDF> AMICIZIA(Femmina( AMARE Maschio)) <persona rdf:ID="John"> <amicoDi> <femmina rdf:ID =“Susan"> <femmina rdf:ID="Susan"> <ama rdf:resource="#Andrea"/> John
Ragionamento automatico sulle ontologie attraverso i linguaggi di interrogazione • i) Appartenenza alla classe (si può dedurre se un oggetto è un’istanza di una classe); • ii) Classificazione o sussunzione (si può dedurre tutte le relazioni tra le classi esistenti nelle ontologie); • iii) Equivalenza delle classi (si può dedurre se due classi sono equivalenti); • iv) Consistenza di una classe (si può verificare se un’asserzione soddisfa i vincoli di cardinalità, di tipo, etc.).
Nuovi linguaggi per interrogare le ontologie al livello della semantica: • RQL • SeRQL • SPARQL RQL • Linguaggio dichiarativo che “cattura” la semantica dell’RDF(S). • Permette di: • estrarre classi esottoclassi • estrarre proprietà • estrarreistanze di classi e di proprietà • query piu’ complesse (Select-from-where)
SeRQL (Sesame RDF Query Language) Nuovo linguaggio di query su RDF(S) e OWL che combina alcune caratteristiche di altri linguaggi di query (RQL, RDQL, N-Triples) aggiungendovene alcune. • Funzionalità per la navigazione della gerarchie di classi/proprietà; • Funzionalità per interrogare asserzioni reificate; • Operatori per comparazione di valori; • Operatori per gestire valori opzionali. • Due tipologie di query: • Query di selezione che restituisce una tabella di valori (SeRQL-S) • Trasformazioni in grafi, subgrafo del grafo interrogato (SeRQL-C)
SeRQL (Sesame RDF Query Language) 5 condizioni: SELECT, FROM, WHERE, LIMIT, OFFSET SELECT-FROM In una query di select –from si specificano quali valori devono essere restituiti, da dove e in quale ordine. WHERE Condizione opzionale che specifica i paths del grafo RDF che sono rilevanti nella query select Church from {Place} test:has_place_name {Church}; [test:has_style {Style}] where Style like "Baroque" using namespace mis = <http://www.di.unito.it/~carmagno/mis.txt>
SeRQL (Sesame RDF Query Language) 5 condizioni: SELECT, FROM, WHERE, LIMIT, OFFSET LIMIT Condizione opzionale che specifica il numero massimo di risultati nella query OFFSET Condizione opzionale che specifica quale risultato della query deve essere restituito per primo
SeRQL offre operatori per combinare i risultati delle query Operatore UNION • _:a test:place_name “San Lorenzo” • “GAM" • _:b mis:place_name “San Pietro" • SELECT Place_Name FROM {Place} test:has_place_name {Place_Name} UNION SELECT Place_Name FROM {Place} mis:has_place_name {Place_Name} Consente di ottenere come risultato della query l’unione di più statements aventi namespaces diversi (quindi da ontologie diverse)
OperatoreIN Consente di estrarre le istanze appartenti contemporamente a piu’ statements • _:a rdf:type test:User • _:b rdf:type test:Writer • SELECT user_name • FROM {} rdf:type {test:User}; • test:has_user_name {user_name} • WHERE user_name IN ( SELECT n • FROM {} rdf:type {test:Writer}; • test:has_user_name{n})
OperatoreMINUS Consente di estromettere dalla query una o più istanze specifiche • SELECT Place_Name • FROM {Place} test:has_place_name {Place_Name} • MINUS • SELECT Place_Name • FROM {Place} test:has_place_name {Place_Name} • WHERE Place_Name like "GAM"
SPARQL • Linguaggio di query su RDF(S) e OWL • Standard W3C • SPARQL adotta la sintassi Turtle, un'estensione di N-Triples, alternativa estremamente sintetica e intuitiva al tradizionale RDF/XML • Le query SPARQL si basano sul meccanismo del "pattern matching" e in particolare su un costrutto, il "triple pattern", che ricalca la configurazione a triple delle asserzioni RDF fornendo un modello flessibile per la ricerca di corrispondenze. • 5 condizioni: SELECT, FROM, WHERE, LIMIT, OFFSET • Non ha operatori per combinare i risultati delle query • SPARQL in Protégé-OWL
ESEMPIO: SILLOGISMO “Tutti gli uomini sono mortali.” (Artistotele) NELL’ONTOLOGIA E’ PRESENTE LA CLASSE UOMO CHE HA COME ISTANZA SOCRATE Mortale(Socrate) DEDUZIONE E AUMENTO DELL’ONTOLOGIA RAGIONAMENTO COME INFERENZA Ragionamento su una ontologia viene implementato attraverso regole di inferenza finalizzate a produrre nuova conoscenza Uomo(x) => Mortale(x) Uomo(Socrate)
Per effettuare inferenza su ontologie occorre: • 1) Linguaggio che “leghi” gli elementi dell’ontologia nella regola [v. linguaggi a regole del Semantic Web (SWRL, RuleML, Fuzzy RuleML)] • 2) Motore inferenziale (semantic reasoner) che faccia “girare” la regola sulla ontologia IF <owl:Class rdf:ID=“uomo"> THEN <owl:Class rdf:ID=“mortale"> THING {Socrate} MORTALE UOMO … {Socrate} FEMMINA MASCHIO … … … … …
SWRL (Semantic Web Rule Language) ● Recente proposta nella comunità del Semantic Web per integrare le regole con OWL ● Regole espresse in termini di concetti OWL (classi, proprietà, istanze) ● Le espressioni SWRL sono archiviate all'interno di modelli OWL (salvate come parte dell’ontologia) ● SWRL Editor: SWRL Tab Plugin che permette l’editing di regole SWRL
● Regole nella forma di implicazione antecedente e conseguente. ● Sono regole SWRL espressioni del tipo (gli esempi non usano la sintassi formale): ESEMPIO: hasParent(?x1,?x2) hasBrother(? x2,?x3) hasUncle(?x1,?x3) In una sintassi SWRL astratta, la regola può essere così scritta: Implies(Antecedent(hasParent(I-variable(x1) I-variable(x2)) hasBrother(I-variable(x2) I-variable(x3))) Consequent(hasUncle(I-variable(x1) I-variable(x3))))
RuleML Rule Markup Language (RuleML) è un linguaggio sviluppato per esprimere sia regole forward e backward. Combina caratteristiche di XML e RDF. <imp> <_head> conclusion </_head> <_body> <and> premise1…premiseN</and> </_body> </imp> L’head della regola costituisce il conseguente, mentre il body costituisce le precondizioni.
If a Book was published in 2003 and the Book’s name is V, Then the class Book2003 is created, with instances all books which were published in 2003 <_head> <atom> <_opr> <rel> <ind>Book2003</ind> </rel> </_opr> <_slot name="publicationYear"> <ind>2003</ind> </_slot> <_slot name="publicationTitle"> <var type="single">V</var> </_slot> </atom> </_head> <_body> <atom> <_opr> <rel> <ind>Book</ind> </rel> </_opr> <_slot name="publicationYear"> <ind>2003</ind> </_slot> <_slot name="publicationTitle"> <var type="single">V</var> </_slot> </atom> </_body>
Fuzzy RuleML • Necessità di gestione dell’incertezza nel Semantic Web. • In Fuzzy RuleML, si specifica nei fatti un “grado di importanza” (peso) degli antecedenti in relazione al conseguente. • Esempio: • Ricchezza (? p) 0.5 ^ Salute (? p) 0.9 -> Felicità (? p), • dove Ricchezza , Salute e Felicità sono predicati fuzzy.
Existing Semantic reasoners (query + rules) • Bossam, a RETE-based rule engine with native supports for reasoning over OWL ontologies, SWRL rules, and RuleML rules. Queries in Buchingae language; • Hoolet, an implementation of an OWL-DL reasoner (rules encoded in SWRL); • Pellet, an open-source Java OWL DL reasoner (rules encoded in SWRL, queries in SPARQL); • KAON2 is an infrastructure for managing OWL-DL, SWRL, and F-Logic ontologies (rules encoded in SWRL, queries in SPARQL); • FaCT, a description logic (DL) classifier e FaCT++, the new generation of FaCT OWL-DL reasoner; • SweetRules, an integrated set of tools for Semantic web rules and ontologies (rules encoded in SWRL); • RACERPRO , a semantic web reasoning system and information repository; • Jena (framework), an open source semantic web framework for Java; • Sesame an open source semantic web framework for Java.
SESAME • A framework for storage, querying and inferencing of RDF and RDF Schema. • It can be deployed on top of a variety of storage systems (relational databases, in-memory, filesystems, keyword indexers, etc.) • It offers: • a database server for the persistent storage of RDF(S) data, • export of repository contents in RDF(S) format data, • flexible access API, which supports both local and remote (through HTTP or RMI) access,
Light-weight yet powerful Java API for storing, • accessing, querying RDF(S) repositories • Highly expressive RQL-like query engine allowing expressive queries trough: • SeRQL • SPARQL • Reasoning support • RDF Schema reasoner • OWL DLP (OWLIM) • domain reasoning (custom rule engine) • Rio Toolkit: parsers and writers for different RDF syntaxes: RDF/XML, Turtle, N3, N-Triples
JENA • Jena is a Java framework providing a programmatic environment for RDF, OWL, SPARQL and includes • a rule-based inference engine. • The Jena Framework includes: • a RDF and OWL API • reading and writing RDF and OWL in RDF/XML, N-Triples, SPARQL • SPARQL query engine • Generic rule based inference engine together with configured rule sets for RDFS and for the OWL/Lite subset of OWL Full.
RACERPro (Renamed A-Box and Concept Expression Reasoner): • Ragionatore basato su Lisp in grado di processare KBs espresse in OWL, in particolare, in OWL-Lite e OWL-DL, • Fornisce alcuni servizi, quali: • il controllo di consistenza di un’ontologia OWL e di un insieme di descrizioni di dati, • possibilità di interrogazioni con SPARQL • la ricerca di relazioni di sussunzione indotte dalle asserzioni dell’ontologia, • un HTTP client per la restituzione di risorse importate dal Web • motore inferenziale per regole SWRL
SESAME vs. JENA vs. RacerPro Jena Supports OWL RacerPro Supports OWL Sesame Supports RDF Schema Jena Expressive query with SPARQL RacerPro Expressive query with SPARQL Sesame More expressive query with SeRQL. It allows using different query languages (RQL, RDQL, SeRQL, SPARQL) Jena Powerful rule-based inference engine RacerPro Powerful rule-based inference engine Sesame Weak reasoning support