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

Post on 01-May-2015

229 views 5 download

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

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

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

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

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)

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.

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

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.

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

}

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

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

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

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

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] …

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