Francesca Carmagnola carmagnola@di.unito.it Ontological reasoning Francesca Carmagnola carmagnola@di.unito.it
Cosa si può fare con le ontologie? Ontologie come base di conoscenza avente dati strutturati Estrazione dati Inferire nuova conoscenza Ragionamento Ragionamento automatico che sfrutta opportuni linguaggi di query per ontologie (SQL, SeRQL, SPARQL) per estrarre dati e rendere esplicita conoscenza implicita Ragionamento inteso come inferenza finalizzato a produrre nuova conoscenza attraverso i linguaggi di reasoning dei SW (SWRL, RuleML, Fuzzy RuleML) 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. Interrogare la sintassi: usando un linguaggio XML, come XQuery si interrogano alberi e non grafi, mentre l’rdf data model e’ un grafo. si perdono quindi permette di cogliere le relazioni fra le risorse. Interrogare la struttura: ad esempio Squish, si interrogano le triple sogg-predicato-oggetto direttamente a livello di data model, ma vengono recuperate dalla query solo asserzioni esplicite, non quelle implicitamente contenute nei dati.
John AMICIZIA(Femmina( AMARE Maschio)) <?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: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.). 7
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 e sottoclassi estrarre proprietà estrarre istanze 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) select figli from {figli} rdfs:subClassOf {X} where X = <http://www.di.unito.it/~cena/ubiquito.rdf#Place> {figli} serql:directSubClassOf {X}
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 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) SeRQL offers combinatory operations that can be used to combine sets of query results.
_:a rdf:type test:User _:b rdf:type test:Writer Operatore IN 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})
Consente di estromettere dalla query una o più istanze specifiche Operatore MINUS SELECT Place_Name FROM {Place} test:has_place_name {Place_Name} MINUS WHERE Place_Name like "GAM" Consente di estromettere dalla query una o più istanze specifiche
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
SPARQL in Protégé-OWL ( version 3.2 o superiori)
“Tutti gli uomini sono mortali.” RAGIONAMENTO COME INFERENZA Ragionamento su una ontologia viene implementato attraverso regole di inferenza finalizzate a produrre nuova conoscenza “Tutti gli uomini sono mortali.” (Artistotele) ESEMPIO: SILLOGISMO Uomo(x) => Mortale(x) NELL’ONTOLOGIA E’ PRESENTE LA CLASSE UOMO CHE HA COME ISTANZA SOCRATE Uomo(Socrate) DEDUZIONE E AUMENTO DELL’ONTOLOGIA Mortale(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 MORTALE {Socrate} UOMO … FEMMINA MASCHIO {Socrate} … … … … …
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.
with instances all books which were published in 2003 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> </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> </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); RACER PRO , 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