Datalog System Sintaxis general Variables A A 33
Datalog System Sintaxis general Variables: A, A 33, Arco_2, etc. Variable blanca: _ Constantes: juan, 1, 234, p. EDRO. Etc. Listas: [t 1, t 2, …, tn] ti son los elementos [H | T] donde H es la cabeza de la lista y T el resto de esta
Datalog System Sintaxis general P : - Q. Regla P. Hechos o datos de entrada : -Q. Restricciones fuertes : ~Q. Restricciones débiles
Datalog System Ejemplos de Hechos peso(manzana, 100, gramos). hombre(lupe) v mujer(lupe). papa(juan, luis). papa(luis, pedro). papa(pedro, ana). papa(luis, vero). papa(juan, toño). papa(miguel, oscar). papa(oscar, jair). papa(fer, angel).
Datalog System Ejemplos de Hechos sobre rangos universo(1. . 100). Equivale a definir que el universo tienen 100 números, es decir, universo(1), universo(2), …, universo(100). dias_semana(1. . 7). Es equivalente a dias_semana(1), …, dias_semana(7).
Datalog System Ejemplos de Reglas 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): -
Representación Conocimiento ¿Cómo determinar los nodos? r a t n e s e r p ? e o t r n o ie m ó m i ¿C conoc el ¿Q C ué con o exi cim ste ien to ? {nodo(a), nodo(b), nodo(c), nodo(d)} A B nodo(X): -eje(X, _). eje(a, b). Vértices eje(b, c). = {A, B, eje(b, d). C, D} nodo(Y): -eje(_, Y). Ejes = {(A, B), (B, C), (B, D)} 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, N 1, N 2) : - divisor(T, N 1), divisor(T, N 2). % Halla los divisores comunes non-maximales de T % larger_cd(T, N 1, N 2) : - cd(T, N 1, N 2), cd(T 1, N 2), T < T 1. % Aplica doble negacion: toma divisor non-maximal % gcd(T, N 1, N 2) : - cd(T, N 1, N 2), not larger_cd(T, N 1, N 2).
Máximo Común Divisor Algoritmo de Euclides gcd(X, X, X) : - #int(X), X>0. gcd(T, X, Y) : - X<Y, gcd(T, X, Y 1), Y = Y 1+X. gcd(T, X, Y) : - X>Y, gcd(T, X 1, Y), X = X 1+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 1 a) Diseñe dos funciones recursivas para evaluar f y g para cualquier entero dado n >0. 1 b) 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
Solución g(1, 1). g(N, X): -#prec(Ant, N), g(Ant, X 1), +(2, X 1, X). f(1, 1). f(N, X): -#prec(Ant, N), f(Ant, X 1), g(N, Y), +(X 1, Y, X). 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 /page 10/page 16. html
http: //asptut. gibbi. com/
http: //centria. di. fct. unl. pt/~jja/updates/page 1. html
Cena de Gala eamos na que magine anear 1. lujo para los que se graduarán en la FCC. 2. sientan familiarizarse con las ontologías. 3. - Los organizadores deciden preguntarles sus preferencias acerca de los vinos, en aras de eutilizar poder ontología de vino famosa.
Cena de Gala 4. clase alcanzara de vino noobjetivo el de satisfacer todas las preferencias de los asistentes. 5. - Así, ellos buscan encontrar la selección de botellasmás económicas que graduados los tal puedan cena. Los organizadores rápidamente se dan cuenta de que varias cajas de vino son necesarias para
Querys SELECT e. name, e. salary, d. location FROM emp e, dept d WHERE e. dept = d. dept_id AND e. salary > 31000; emp("Jones", 30000, 35, "Accounting"). emp("Miller", 38000, 29, "Marketing"). q 1(Ename, emp("Koch", Esalary, Dlocation) : - emp(Ename, Esalary, _, D 1), 2000000, 24, "IT"). dept(D 2, Dlocation), D 1=D 2, Esalary > 31000. emp("Nguyen", 35000, 42, "Marketing"). emp("Gruber", 32000, 39, "IT"). dept("IT", "Atlanta"). dept("Marketing", "New York"). dept("Accounting", "Los Angeles"). q 1(Ename, Esalary, Dlocation) : - emp(Ename, Esalary, _, D), dept(D, Dlocation), Esalary > 31000.
- Slides: 19