Datalog System Sintaxis general Variables:A, A33, Arco_2, etc. Variable blanca: _ Constantes:juan,...

19
Datalog System Sintaxis general Variables: A, A33, Arco_2, etc. Variable blanca: _ Constantes: juan, 1, 234, pEDRO. Etc. Listas: [t1, t2, …, t n ] t i son los elementos [H | T] donde H es la cabeza de la lista y T el resto de esta

Transcript of Datalog System Sintaxis general Variables:A, A33, Arco_2, etc. Variable blanca: _ Constantes:juan,...

Page 1: Datalog System Sintaxis general Variables:A, A33, Arco_2, etc. Variable blanca: _ Constantes:juan, 1, 234, pEDRO. Etc. Listas:[t1, t2, …, t n ] t i son.

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

Page 2: Datalog System Sintaxis general Variables:A, A33, Arco_2, etc. Variable blanca: _ Constantes:juan, 1, 234, pEDRO. Etc. Listas:[t1, t2, …, t n ] t i son.

Datalog System

Sintaxis generalP :- Q. ReglaP. Hechos o datos de entrada:-Q. Restricciones fuertes:~Q. Restricciones débiles

Page 3: Datalog System Sintaxis general Variables:A, A33, Arco_2, etc. Variable blanca: _ Constantes:juan, 1, 234, pEDRO. Etc. Listas:[t1, t2, …, t n ] t i son.

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

Page 4: Datalog System Sintaxis general Variables:A, A33, Arco_2, etc. Variable blanca: _ Constantes:juan, 1, 234, pEDRO. Etc. Listas:[t1, t2, …, t n ] t i son.

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

Page 5: Datalog System Sintaxis general Variables:A, A33, Arco_2, etc. Variable blanca: _ Constantes:juan, 1, 234, pEDRO. Etc. Listas:[t1, t2, …, t n ] t i son.

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

Page 6: Datalog System Sintaxis general Variables:A, A33, Arco_2, etc. Variable blanca: _ Constantes:juan, 1, 234, pEDRO. Etc. Listas:[t1, t2, …, t n ] t i son.

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

Page 7: Datalog System Sintaxis general Variables:A, A33, Arco_2, etc. Variable blanca: _ Constantes:juan, 1, 234, pEDRO. Etc. Listas:[t1, t2, …, t n ] t i son.

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

Page 8: Datalog System Sintaxis general Variables:A, A33, Arco_2, etc. Variable blanca: _ Constantes:juan, 1, 234, pEDRO. Etc. Listas:[t1, t2, …, t n ] t i son.

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

Page 9: Datalog System Sintaxis general Variables:A, A33, Arco_2, etc. Variable blanca: _ Constantes:juan, 1, 234, pEDRO. Etc. Listas:[t1, t2, …, t n ] t i son.

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.

Page 10: Datalog System Sintaxis general Variables:A, A33, Arco_2, etc. Variable blanca: _ Constantes:juan, 1, 234, pEDRO. Etc. Listas:[t1, t2, …, t n ] t i son.

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

Page 11: Datalog System Sintaxis general Variables:A, A33, Arco_2, etc. Variable blanca: _ Constantes:juan, 1, 234, pEDRO. Etc. Listas:[t1, t2, …, t n ] t i son.

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

Page 12: Datalog System Sintaxis general Variables:A, A33, Arco_2, etc. Variable blanca: _ Constantes:juan, 1, 234, pEDRO. Etc. Listas:[t1, t2, …, t n ] t i son.

Relaciones

Diseñar dos funciones recursivas que calculen si un número es par o impar.

Page 14: Datalog System Sintaxis general Variables:A, A33, Arco_2, etc. Variable blanca: _ Constantes:juan, 1, 234, pEDRO. Etc. Listas:[t1, t2, …, t n ] t i son.

http://asptut.gibbi.com/

Page 15: Datalog System Sintaxis general Variables:A, A33, Arco_2, etc. Variable blanca: _ Constantes:juan, 1, 234, pEDRO. Etc. Listas:[t1, t2, …, t n ] t i son.
Page 16: Datalog System Sintaxis general Variables:A, A33, Arco_2, etc. Variable blanca: _ Constantes:juan, 1, 234, pEDRO. Etc. Listas:[t1, t2, …, t n ] t i son.

http://centria.di.fct.unl.pt/~jja/updates/page1/page1.html

Page 17: Datalog System Sintaxis general Variables:A, A33, Arco_2, etc. Variable blanca: _ Constantes:juan, 1, 234, pEDRO. Etc. Listas:[t1, t2, …, t n ] t i son.

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.

Page 18: Datalog System Sintaxis general Variables:A, A33, Arco_2, etc. Variable blanca: _ Constantes:juan, 1, 234, pEDRO. Etc. Listas:[t1, t2, …, t n ] t i son.

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.

Page 19: Datalog System Sintaxis general Variables:A, A33, Arco_2, etc. Variable blanca: _ Constantes:juan, 1, 234, pEDRO. Etc. Listas:[t1, t2, …, t n ] t i son.

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.