Nicola Leone e Francesco Ricca Dipartimento di Matematica Università della Calabria {leone,...
-
Upload
tammaro-elia -
Category
Documents
-
view
229 -
download
5
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