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