UNIVERSITÀDELLACALABRIA Dipartimento di MATEMATICA OntoDLV: An Object-Oriented Disjunctive Logic Programming System Nicola Leone e Francesco Ricca Dipartimento di Matematica Università della Calabria {leone, ricca}@mat.unical.it Sommario La Programmazione Logia Disgiuntiva Motivazioni Il Linguaggio OntoDLP Il Sistema OntoDLV Conclusioni La Programmazione Logica Disgiuntiva (PLD) Semplice e potente formalismo di KR&R Answer Set Programming (ASP) P P Alto potere espressivo ( 2 / 2 ) Solide implementazioni DLV, GnT/Smodels, Cmodels… Utilizzato in diversi domini applicativi: IA (pianificazione, diagnosi, ecc) Information Integration Information Extraction Text Classification … Motivazioni La DLP è uno strumento potente… I sistemi consentono di risolvere problemi complessi Ma: Le recenti applicazioni ne hanno evidenziato alcuni limiti nel linguaggio e nei sistemi La DLP necessita di costrutti di alto livello Classi, oggetti, tassonomie… I sistemi DLP non sono corredati da strumenti di sviluppo (e.s. Ambienti di sviluppo grafici) OntoDLP…DLP con: Costrutti orientati agli oggetti Identità degli Oggetti, Classi, Ereditarietà (singola e multipla), Classi e Relazioni Derivate Controlli di consistenza Assiomi, Tipizzazione Forte Programmazione Modulare Moduli di ragionamento Estensioni Sintattiche Termini complessi (anche ricorsivi), notazione nonposizionale, etc. Esempio (1) Classi: class person(name:string, age:integer, sex:string, partner:person). class student isa {person} (pin:integer, faculty:string). class employee isa {person} (code:integer, sk:skill, sa:integer). class student_employee isa {student, employee). class skill (name:string). class project(numEmp:integer, numSk:integer, budget:integer, maxSal:integer). …. Relazioni: relation inTeam (emp:employee, pr:project). …. Esempio (2) Istanze & tuple: jack: employee(name:”Jack Big",age:20, sex:”Male”, partner:joe, code:1,sk:cpp,sa:10000). …. cpp:skill(“C++ programmer”). …. Assiomi: ::- X : employee(code: C ), Y : employee(code: C ), Y <> X. Esempio (3) Classi Derivate: derived class youngAndShy(friendsNumber: integer) { X : youngAndShy(friendsNumber : N ) :− X : person(age : Age), Age < 21, #count{F : friend(pers1 : X, pers2 : F )} < 2. } Relazioni Derivate: derived relation ancestor(anc:person, disc:person) { ancestor(anc : A, disc : X ) :− X : person(father : A). ancestor(anc : A, disc : X ) :− X : person(mother : A). ancestor(anc : A, disc : X ) :− X : person(father : Y ), ancestor(anc : A, disc : Y ). ancestor(anc : A, disc : X ) :− X : person(mother : Y ), ancestor(anc : A, disc : Y ). } Esempio (4) Moduli di Ragionamento: module(partner_and_skill) { partnerWithDifferentSkill(X,Y) :- X:employee(partner:Y, sk:S), not partner(X,Y,S). partner (X,Y,Y) :- X:employee(partner:Y, sk:S). } Query partnerWithDifferentSkill(X,Y)? X:employee(sk:java,partner:employee(sk:java)) ? X:employee(sk:java,partner:Y), Y:employee(sk:java) ? Esempio (5) module(team_building) { inTeam(E,P) v outTeam(E,P) :- E:employee(), P:project(). :- P:project(numEmp:N), not #count{ E: inTeam(emp:E)} = N. :- P: project(numSk:S), not #count{ Sk: E:employee(sk:Sk), inTeam(E,P)} >= S. :- P: project(budget:B), not #sum{ Sa,E: E:employee(sal:Sa), inTeam(E ,P)} <= B. :- P: project(maxSal:M), not #max{ Sa: E:employee(sal:Sa), inTeam(E ,P)} <= M. } > inTeam(ciccio,X)? Il sistema OntoDLV Un ambiente di sviluppo grafico Specifica, browsing, ragionamento, interrogazione Integra DLV Interfaccia di interrogazione à la QBE Applicazioni Content Categorization OLEX [Curia et al] [Cumbo et al] OntoLog Enterprise Categorizer System, un sistema sviluppato da Exeura s.r.l. per la classificazione semantica di documenti. Information Extraction Hilex [Ruffolo et al] Un nuovo approccio basato su logica per l’estrazione semantica di informazione Lavori Correlati COMPLEX [Greco et al] Flogic & Flora-2 [Kifer] RDF/RDFS [W3C] OWL [W3C] DL-Programs [Grosof et al] DL-Safe Programs [Motik] … Conclusioni OntoDLP: Estensione della DLP con costrutti Orientati agli oggetti (classi, ereditarietà, assiomi, ecc.) Ragionamento su Ontologie OntoDLV: Implementa il linguaggio OntoDLP Sviluppato utilizzando DLV Dotato di ambiente di sviluppo grafico Interrogazioni à la QBE Utilizzato in applicazioni reali