Nicola Leone e Francesco Ricca Dipartimento di Matematica Università della Calabria {leone,...

16
Nicola Leone e Francesco Ricca Dipartimento di Matematica Università della Calabria {leone, ricca}@mat.unical.it UNIVERSITÀDELLACALABRIA Dipartimento di MATEMATICA OntoDLV: An Object-Oriented Disjunctive Logic Programming System

Transcript of Nicola Leone e Francesco Ricca Dipartimento di Matematica Università della Calabria {leone,...

Page 1: Nicola Leone e Francesco Ricca Dipartimento di Matematica Università della Calabria {leone, ricca}@mat.unical.it Nicola Leone e Francesco Ricca Dipartimento.

Nicola Leone e Francesco Ricca

Dipartimento di MatematicaUniversità della Calabria{leone, ricca}@mat.unical.it

Nicola Leone e Francesco Ricca

Dipartimento di MatematicaUniversità della Calabria{leone, ricca}@mat.unical.it

UNIVERSITÀDELLACALABRIA

Dipartimento di MATEMATICA

OntoDLV: An Object-Oriented Disjunctive Logic Programming

System

OntoDLV: An Object-Oriented Disjunctive Logic Programming

System

Page 2: Nicola Leone e Francesco Ricca Dipartimento di Matematica Università della Calabria {leone, ricca}@mat.unical.it Nicola Leone e Francesco Ricca Dipartimento.

SommarioSommario

La Programmazione Logia Disgiuntiva

Motivazioni Il Linguaggio OntoDLP Il Sistema OntoDLV Conclusioni

La Programmazione Logia Disgiuntiva

Motivazioni Il Linguaggio OntoDLP Il Sistema OntoDLV Conclusioni

Page 3: Nicola Leone e Francesco Ricca Dipartimento di Matematica Università della Calabria {leone, ricca}@mat.unical.it Nicola Leone e Francesco Ricca Dipartimento.

La Programmazione Logica Disgiuntiva (PLD)

La Programmazione Logica Disgiuntiva (PLD)

Semplice e potente formalismo di KR&R Answer Set Programming (ASP) Alto potere espressivo ( )

Solide implementazioni DLV, GnT/Smodels, Cmodels…

Utilizzato in diversi domini applicativi: IA (pianificazione, diagnosi, ecc) Information Integration Information Extraction Text Classification …

Semplice e potente formalismo di KR&R Answer Set Programming (ASP) Alto potere espressivo ( )

Solide implementazioni DLV, GnT/Smodels, Cmodels…

Utilizzato in diversi domini applicativi: IA (pianificazione, diagnosi, ecc) Information Integration Information Extraction Text Classification …

2P /2

P

Page 4: Nicola Leone e Francesco Ricca Dipartimento di Matematica Università della Calabria {leone, ricca}@mat.unical.it Nicola Leone e Francesco Ricca Dipartimento.

MotivazioniMotivazioni 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)

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)

Page 5: Nicola Leone e Francesco Ricca Dipartimento di Matematica Università della Calabria {leone, ricca}@mat.unical.it Nicola Leone e Francesco Ricca Dipartimento.

OntoDLP…DLP con: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

non-posizionale, etc.

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

non-posizionale, etc.

Page 6: Nicola Leone e Francesco Ricca Dipartimento di Matematica Università della Calabria {leone, ricca}@mat.unical.it Nicola Leone e Francesco Ricca Dipartimento.

Esempio (1)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). ….

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). ….

Page 7: Nicola Leone e Francesco Ricca Dipartimento di Matematica Università della Calabria {leone, ricca}@mat.unical.it Nicola Leone e Francesco Ricca Dipartimento.

Esempio (2)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.

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.

Page 8: Nicola Leone e Francesco Ricca Dipartimento di Matematica Università della Calabria {leone, ricca}@mat.unical.it Nicola Leone e Francesco Ricca Dipartimento.

Esempio (3)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 ).

}

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 ).

}

Page 9: Nicola Leone e Francesco Ricca Dipartimento di Matematica Università della Calabria {leone, ricca}@mat.unical.it Nicola Leone e Francesco Ricca Dipartimento.

Esempio (4) 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) ?

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) ?

Page 10: Nicola Leone e Francesco Ricca Dipartimento di Matematica Università della Calabria {leone, ricca}@mat.unical.it Nicola Leone e Francesco Ricca Dipartimento.

Esempio (5)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)?

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)?

Page 11: Nicola Leone e Francesco Ricca Dipartimento di Matematica Università della Calabria {leone, ricca}@mat.unical.it Nicola Leone e Francesco Ricca Dipartimento.

Il sistema OntoDLVIl sistema OntoDLV Un ambiente di sviluppo grafico

Specifica, browsing, ragionamento, interrogazione

Integra DLV

Interfaccia di interrogazione à la QBE

Un ambiente di sviluppo grafico Specifica, browsing, ragionamento,

interrogazione Integra DLV

Interfaccia di interrogazione à la QBE

Page 12: Nicola Leone e Francesco Ricca Dipartimento di Matematica Università della Calabria {leone, ricca}@mat.unical.it Nicola Leone e Francesco Ricca Dipartimento.
Page 13: Nicola Leone e Francesco Ricca Dipartimento di Matematica Università della Calabria {leone, ricca}@mat.unical.it Nicola Leone e Francesco Ricca Dipartimento.
Page 14: Nicola Leone e Francesco Ricca Dipartimento di Matematica Università della Calabria {leone, ricca}@mat.unical.it Nicola Leone e Francesco Ricca Dipartimento.

ApplicazioniApplicazioni

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

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

Page 15: Nicola Leone e Francesco Ricca Dipartimento di Matematica Università della Calabria {leone, ricca}@mat.unical.it Nicola Leone e Francesco Ricca Dipartimento.

Lavori CorrelatiLavori Correlati COMPLEX [Greco et al] Flogic & Flora-2 [Kifer] RDF/RDFS [W3C] OWL [W3C] DL-Programs [Grosof et al] DL-Safe Programs [Motik] …

COMPLEX [Greco et al] Flogic & Flora-2 [Kifer] RDF/RDFS [W3C] OWL [W3C] DL-Programs [Grosof et al] DL-Safe Programs [Motik] …

Page 16: Nicola Leone e Francesco Ricca Dipartimento di Matematica Università della Calabria {leone, ricca}@mat.unical.it Nicola Leone e Francesco Ricca Dipartimento.

ConclusioniConclusioni 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

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