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