Date post: | 03-Feb-2015 |
Category: |
Documents |
Upload: | pascuala-castillon |
View: | 0 times |
Download: | 0 times |
Datalog System
Sintaxis generalVariables: A, A33, Arco_2, etc.Variable blanca: _Constantes: juan, 1, 234, pEDRO. Etc.
Listas: [t1, t2, …, tn] ti son los elementos[H | T] donde H es la cabeza de
la lista y T el resto de esta
Datalog System
Sintaxis generalP :- Q. ReglaP. Hechos o datos de entrada:-Q. Restricciones fuertes:~Q. Restricciones débiles
Datalog System
peso(manzana,100,gramos).hombre(lupe) v mujer(lupe).
papa(juan, luis). papa(juan, toño).papa(luis,pedro). papa(miguel, oscar).papa(pedro,ana). papa(oscar, jair).papa(luis,vero). papa(fer, angel).
Ejemplos de Hechos
Datalog System
universo(1..100).
dias_semana(1..7).
Ejemplos de Hechos sobre rangos
Equivale a definir que el universo tienen 100 números, es decir, universo(1), universo(2), …, universo(100).
Es equivalente a dias_semana(1), …, dias_semana(7).
Datalog System
abuelo(X,Y):-papa(X,Z), papa(Z,Y).tio(X,Y):-papa(Z,Y),hermano(Z,X).sobrino(X,Y):-cuñado(X,Y):-primo(X,Y):-hermano(X,Y):-concuño(X,Y):-suegro(X,Y):-yerno(X,Y):-nieto(X,Y):-
Ejemplos de Reglas
BA
C
D
Vértices = {A, B, C, D}Ejes = {(A,B), (B,C), (B,D)}
Representación Conocimiento
¿Cómo determinar los nodos?
¿Cómo representar
el conocimiento?
¿Qué conocimiento
existe ?
eje(a,b). eje(b,c). eje(b,d).nodo(X):-eje(X,_).nodo(Y):-eje(_,Y).
{nodo(a), nodo(b), nodo(c), nodo(d)}
Representación Conocimiento
Como determinar los ejes faltantes que hagan un grafo denso
ejesr(X,Y):- nodo(X), nodo(Y), not eje(X,Y).
{ejer(a,a), ejer(a,c), ejer(a,d), ejer(b,a), ejer(b,b), ejer(c,a), ejer(c,b), ejer(c,c), ejer(c,d), ejer(d,a), ejer(d,b), ejer(d,c), ejer(d,d)}
Máximo Común Divisor
% Declara cuando T divide un numero N.% divisor(T,N) :- #int(T), #int(N), #int(M), N=T*M.
% Declare divisores comunes % cd(T,N1,N2) :- divisor(T,N1), divisor(T,N2).
% Halla los divisores comunes non-maximales de T% larger_cd(T,N1,N2) :- cd(T,N1,N2), cd(T1,N1,N2), T < T1.
% Aplica doble negacion: toma divisor non non-maximal % gcd(T,N1,N2) :- cd(T,N1,N2), not larger_cd(T,N1,N2).
Máximo Común DivisorAlgoritmo de Euclides
gcd(X,X,X) :- #int(X), X>0. gcd(T,X,Y) :- X<Y, gcd(T,X,Y1), Y = Y1+X. gcd(T,X,Y) :- X>Y, gcd(T,X1,Y), X = X1+Y.
Funciones
Sean dos funciones f, g : N → N , definidas de la siguiente manera: f ( n ) = f ( n – 1 ) + g( n ) si n > 1 f ( 1 ) = 1
g ( n ) = g ( n – 1 ) + 2 si n > 1 g ( 1 ) = 1
1a) Diseñe dos funciones recursivas para evaluar f y g para cualquier entero dado n >0.
1b) Diseñe función recursiva que evalúe la siguiente función: Z ( n ) = f ( 1 ) + f ( 2 ) + f ( 3 ) + ... + f ( n ) para cualquier entero dado n>0
g(1,1).g(N,X):-#prec(Ant,N),g(Ant,X1),+(2,X1,X).
f(1,1).f(N,X):-#prec(Ant,N),f(Ant,X1),g(N,Y),+(X1,Y,X).
Solución
Answer sets{ g(0,3), g(1,1), f(0,4), f(1,1) }
Relaciones
Diseñar dos funciones recursivas que calculen si un número es par o impar.
DLVdb Examples
http://www.dlvsystem.com/dlvdb-examples/
Updates
http://centria.di.fct.unl.pt/~jja/updates/implementations/page10/page16/page16.html
http://centria.di.fct.unl.pt/~jja/updates/page1/page1.html
Cena de Gala
1.- Imagine que deseamos planear una cena de lujo para los que se graduarán en la FCC.2.- Con la finalidad de que los graduados se sientan felices en su evento y puedan familiarizarse con las ontologías.3.- Los organizadores deciden preguntarles sus preferencias acerca de los vinos, en aras de poder reutilizar una clase que describa una ontología de vino famosa.
Cena de Gala
4.- Los organizadores detectan que solo una clase de vino no alcanzara el objetivo de satisfacer todas las preferencias de los asistentes.5.- Así, ellos buscan encontrar la selección de botellas más económicas tal que los graduados puedan tener el vino de su preferencia en la cena.
Los organizadores rápidamente se dan cuenta de que varias cajas de vino son necesarias para llevar a cabo su plan.
SELECT e.name, e.salary, d.location FROM emp e, dept d WHERE e.dept = d.dept_id AND e.salary > 31000;
Querys
emp("Jones", 30000, 35, "Accounting"). emp("Miller", 38000, 29, "Marketing"). emp("Koch", 2000000, 24, "IT"). emp("Nguyen", 35000, 42, "Marketing"). emp("Gruber", 32000, 39, "IT"). dept("IT", "Atlanta"). dept("Marketing", "New York"). dept("Accounting", "Los Angeles").
q1(Ename, Esalary, Dlocation) :- emp(Ename, Esalary, _, D), dept(D, Dlocation), Esalary > 31000.
q1(Ename, Esalary, Dlocation) :- emp(Ename, Esalary, _, D1), dept(D2, Dlocation), D1=D2, Esalary > 31000.