Implementación de SPARQL Composicional con Consultas Anidadas basadas en SQL.

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Implementación de SPARQL Composicional con Consultas Anidadas basadas en SQL."

Transcripción

1 UNIVERSIDAD DE TALCA FACULTAD DE INGENIERÍA ESCUELA DE INGENIERÍA CIVIL EN COMPUTACIÓN Implementación de SPARQL Composicional con Consultas Anidadas basadas en SQL. ALEXIS ALEJANDRO LEIVA ORELLANA Profesor Guía: RENZO ANGLES ROJAS Memoria para optar al Título de Ingeniero Civil en Computación Curicó Chile Septiembre, 2011

2 UNIVERSIDAD DE TALCA FACULTAD DE INGENIERÍA ESCUELA DE INGENIERÍA CIVIL EN COMPUTACIÓN Implementación de SPARQL Composicional con Consultas Anidadas basadas en SQL. ALEXIS ALEJANDRO LEIVA ORELLANA Profesor Guía: RENZO ANGLES ROJAS Profesor Informante: MATTHEW BARDEEN Profesor Informante: BENJAMIN INGRAM Memoria para optar al Título de Ingeniero Civil en Computación Curicó Chile Septiembre, 2011

3 A mi familia, mi hija y todos quienes han confiado en mí

4 AGRADECIMIENTOS A quienes me han apoyado durante esta linda travesía. A la vida por darme la experiencia de estudiar en una universidad, algo lejano pero cercano a la vez. Siempre creí en las oportunidades, esta llegó y supe aprovecharla.

5 Resumen La Web Semántica es una extensión de la web actual en la cual se busca que la información esté acompañada de significado de manera que sea procesable de manera automática por las máquinas. Para llevar a cabo esta visión, el consorcio de la Web (W3C) propone dos estándares fundamentales: Resource Description Framework (RDF), como modelo de datos para representar información; y SPARQL, como lenguaje estándar para consultar datos RDF Este proyecto consiste en la implementación de SPARQL en su versión Composicional (SPARQL-C), la cual esta basada en la especificación W3C para SPARQL, pero se define a través de una sintaxis (operadores) y semántica (significado de los operadores) formales. Adicionalmente, se estudiaron e implementaron consultas anidadas para SPARQL basadas en las estructuras definidas para SQL. Ambas Implementaciones fueron validadas a través de casos de prueba especificados por la W3C. El resultado de este proyecto cumple con los requerimientos del lenguaje, en concordancia con los casos de prueba definidos por la W3C. Palabras clave: SPARQL, Web Semántica, RDF, Base de datos, Lenguaje de Consulta. -1-

6 Abstract The Semantic Web is an extension of the current Web in which the information is accompanied with some meaning in order to allow an automatic processing by machines. To accomplish this vision, the Web Consortium (W3C) proposed two main standards: the Resource Description Framework (RDF), as the data model for representing information; and SPARQL, as the standard language for querying RDF data. This project is oriented to implement the Compositional version of SPARQL (SPARQL-C), which is based on the W3C specification of SPARQL, but is defined in terms of formal syntax (operators) and semantics. Additionally, we studied and implemented nested queries for SPARQL based on SQL structures. Both implementations were validated through test cases specified by the W3C. The result of this project meets the requirements of the language, in accordance with the test cases defined by the W3C. Keywords: SPARQL, Semantic Web, RDF, Database, Query Language. -2-

7 TABLA DE CONTENIDOS 1. CAPITULO I: INTRODUCCIÓN Descripción del Contexto Descripción del problema Objetivos Objetivo General Objetivos Específicos CAPITULO II.MARCO TEÓRICO Resource Description Framework (RDF) SPARQL SPARQL SPARQL C Base de datos relacional y anidamiento en SQL SQL Subconsultas en SQL Implementación de Lenguajes Lenguajes y Compiladores Compilación de lenguajes Sintaxis y Semántica de las subconsultas de SPARQL-C Sintaxis Semántica..36

8 3. CAPITULO III. DESARROLLO DE LA SOLUCIÓN Metodología de Trabajo Trabajo relacionado Diseño Implementación y evaluación del Prototipo Implementación del prototipo Evaluación del prototipo CAPITULO IV. CONCLUSIONES..65

9 INDICE DE FIGURAS Figura 1 Ejemplo de un Grafo RDF Figura 2 Ejemplo de sintáxis RDF/XML Figura 3 Ejemplo de sintaxis N Figura 4 Simplificación de propiedades para valores múltiples en N Figura 5 Simplificación de Sujetos en N Figura 6 Datos en formato RDF/XML Figura 7 Grafo RDF Figura 8 Estructura de una clausula SELECT SQL Figura 9 Ejemplo de instancia de base de datos relacional Figura 10 Esquema de un Traductor Figura 11 Árbol Sintáctico para E = M * C ^ Figura 12 Fases de un Compilador Figura 13 Árbol de análisis sintáctico para E = M * C ^ Figura 14 Papel del analizador Sintáctico en el Compilador Figura 15 Interfaz Twinkle Figura 16 Pasos de ejecución de consulta Figura 17 Arquitectura de la aplicación Figura 18 Diagrama de clases para la arquitectura RDF-SPARQL Figura 19 Diagrama de Clases del Árbol Sintáctico de Consulta Figura 20 Diagrama de clases para restricciones Figura 21 Diagrama de clases para Operators Figura 22 Modelo de Ejecucion de una Consulta

10 CAPÍTULO I: INTRODUCCIÓN 1.1 Descripción del Contexto La Web Semántica es una extensión de la web actual en la cual se espera que la información esté acompañada de significado, esto orientado a que los humanos y máquinas puedan trabajar en cooperación [18]. Bajo esta visión las máquinas accederán mejor a los contenidos y las búsquedas entregarán mejores y más precisos resultados a los usuarios. Desde el año 1994 que el consorcio de la Web (W3C) propone recomendaciones y estándares para la Web. Entre estos, el Marco de Descripción de Recursos (en inglés, Resource Description Framework, RDF) es un estándar que define un modelo de datos para representar información en la Web Semántica. RDF nos permite hacer descripciones simples acerca de los recursos que se encuentran en la Web, y que por ejemplo es usada en catálogos de libros, directorios, colecciones personales de música, fotos, eventos, etcétera [18]. SPARQL es el lenguaje estándar para consultar datos RDF desde el año La primera especificación de SPARQL se publicó el 12 de octubre de 2004 y desde esa fecha ha ido mejorando constantemente. -1-

11 1.2 Descripción del problema Cuando se aprobó SPARQL por la W3C [3] se dejaron propuestas algunas características adicionales 1. En enero del 2009 se comenzó a trabajar en las extensiones de SPARQL, dentro de las cuales encontramos la idea de consultas anidadas. En el contexto del lenguaje SQL (lenguaje de consulta para bases de datos relacionales), las subconsultas o consultas anidadas son expresiones que permiten que una consulta esté anidada dentro de otra consulta [7]. Las subconsultas permiten efectuar tipos de consulta; adicionales, entre ellas comprobar la pertenencia de elementos a conjuntos (como por ejemplo determinar todos los alumnos que están en último año de su carrera ). También permiten la comparación de conjuntos como por ejemplo determinar todos los alumnos mayores de 24 años y que cursan su último año de carrera [5]. SPARQL Composicional (o simplemente SPARQL-C) [3] es una especificación simplificada y bien estudiada de SPARQL. Cuenta con: (a) un algebra definida formalmente; (b) una semántica composicional; y (c) un estudio de casos particulares e inconsistencias. Adicionalmente se ha estudiado que SPARQL-C tiene el mismo poder expresivo que SPARQL original [2] (el poder expresivo de un lenguaje de consulta son todas aquellas consultas que se pueden expresar en él [19]). SPARQL-C no cuenta con implementación existente a la fecha. Además, SPARQL no incluye consultas anidadas; y en consecuencia no explota sus facilidades. 1 Véase Sección Status of this document: Questions and comments about SPARQL that are not related to this specification, including extensions and features, can be discussed on the mailing list public-sparql-dev@w3.org... Adicionalmente puede referirse a -2-

12 1.3 Objetivos Objetivo General Implementar prototipo SPARQL-C con consultas anidadas basadas en SQL Objetivos Específicos Los objetivos específicos implicados en este trabajo son: Diseñar e implementar SPARQL-C Estudiar la inclusión de consultas anidadas en SPARQL-C siguiendo el enfoque de SQL Diseñar e implementar SPARQL-C con consultas anidadas -3-

13 CAPÍTULO II: MARCO TEÓRICO 2.1 Resource Description Framework (RDF) La Web no fue diseñada exclusivamente como un espacio de información para que se comuniquen los humanos, además se esperaba que las máquinas puedan cooperar en ello. Actualmente existen varios problemas para que este objetivo se cumpla. Uno de gran importancia es la variedad de formatos y modelos para representar la información. En este sentido, la Web es una gran base de datos en la cual se necesita estándares de publicación de la información para que esta gran base de datos pueda ser consultada y procesada por máquinas y humanos. La Web Semántica tiene como objetivo principal desarrollar lenguajes para expresar información tal que esta pueda ser procesable por las máquinas [7]. El Marco para Descripción de Recursos (en inglés Resource Description Framework, RDF) se basa en identificar los recursos mediante Identificadores Web (llamados Uniform Resource Identifiers, o URIs), y describirlos en términos de propiedades simples y sus respectivos valores. De esta manera, RDF permite realizar afirmaciones acerca de los recursos [1]. Una afirmación en RDF se denomina un triple RDF y consiste en un sujeto, un predicado y un objeto [14]. Sujeto Predicado Objeto Por ejemplo µ1 nombre Juan -4-

14 El sujeto es el recurso que se está describiendo (µ1). El predicado es la propiedad o relación que se quiere establecer acerca del recurso (nombre). Finalmente el objeto es el valor de la propiedad u otro recurso con el que se establece la relación ( Juan ). Desde un punto de vista abstracto, un conjunto de triples pueden verse como un grafo, llamado grafo RDF. A continuación se muestra un grafo RDF el cual describe una persona cuyo nombre es Andrés Jara. Sean: P un prefijo de valor ANJR la URI formada por el prefijo P, seguido de AJ. Entonces la URI la escribimos como P:AJ lo que representa AC la URI AC:Identificador algún atributo que realiza afirmación de un recurso. Donde AC:tipo equivale a Figura 1 Ejemplo de un Grafo RDF -5-

15 La Figura 1 muestra además el uso de URIs en RDF. En este ejemplo se representan: Personas (por ejemplo Andrés Jara, ANJR) Tipos de recursos, por ejemplo, Persona, identificada por Propiedades de varios recursos, por ejemplo Rol, identificado por Valores de sus propiedades, por ejemplo Profesor, como el valor de la propiedad AC:Rol (RDF también usa strings de caracteres tales como Andrés Jara León, y valores de otros tipos de datos como enteros (integers) y fechas (date), como valores de propiedades). Del ejemplo anterior < ANJR, AC:correo, ajara@academicos.edu > es un triple RDF, donde se afirma que el recurso ANJR tiene la propiedad AC:correo cuyo valor es ajara@academicos.edu. Entonces, el sujeto identifica el recurso de una afirmación, el predicado identifica la propiedad o característica del sujeto y finalmente el objeto identifica el valor de la propiedad [1]. RDF provee además una sintaxis basada en XML (llamada RDF/XML) con la cual se pueden codificar datos en RDF [22]. La Figura 2 muestra la representación del modelo, en la sintaxis mencionada. -6-

16 <?xml version="1.0"?> <rdf:rdf xmlns:ac=" xmlns:anjr=" xmlns:rdf=" <rdf:description rdf:about=" <AC:tipo rdf:resource=" /> <AC:Rol>Profesor</AC:Rol> <AC:nombreCompleto>Andrés Jara León</AC:nombreCompleto> </rdf:description> </rdf:rdf> Figura 2 Ejemplo de sintáxis RDF/XML Así como HTML, RDF/XML es procesable por maquinas. Usando URIs se puede enlazar partes de información a través de la Web. Sin embargo, a diferencia del hipertexto convencional, las URIs en RDF permiten referenciar a cualquier recurso identificable, incluyendo algunas que no pueden ser solicitadas directamente en la Web (como la persona Andrés Jara). El resultado es que adicionalmente estos recursos se pueden describir como páginas web, RDF entonces también puede describir autos, negocios, noticias, eventos, etc. En adición, las mismas propiedades de RDF tienen URIs, que son necesarias para representar relaciones que existen entre los ítems relacionados [1]. Notación N3 Otra representación posible y simplificada de RDF/XML es la Notación N3 (o simplemente N3) [28]. Esta notación es mucho más compacta y fácil de leer que la notación RDF/XML. Los objetivos de N3 son: Optimizar la representación de datos y su lógica en el mismo lenguaje Permitir la representación de RDF -7-

17 Permitir la integración de reglas para RDF Permitir hacer afirmaciones de un recurso y que se hagan afirmaciones acerca de las mismas Ser legible, natural y los más simétrica posible. Algunas de las principales características de N3 son: Abreviación de URIs usando prefijos que están ligados a un espacio de nombres similarmente que en XML Soporte de múltiples objetos para la misma propiedad separándolos por coma, Soporte de múltiples predicados (propiedades) para el mismo recurso separándolos por punto y coma ; Variables y cuantificación para permitir, por ejemplo, expresar reglas Una gramática simple y consistente A continuación se presenta el ejemplo de la Figura 1 notación ANJR: AC: < ANJR: AC:tipo AC:persona. ANJR: AC:correo ajara@academicos.edu". ANJR: AC:Rol "Profesor". ANJR: AC:nombreCompleto Andrés Jara León. Figura 3 Ejemplo de sintaxis N3. Cuando se dice que N3 tiene Soporte de múltiples objetos para la misma propiedad separándolos por coma, significa que del ejemplo de la Figura 3 si el mismo recurso ANJR tuviese dos enlaces tipo AC:Rol podemos escribirla como: -8-

18 @prefix ANJR: AC: < ANJR: AC:Rol "Profesor", "Alumno". Figura 4 Simplificación de propiedades para valores múltiples en N3 Y cuando se dice que tiene Soporte de múltiples propiedades para el mismo recurso separándolos por punto y coma ; nos referimos a que podemos agrupar por sujeto y escribir los triples como ANJR: AC: < ANJR: AC:Rol "Profesor"; AC:tipo AC:persona. Figura 5 Simplificación de Sujetos en N3 2.2 SPARQL SPARQL SPARQL [2] es un lenguaje de consulta recomendado por la W3C para implementar un lenguaje para consultar información representada en RDF. Las consultas SPARQL se basan en patrones de triple (triple patterns), operadores de conjunción, disyunción, filtro, entre otros. Un patrón de triple tiene similitud a un triple definido para RDF, con la diferencia que los triples SPARQL pueden escribirse utilizando variables que reemplacen el sujeto, predicado u objeto según se desee. Por ejemplo, (a?x?z) es un patrón de triple, donde?x y?z son variables. En este caso, (a b c) satisface (es una solución) para el patrón. En la siguiente tabla se muestra la estructura básica del lenguaje de consulta SPARQL [16]. -9-

19 Tabla 1 Sintaxis básica de una consulta SPARQL BASE <iri> Prologo (opcional) PREFIX prefix: <iri> (repetible) SELECT (DISTINCT)secuencia de?variables SELECT (DISTINCT)* DESCRIBE secuencia de?variables o <iri> Formas de resultado de consulta DESCRIBE * (requerido, se elige uno) CONSTRUCT lista de triple patterns ASK Origen de datos de la consulta FROM <iri> (opcional) FROM NAMED <iri> Define como construir el dataset Patrón de Grafo (opcional, requerido patrón de grafo para ASK) Ordenamiento de los resultados de la ORDER BY... consulta (opcional) Modificadores de los resultados de la LIMIT n, OFFSET m consulta (opcional) Resultado de una consulta SPARQL SPARQL tiene cuatro formas de consulta. Estas formas de consulta utilizan las soluciones de coincidencia de patrones (o triples RDF que satisfacen patrones SPARQL) para formar conjuntos de resultados o grafos RDF. Las formas de consulta son: SELECT. Retorna los triples RDF que coinciden con el patrón de la consulta SPARQL. CONSTRUCT. Retorna un grafo RDF que se construye a partir del reemplazo de variables en una lista de triple patterns. ASK. Retorna un valor booleano que indica si el patrón de la consulta retorna una solución (al menos una). DESCRIBE. Retorna un grafo RDF que describe los recursos encontrados. -10-

20 Para representar el resultado de una consulta de la forma SELECT o ASK existe un formato denominado SPARQL Query Results XML Format (Recomendación W3C, 15 Enero 2008). Para ejemplificar el formato se presenta un ejemplo a continuación. Dado el siguiente resultado:?nombre?apellido?edad Fernando León Jorge Martínez 30 En formato XML queda: <?xml version="1.0"?> <sparql xmlns:rdf=" <head> <variable name= nombre /> <variable name= apellido /> <variable name= edad /> </head> <results> <result> <binding name="nombre"> <literal>fernando</literal> </binding> <binding name="apellido"> <literal>león</literal> </binding> </result> <result> <binding name="nombre"> <literal>jorge</literal> </binding> <binding name="apellido"> <literal>martínez</literal> </binding> <binding name="edad"> <literal datatype=" </binding> </result> </results> -11-

21 </sparql> Figura 6 Datos en formato RDF/XML Cuando un triple no define el valor para una variable, simplemente no se agrega el enlace (de etiqueta binding en XML). Figura 7 Grafo RDF Ejemplo: Sea el grafo de la Figura 7 un grafo RDF que representa afirmaciones acerca de tres personas (Persona1, Persona2 y Persona3) al que llamaremos G. Mediante una URI podemos identificar a un elemento de G, por ejemplo < > identifica una persona (Persona1). En SPARQL podemos hacer referencia a un elemento de las siguientes formas: BASE <Persona1> PREFIX personas: personas: Persona1-12-

22 En el siguiente ejemplo tenemos un subconjunto de triples del grafo RDF de la Figura 7 (sólo los triples con el predicado nombre). La consulta SPARQL presentada extrae el nombre de la persona Persona1 del grafo G, donde la variable?n será la que representará dicho atributo. - Datos < < "Javier". < < "Juan". < < "Alejandro". - Consulta PREFIX personas: < > PREFIX predicados: < > SELECT?N FROM G personas:persona1 predicados:nombre?n. - Resultado N "Javier" -13-

23 En el caso de la Forma de Consulta SELECT 2, las consultas en SPARQL comienzan con SELECT, seguido de esta palabra indicamos los datos que deseamos obtener como respuesta. Con FROM se indica la fuente de datos a utilizar, podemos indicar más de una fuente de datos indicando varios FROM seguidos de la URI correspondiente. Por último con indicamos el patrón con el que se filtrará la información de los triples RDF. Para el ejemplo recién visto la consulta utilizada se compone de tres partes, primero se definió dos prefijos, definidos con PREFIX, para ejemplificar el uso de etiquetas, luego SELECT con el que especificamos que queremos la variable?n como respuesta y finalmente con el que indicamos el triple pattern que será comparado con el grafo que contiene los datos SPARQL-C SPARQL-C [3] es una especificación más reducida respecto a la recomendada por la W3C. Nace a raíz de la motivación por mejorar la especificación original. SPARQL-C presenta un estudio formal de SPARQL, preocupándose principalmente de los patrones de grafo. La sintaxis de SPARQL-C presenta operadores binarios, estos son UNION, AND y OPT, y FILTER. Una característica de estos operadores es que se deben agrupar con paréntesis. En el operador OPT (opcional) es explicita la asociatividad a la izquierda y existe precedencia de AND sobre OPT. Un Triple se define como el resultado de combinar IRIs, literales y un conjunto de variables. Otra forma de llamarle es patrón triple o patrón básico de grafo. Si establecimos que P1 y P2 son patrones de grafo, luego podemos decir que (P1 AND P2), (P1 OPT P2), (P1 UNION P2) también los son. 2 Para la forma de consulta ASK reemplazamos la palabra SELECT por ASK. Las otras formas de consulta no serán analizadas en este proyecto. Para mayor información acerca de ellas véase [2] -14-

24 Si P es un patrón de grafo y R es una restricción de filtro luego la expresión (P FILTER R) es un patrón de grafo. Una restricción de filtro se compone usando elementos que incluyen IRIs, variables, literales y constantes, conectores lógicos (,, ), símbolos de comparación (<,,, >), el símbolo de igualdad ( = ), y predicados unarios como bound, isblank, e isiri, y otras características. A modo de ejemplo a continuación se presenta algunas restricciones de filtro: Comparación de literal: En este ejemplo se filtra los triples donde la variable?nombre sea igual al literal José FILTER?nombre = José Comparación numérica: En este ejemplo se filtra los triples donde la variable?edad sea de tipo numérico (específicamente integer) cuyo valor exceda 30. FILTER?edad > 30 ``xsd:integer Comparación de literal con lenguaje: En este ejemplo se busca los triples que definan la variable?z con valor literal gato escrito en lenguaje es (o español). FILTER?Z = Uso de funciones SPARQL: En este ejemplo se busca los triples que definan la variable? , independiente del valor que contenga. Por supuesto, no todos los triples definen un valor para una variable dada. El posible retorno de evaluar bound es True o False (Verdadero o Falso respectivamente), cuando un triple no define una variable, el retorno de la función es False. FILTER bound(? ) La Tabla 2 presenta un ejemplo para diferenciar claramente la sintaxis de las dos especificaciones de SPARQL presentadas. -15-

25 Tabla 2 Comparativa Sintaxis de SPARQL-C con Sintaxis SPARQL original. Sintáxis original de Triple pattern + variables SPARQL Sintaxis algebraica (SPARQL-C)?X nombre Alejandro (?X nombre Alejandro ) Join de patrones P 1. P 2 ( P 1 AND P 2 ) Patrones opcionales P 1 OPTIONAL P 2 ( P 1 OPT P 2 ) Unión de patrones P 1 UNION P 2 ( P 1 UNION P 2 ) Condiciones de filtro sobre patrones P 1 FILTER C ( P 1 FILTER C ) Sea el grafo RDF de la Figura 7, de la sección anterior, al que llamaremos G. A continuación se presenta ejemplos detallados para explicar la sintaxis de los patrones ya presentados: Triple Pattern (Patrón Triple) - Consulta?,? (?? ) Indicamos un patrón de triple para que obtenga todos los triples RDF del origen de datos que hagan relación a lo especificado. En este caso (?X nombre?n), retorna la siguiente tabla de soluciones:?x?n Persona1 Persona2 Javier Juan Persona3 Alejandro Tabla 3 Resultado de Patrón Triple Conjunción de patrones (AND) - Consulta?,? -16-

26 (?? (?? )) - Resultado?N?A Javier 25 Juan 26 Tabla 4 Resultado de Conjunción de patrones En la Tabla 4 se observa que a diferencia de los triples de la Tabla 3 no contiene el triple para Alejandro ya que este último correspondiente al nodo Persona3 no posee un atributo edad que es lo que se requiere por el patrón triple (?X edad?a) con el cual se está realizando la conjunción (o intersección) del primer patrón (?X nombre?n). En otras palabras se debe cumplir que el nodo?x contenga ambas propiedades (nombre y edad). Filtros o restricciones sobre los resultados (FILTER) - Consulta?,? (????? > 25 ) - Resultado?N?A Juan 26 Tabla 5 Resultado de un FILTER En este ejemplo los resultados obtenidos por el triple??, son filtrados por la restricción FILTER?A > 25 que nos indica que los valores de los datos de la columna?a sean mayores al valor 25. Luego de esto se realiza la conjunción con los datos de la Tabla 3 de donde se obtienen los valores para los nombres definidos por la variable?n. -17-

27 Patrones opcionales (OPTIONAL) - Consulta?,? (???? ) - Resultado?N?E Javier Juan Alejandro alejandro@ejemplo.com Tabla 6 Resultado de OPTIONAL En este ejemplo el operador OPT funciona similar al operador AND, la diferencia está en que el segundo patrón no es obligatorio que se cumpla, del grafo observamos que el único triple con la relación es (Persona3 alejandro@ejemplo.com ). Disyunción de patrones (UNION) - Consulta?,?,? (????? > 25 (???? ) ) - Resultado -18-

28 ?N?A?E Juan 26 Javier Juan Alejandro Tabla 7 Resultado de UNION En este ejemplo el operador UNION actúa sobre los patrones que originan la Tabla 5 y la Tabla 6 respectivamente. El primer triple del resultado de la Tabla 7 corresponde a la Tabla 5 mientras que los restantes a la Tabla 6. El funcionamiento corresponde simplemente a juntar triples de dos tablas. 2.3 Base de datos relacional y anidamiento en SQL SQL SQL [17] es un lenguaje que permite organizar, administrar y recuperar información almacenada en bases de datos relacionales. SQL está basado en el modelo de datos relacional. En la siguiente figura se muestra la estructura de una consulta en el lenguaje SQL -19-

29 Figura 8 Estructura de una clausula SELECT SQL La consulta comienza con la palabra clave SELECT con la cual indicamos los atributos de tabla que deseamos obtener como respuesta. Los ítems seleccionados son generalmente especificados por elementos separados por comas. Cada ítem seleccionado genera una columna con el resultado. En un ítem de selección se puede indicar el nombre de una columna de alguna de las tablas consultadas en la cláusula FROM, una constante, es decir por cada fila retornada se repite el valor y finalmente una expresión que indica que la columna será calculada. En la cláusula FROM se indicará las fuentes de datos a consultar (las tablas). Podemos indicar más de una tabla separándose por comas. Por último con indicamos la condición de búsqueda que filtrará las filas de datos recuperadas. - Considere la siguiente base de datos: -20-

30 Figura 9 Ejemplo de instancia de base de datos relacional A continuación se presenta un ejemplo de consulta SQL basado en la instancia de la Figura 9. Consulta SELECT Nombre, Apellido, Nombre_Ciudad FROM PERSONA, CIUDAD Edad > 20 and PERSONA.Ciudad = CIUDAD.Cod_Ciudad Resultado Nombre Apellido Nombre_Ciudad JOSE GONZÁLEZ CURICO MARIO FUENTES TALCA Subconsultas en SQL Una subconsulta es una consulta dentro de otra. Los resultados de una subconsulta son usados para determinar los resultados de una consulta que está en un nivel mayor en la -21-

31 consulta que la contiene. El siguiente es un ejemplo de subconsulta (usando la instancia de la Figura 9): Listado de nombres de personas (con edades respectivas) que tienen edad por sobre el promedio de todas las edades Consulta SELECT nombre, Edad FROM PERSONA Edad > ( SELECT AVG(Edad) FROM PERSONA ) Resultado Nombre Edad JOSE 30 MARIO 26 En este caso la subconsulta usando la función AVG obtiene el promedio de las edades, que es 25, de las personas de la tabla PERSONA, valor que usamos para filtrar los datos que nos entrega la consulta principal. A continuación presentaremos los distintos tipos de subconsultas basándose en la instancia de la Figura 9. La prueba de membresía (IN) El operador IN compara un valor con una columna de datos obtenidos desde una subconsulta retorna TRUE (verdadero) si el valor coincide al menos con un elemento de la columna: -22-

32 Listado de ciudades donde exista al menos una persona cuya edad sea impar Consulta SELECT DISTINCT Ciudad.Nombre_Ciudad FROM Persona, Ciudad Persona.Ciudad = Ciudad.Cod_Ciudad and Edad IN ( SELECT Edad FROM Persona (Edad % 2) = 1 ) Resultado Nombre_Ciudad CURICO En este ejemplo la subconsulta entrega las edades impares existentes en el listado de personas. Posteriormente por cada persona se verifica si su edad existe en el grupo de las edades impares (el operador % entrega el resto de una división, por lo tanto si el resto equivale al valor 1, implica que el dividendo de la división es impar). La prueba de existencia (EXISTS) El operador EXISTS averigua si una subconsulta produce al menos una fila como resultado. Listado de ciudades donde existen personas con apellido GONZÁLEZ. Podemos reescribirla de otro modo como: Listado de las ciudades que cuenten con al menos un habitante cuyo apellido sea GONZÁLEZ -23-

33 Consulta SELECT DISTINCT Nombre_Ciudad FROM CIUDAD EXISTS ( FROM PERSONA PERSONA.Apellido = 'GONZÁLEZ' and PERSONA.Ciudad = CIUDAD.Cod_Ciudad ) Resultado Nombre_Ciudad CURICO Generalmente las subconsultas usadas en la prueba de existencia EXISTS se inician con. Si deseamos que nuestra consulta retorne lo contrario escribimos NOT antes de EXISTS. Retornaría entonces: Listado de ciudades donde NO existan personas cuyo apellido sea GONZÁLEZ. Consulta SELECT DISTINCT Nombre_Ciudad FROM CIUDAD NOT EXISTS ( FROM PERSONA PERSONA.Apellido = 'GONZÁLEZ' and PERSONA.Ciudad = CIUDAD.Cod_Ciudad ) -24-

34 Resultado Nombre_Ciudad CHILLAN SAN FERNANDO TALCA Pruebas de cuantificación (SOME y ALL) El operador SOME es usado en conjunto con los operadores de comparación (<,,, >, =, <>) para comparar un valor de prueba con una columna de datos producida por una subconsulta. Listado de personas cuya edad exceda al menos a una de las edades de las otras personas En otras palabras Listado de personas excluyendo el menor. Consulta SELECT Nombre, Apellido,Edad FROM Persona Edad > SOME ( SELECT Edad FROM Persona ) Resultado Nombre Apellido Edad JOSE GONZÁLEZ 30 MARIO FUENTES

35 En la subconsulta se obtienen todas las edades. Entonces por cada persona del listado se va comparando si existe al menos una edad menor del listado de las edades obtenidas por la subconsulta. El operador ALL, al igual que SOME es usado con los operadores de comparación para comparar un valor de prueba con una columna de datos producida por una subconsulta. Listado de nombres y edades de aquellas personas que tengan edad menor a todas las domiciliadas en TALCA Consulta SELECT Nombre, Edad FROM PERSONA Edad < ALL ( SELECT Edad FROM PERSONA, CIUDAD PERSONA.Ciudad = CIUDAD.Cod_Ciudad and CIUDAD.Nombre_Ciudad = TALCA ) Resultado Nombre MARTIN 19 Edad 2.4 Implementación de Lenguajes Lenguajes y Compiladores Un lenguaje, sea natural (como español) o artificial (como Java) es un conjunto de palabras o caracteres de algún alfabeto [20]. Sus palabras son llamadas sentencias o declaraciones. -26-

36 Las palabras de un lenguaje son especificadas por medio de las reglas de sintaxis. Dichas palabras están conformadas por caracteres del alfabeto del lenguaje. En el español por ejemplo existen reglas para especificar la sintaxis de las oraciones. Las descripciones formales de lenguajes de programación frecuentemente no incluyen (por simplicidad) descripciones de las unidades sintácticas de bajo nivel. Estas unidades son denominadas lexemas. Su descripción se realiza por medio de especificaciones léxicas, la cual puede estar separada de la descripción sintáctica del lenguaje. En los lenguajes de programación se encuentran los literales numéricos, operadores, palabras especiales (o reservadas), entre otros. Un traductor se define como un programa que, dado un texto o programa escrito en un lenguaje fuente, traduce o convierte el texto o programa a un lenguaje de destino produciendo, si corresponde, mensajes de error [13]. Los traductores engloban tanto a los compiladores como a los intérpretes. Figura 10 Esquema de un Traductor Un compilador es un traductor que recibe de entrada una sentencia en lenguaje formal y cuya salida tiene un fichero ejecutable, en otras palabras, realiza la traducción de código de alto nivel a lenguaje de máquina. Los intérpretes son similares a los compiladores, la diferencia está en que la salida es una ejecución. En un intérprete de comandos (por ejemplo la consola de Windows) se recibe un texto, se interpreta y realiza una acción. -27-

37 2.4.2 Compilación de lenguajes La compilación es el proceso de traducción del programa fuente y se divide en dos partes: análisis y síntesis. En la parte del análisis se divide al programa fuente en sus principales componentes y se crea una representación intermedia de este. La parte de síntesis se encarga de la construcción del programa objeto (o programa en lenguaje máquina) usando como entrada la representación intermedia. En la etapa de análisis de la compilación se genera un árbol sintáctico, donde cada una de las operaciones que implica el programa fuente son representadas por nodos del árbol y a su vez los hijos de estos representan los argumentos para los respectivos operadores. En la Figura 11 se muestra una estructura jerárquica denominada árbol, específicamente árbol sintáctico para una fórmula matemática. Figura 11 Árbol Sintáctico para E = M * C ^ 2 Conceptualmente, para transformar un programa fuente en programa objeto deben pasar varias fases; cada fase se encarga de ir transformando la representación del programa en otra. En la Figura 12 se muestra una descomposición típica de las fases mencionadas. -28-

38 Figura 12 Fases de un Compilador Análisis léxico El analizador léxico es aquel que se encarga de revisar la cadena de caracteres de los que se compone el programa fuente. Este analizador lee la secuencia de caracteres y realiza agrupaciones de caracteres que tienen una estructura o significado particular; dichas agrupaciones se les denomina componentes léxicos, llamados también tokens. A este tipo de análisis también se le conoce como análisis lineal o de exploración. Para el ejemplo de la Figura 11 los componentes léxicos son los siguientes: -29-

39 El identificador E El símbolo de igualdad = El identificador M El signo de multiplicación * El identificador C El símbolo exponencial ^ El numero 2 No consideramos los espacios en blanco ya que estos comúnmente son eliminados en el análisis léxico. Para la afirmación representada en la Figura 11 ( E = M * C ^ 2 ; ) los tokens y lexemas son los siguientes: Lexemas Tokens (componentes léxicos) E Identificador = signo_igualdad M Identificador * op_multiplicacion C Identificador ^ op_potencia 2 literal_entero ; punto_y_coma Análisis sintáctico El análisis sintáctico constituye la acción de agrupar componentes léxicos del programa fuente en frases gramaticales que el compilador utiliza para simplificar la salida. Generalmente las frases gramaticales del programa fuente son representadas por medio de un árbol de análisis sintáctico. En la Figura 13 se ilustra el árbol de análisis sintáctico para el ejemplo de la Figura

40 Figura 13 Árbol de análisis sintáctico para E = M * C ^ 2 El árbol de análisis sintáctico depende de la estructura jerárquica. La estructura jerárquica de un programa normalmente es expresado por medio de un conjunto de reglas recursivas que conforman una gramática. Una Gramática independiente del contexto (o simplemente gramática) es la notación con la que se especifica la sintaxis de un lenguaje. Por medio de una gramática se define formalmente la estructura jerárquica del lenguaje por la que se rige el analizador sintáctico. Por ejemplo para el lenguaje de programación Java una proposición if-else tiene la forma if ( expresión ) proposición else proposición Donde, la proposición por completo es la sucesión de la palabra clave if, un paréntesis que abre, una expresión, un paréntesis que cierra, la palabra clave else y finalmente otra expresión. Si usamos la variable E para representar una expresión, la variable P, para una proposición, esta regla de estructuración queda expresada como P : if ( E ) P else P -31-

41 Donde la flecha define una regla que se denomina producción. Los elementos léxicos de las producciones se denominan componentes léxicos. A las variables E y P se les llama no terminales. Las gramáticas libres de contexto se componen por: Símbolos terminales Un conjunto de no terminales Producciones Un no terminal al que se le llama símbolo inicial. Una cadena con cero componentes léxicos se escribe como y recibe el nombre de cadena vacía. La siguiente gramática define un lenguaje para expresar una secuencia de sumas y diferencias de dígitos como lo es Las producciones de la gramática son las siguientes: lista : lista + dígito lista : lista dígito lista : dígito dígito : Realizando un agrupamiento de los lados derechos de las producciones que tienen el no terminal lista la gramática queda como: lista : lista + dígito lista dígito dígito dígito : De este ejemplo lista corresponde al no terminal inicial pues es el primero que se dio, los componentes léxicos de la gramática corresponden a los símbolos

42 De una gramática se derivan cadenas empezando con el símbolo inicial y reemplazando repetidamente un no terminal por el lado derecho de una producción para ese no terminal. Las cadenas de componentes léxicos derivadas del símbolo inicial forman lo que llamamos lenguaje definido por la gramática. Figura 14 Papel del analizador Sintáctico en el Compilador En la Figura 14 se observa cómo el analizador sintáctico obtiene cada uno de los componentes obtenidos por el analizador léxico para luego generar el árbol de análisis sintáctico. Análisis semántico El análisis semántico consiste en verificar que el programa fuente no contenga errores semánticos y reúne información sobre los tipos para la fase posterior de generación de código. En este análisis se utiliza la estructura jerárquica determinada por la fase de análisis sintáctico para identificar operadores y operandos de expresiones y proposiciones. El siguiente es un ejemplo de error semántico: Si se tiene la expresión R = A / B, con la regla recursiva: División es R = dígito /dígito -33-

43 dígito es cualquier símbolo del rango 0 9 Sintácticamente la expresión R = 7 / 0 es válida y no se detectará error en el análisis sintáctico pues se ajusta a la sintaxis de la expresión, pero se producirá error semántico, la división por cero Los componentes Generador de código intermedio, optimador de código y generador de código son los que producen finalmente el programa en lenguaje máquina 3. Estos últimos componentes reciben el programa fuente validado para que se encarguen solamente de la generación del código para máquina. 2.5 Sintaxis y Semántica de las subconsultas de SPARQL-C Sintaxis A continuación se presentan los operadores de subconsultas de SPARQL-C. A la especificación SPARQL-C con subconsultas se agrega los operadores de restricción SOME, ALL, IN y EXISTS. Estos operadores se expresan sintácticamente: Prueba de cuantificación Operador SOME ALL Sintaxis P FILTER? P FILTER? Prueba de Membresía IN P FILTER? Prueba de existencia EXISTS P FILTER ( ) 3 Para información completa de estos componentes véase [21]. Para efectos de este proyecto solo se necesita profundizar en analizadores léxico, sintácticos y semánticos. -34-

44 Dónde: P es un patrón triple puede tomar valor de Literal, IRI o variable es un operador escalar de comparación ( =,, <, >,, )? es una subconsulta de la forma (?,, ). Esta forma de consulta es la mostrada en los ejemplos de es una subconsulta de la forma (, ). Esta forma de consulta retorna True o False (Verdadero o Falso) dependiendo si P (patrón de consulta) evaluado sobre el conjunto de datos F retorna elementos o no. Entonces las consultas SPARQL-C con anidamiento, por ejemplo, quedan como sigue:? < > 1? = (? ) Una consulta Q es plana si no contiene subconsultas. En el caso de contener una subconsulta Q, Q se denomina outer query mientras que Q es denominada inner query. Q solo puede aparecer en P. Entonces,? y son inner query. Cabe mencionar que los operadores presentados están basados en los existentes para el lenguaje SQL, también existen los operadores contrarios como por ejemplo NOT-IN, NOT- EXISTS. Los operadores contrarios se expresan por medio del operador de negación en SPARQL-C. Por ejemplo, FILTER ( (?X IN (Q?X ) ) ). -35-

45 2.5.2 Semántica A continuación se presenta cada uno de los operadores de subconsultas definidos para SPARQL-C. Estos operadores serán ejemplificados con los datos de la Figura 7. La prueba de membresía (IN)? - Ejemplo: Nombre de las personas que tienen al menos un correo electrónico - Consulta? (??? (??? ) ) - Resultado?Nombre Alejandro En este ejemplo la subconsulta entrega todos los triples cuya propiedad este definida, en otras palabras entrega todas las personas que tienen un . Luego por cada triple que -36-

46 define nombre con el operador IN consultamos si la URI?P existe en el conjunto entregado por la subconsulta, de ser así, el triple consultado se añade al conjunto de respuesta. Para el caso del ejemplo visto todas las personas tienen nombre pero no todas aparecen en el conjunto entregado por la subconsulta ya que de ellas la que posee la propiedad es solo Persona3 cuyo valor para la variable?nombre es Alejandro. Pruebas de cuantificación (SOME y ALL)? - Ejemplo: Las personas de mayor edad - Consulta? (?? ( (? < (??? ) ) ) ) - Resultado -37-

47 ?X Persona2 En este ejemplo la subconsulta entrega los valores de las edades definidas en los triples del grafo, en este caso corresponden a 25 y 26. Por cada triple entregado por el patrón (?X edad?edad ) se hace la pregunta si existe alguna edad mayor a la que se está evaluando, si es así se aplica el operador de negación y entonces la respuesta se invierte. Por lo tanto cuando la respuesta a la pregunta de comparación es Falso (es decir No existe valor mayor), la negación provoca que la respuesta sea Verdadero, entonces el triple correspondiente se añade al conjunto de resultados.? - Ejemplo: La persona más joven - Consulta? (??? (??? ) ) - Resultado?X Persona1-38-

48 En este ejemplo la subconsulta obtiene las edades de las personas. Por cada triple obtenido por el patrón (?X edad?edad) comparamos los valores de la columna?edad, si el valor es menor o igual a todos los valores del resultado de la subconsulta entonces el triple correspondiente es añadido al conjunto de resultados. Para este caso la subconsulta entrega los valores 25, 26. Luego 25 es menor o igual a ambos y Persona1 tiene edad 25. Existe una restricción para las subconsultas y es que para las consultas de la forma?,,, o?, la máxima cantidad de variables seleccionadas es una. Prueba de existencia (EXISTS) ( ) - Ejemplo: Nombre de personas que son conocidas por al menos una persona - Consulta? (?? (?? ) ) - Resultado?N -39-

49 Alejandro En este ejemplo la subconsulta obtiene todas las personas que conocen a alguien con la diferencia que el conjunto de resultados varía por cada triple del patrón que se está filtrando (?X nombre?n) debido a que la variable?n está correlacionada. Las personas a filtrar son Persona1, Persona2, Persona3 dado que existe un triple con propiedad nombre para cada una de estas URI. Por lo tanto al evaluar cada uno de estos valores en la subconsulta obtenemos que para Persona1 no existe un triple que satisfaga el patrón (?Y conoce Persona1), lo mismo sucede con Persona2, en cambio para Persona3 existen dos triples (Persona1 conoce Persona3) y (Persona2 conoce Persona3). -40-

50 CAPÍTULO III: DESARROLLO DE LA SOLUCIÓN 3.1 Metodología de Trabajo Para la realización de un proyecto es necesario definir una metodología de trabajo que guie su desarrollo. Para el presente proyecto se han definido cuatro etapas, cada una de ellas tiene su descripción, objetivos y resultados. (1) Investigación de Implementaciones de SPARQL En esta etapa se realizará una investigación acerca de las implementaciones existentes de SPARQL. De antemano se sabe que no existen para SPARQL-C, por lo tanto lo que se realizará será investigar acerca de implementaciones de la especificación original. Específicamente la investigación de estas implementaciones estará enfocada en verificar si estas son modificables y/o extensibles de tal manera que el desarrollo de la aplicación de este proyecto sea más rápida gracias a la reutilización de código fuente existente. El principal objetivo de realizar esta actividad es tomar una decisión con respecto a realizar la aplicación completamente o reutilizar recursos existentes en aplicaciones similares. Como objetivos secundarios tenemos (a) tener una visión de las implementaciones existentes. (b) Reconocer los principales componentes que debiera contemplar la implementación a realizar. El resultado esperado es una idea básica de la aplicación a desarrollar además de una descripción simple de los componentes que la conformarán. -41-

51 (2) Diseño de la implementación Esta actividad consistirá en idear un diseño general de la aplicación que se desarrollará. Este diseño contemplará los principales componentes que debiese incluir la aplicación, es decir se realizará un modelo de la arquitectura de la aplicación. El objetivo de esta actividad es modelar la aplicación para luego dividirla en diferentes módulos y así distribuir de mejor manera las tareas a seguir durante el proceso de desarrollo del proyecto. Prácticamente un módulo implicará un objetivo en específico dentro del desarrollo de esta aplicación. Por lo tanto, cada componente definirá un hito a cumplir. Como resultado obtendremos un modelo general de la aplicación el cuál será mejorado a medida que se avance en la investigación del contexto del problema. Este modelo incluye diagrama de componentes de la aplicación, vale decir modelar el comportamiento de la aplicación, interfaces, entradas y salidas, dependencias, etc. En las entradas de aplicación están las consultas del usuario y los grafos de datos, mientras que las salidas son los resultados de consultas en modo gráfico, es decir, lista de resultados encontrados. (3) Desarrollo de la aplicación Esta actividad contemplará implementar la aplicación. La programación se realizará según la arquitectura, esto significa ir implementando de uno en uno los diferentes componentes. La arquitectura de la aplicación podría variar levemente acorde se vaya desarrollando. El objetivo de la actividad corresponde al producto final, es decir obtener la implementación del programa, que no queda ajeno de futuras modificaciones. Cada módulo a implementar significará un hito en el avance de la implementación. El producto final es el que se obtendrá una vez desarrollados y unidos cada uno de los módulos o componentes de la arquitectura del sistema. Entonces, el producto final corresponde a la implementación del lenguaje de consulta. -42-

52 (4) Evaluación de la implementación Esta actividad pretende evaluar la aplicación desarrollada. Esta incluye investigar, definir y ejecutar casos de prueba. Los casos de prueba iniciales serán una adaptación de los ya definidos para la especificación original de SPARQL. Como actividad adicional se definirá casos de prueba para las consultas anidadas. Luego de realizar la evaluación eventualmente podría incluirse correcciones o mejoras. El objetivo es validar la implementación. La evaluación indicará si la implementación cumple, y en qué medida, con los requerimientos que se derivan de la sintaxis y semántica del lenguaje SPARQL-C. Como resultado se obtendrá un reporte de la aplicación de los casos de prueba en la aplicación. -43-

53 3.2 Trabajo relacionado Búsqueda de implementaciones existentes de lenguaje de consulta SPARQL Implementaciones de SPARQL-C no existen por lo tanto lo realizado fue buscar implementaciones de la especificación original. Las aplicaciones que buscamos son del tipo Cliente SPARQL y Motores de Consulta. Buscamos Clientes SPARQL para estudiar sus funcionalidades y ver la forma en la que el usuario interactúa con ellas. Los Motores de Consulta los buscamos para ver su estructura interna y ver posible reutilización de funcionalidades en el caso que sea posible. En la siguiente tabla se lista algunas de las implementaciones de características más relevantes relacionadas con el proyecto: Tabla 8 Implementaciones SPARQL Nombre de la Descripción aplicación OpenLink Virtuoso s Cliente Web en el cuál podemos ejecutar Web based SPARQL variados tipos de consulta SPARQL. Su Client desventaja es que debemos ir a su página Cliente Windows para SPARQL, una de sus principales características es que nos permite conectarnos a Motores SPARQL Sesame Windows que se encuentran en la Web (SPARQL Client EndPoint) y ejecutar consultas en ellos sin necesidad de ir a la página Web del Motor SPARQL Remoto. Traductor SPARQL, distribuido en el paquete de software Jena. Posee una ARQ Gramática para JavaCC. Programado en el lenguaje de programación Java. Interfaz Windows para el motor de consultas ARQ SPARQL. Sencillo y fácil Twinkle de usar. Las consultas son ejecutadas localmente en el equipo del usuario. Referencia m/sparql_demo/ cts/sesamewinclient ARQ/ jects/twinkle/ -44-

54 De las implementaciones encontradas destaca principalmente Twinkle 4 que es una interfaz gráfica de usuario (en inglés GUI) que usa internamente el motor de consulta SPARQL ARQ que está incluido en la distribución Jena 5 [23]. Jena también provee funcionalidades que permiten procesar archivos RDF y otras características. Figura 15 Interfaz Twinkle Luego de investigar acerca de Jena la decisión sobre cómo implementar SPARQL-C fue hacer un complemento de algunas funcionalidades que provee Jena principalmente para el procesamiento de los archivos RDF. Esta decisión se basa en que el problema principal no es implementar un traductor RDF sino un motor de consultas SPARQL-C y además los operadores que se necesita implementar tienen su propia semántica definida en [3]. 4 Para mayor información acerca de Twinkle visite 5 Para mayor información acerca de Jena visite

55 3.3 Diseño Para ejecutar una consulta SPARQL necesitamos un procesador de consultas que interprete dicha consulta, valide y entregue una respuesta que sea el resultado de un conjunto de pasos aplicados a esta. A la serie de pasos para resolver una consulta SPARQL le llamaremos Modelo de ejecución. El modelo representa la solución al problema de resolver la consulta, y los pasos del modelo corresponden a componentes que resolverán un problema en particular y estos a su vez en procedimientos que realicen tareas sobre datos en particular. Sea la siguiente consulta SPARQL:?,?????? 25 Modelo de ejecución: La ejecución de una consulta SPARQL consta de los siguientes pasos: Validación Analisis sintáctico (generar árbol sintáctico) Carga de datos Lectura de fuente de datos (archivos RDF) Interpretar y generar modelo RDF Ejecución Procesar árbol sintáctico + Modelo RDF Generar respuesta de consulta Figura 16 Pasos de ejecución de consulta -46-

56 El modelo anterior lo podemos interpretar como una máquina que hace un proceso en línea tal que todo paso tiene un orden estricto. En nuestro modelo de ejecución el primer paso es la Validación donde verificaremos que la entrada dada al sistema cumpla con un formato correcto (por ejemplo que después de una palabra SELECT siga una variable que comience con?, como en nuestro ejemplo SELECT?N..). Desde el paso de Validación obtenemos como resultado el modelo representativo de la consulta. Una vez terminada la validación procedemos con el paso de Carga de datos. En la carga de datos se genera un modelo representativo del archivo RDF indicado como fuente en la consulta (para el ejemplo mostrado nuestra fuente de datos es aquella referenciada por G, la que podría ser por ejemplo en donde me.rdf correspondería al archivo RDF). Los datos que se obtienen de la fuente de datos son modelados y formateados para que sean usados en el paso siguiente de nuestro modelo, Ejecución. En el paso de Ejecución recorremos el modelo representativo de la consulta y cada vez que se encuentre un operador se aplica sobre la fuente de datos que se asignó como entrada (para el ejemplo hay que aplicar una condición de filtro, iniciada con la palabra FILTER, que considere los valores de la variable A que excedan el valor numérico 25). Finalmente una vez finalizado el recorrido por el modelo de la consulta se genera una respuesta al usuario. Para entender con más detalle el modelo a continuación se explicará cada uno de los componentes encargados de implementar los pasos definidos por el Modelo de ejecución. La aplicación se dividió en tres grandes paquetes correspondientes a cada uno de los pasos: RDF Parser (o traductor), Sparql Parser y Sparql Engine (o motor). -47-

57 Figura 17 Arquitectura de la aplicación. JENA es un paquete externo importado y que contiene funcionalidades para lectura de archivos RDF. Mientras que Jdk 1.6 contiene los paquetes base de la programación en Java. Dentro del paquete App vemos GUI el que es desplegado al usuario para su interacción. Controlador recibe la consulta se la entrega al SPARQL Parser para que genere un el árbol sintáctico e indique los origene de datos que deberá cargar el RDF Parser. Finalmente SPARQL Engine es invocado con el árbol sintáctico y los orígenes de datos, el SPARQL Engine procesa y retornara el resultado para que sea desplegado por el componente de interfaz de usuario (GUI). En la Figura 17 podemos observar la interacción de los principales componentes. Para entender mejor el modelo se explican detalles a continuación: SPARQL Parser: Es el componente que codifica la sintaxis de las consultas SPARQL. Este permite la validación de las consultas y genera un árbol sintáctico. El Traductor SPARQL se divide en el Analizador Léxico, que se encarga de reconocer los -48-

58 componentes léxicos del lenguaje (tokens), y en el Analizador Sintáctico, que se encarga de verificar la estructura y orden de los tokens. Es el componente que implementa el paso de Validación del modelo de ejecución. La salida del Traductor SPARQL es un árbol sintáctico el que será posteriormente una de las entradas para el SPARQL Engine. RDF Parser: Es el encargado de procesar los archivos RDF y transformarlos en Datasets (objetos que representan uno o más grafos en memoria del computador). Es decir, recibe un archivo, lo interpreta y retorna una colección de datos RDF. Este componente es el que implementa el paso de Carga de datos del modelo de ejecución SPARQL Engine: Es el encargado de procesar el árbol de parsing (árbol sintáctico) junto al Dataset y retornar los resultados de la consulta. Es decir, implementa el paso Ejecución de nuestro modelo. Controlador: Es la clase que contiene los métodos necesarios para el funcionamiento de la aplicación. Desde aquí se realizan las llamadas a los distintos componentes para ejecutar diferentes tareas. Específicamente, es la clase encargada de recibir el string de consulta SPARQL, y devolver los resultados de la consulta a la interfaz gráfica. Interfaz (GUI): Consiste en el medio por el cual el usuario se comunica con la aplicación. En ella se puede ingresar la consulta a procesar y se especifica el origen de los datos. Jdk 1.6: Framework del lenguaje Java que contiene los elementos necesarios para la programación en el lenguaje. Jena: Framework externo de la aplicación, usado para la lectura e interpretación de los archivos RDF. -49-

59 La arquitectura de datos Para realizar un diseño representativo de RDF lo primero necesario es entender los conceptos básicos de la arquitectura de datos ya que toda la aplicación debe trabajar con ellos. A continuación se presenta dicha arquitectura. SPARQL y RDF definen una arquitectura para la representación de sus elementos [2]. Existen ciertos conceptos que hay que definir para luego realizar el diseño de estos para su uso interno en la aplicación. A continuación se describe algunos conceptos que serán útiles para entender mejor el diseño: Triple: Está compuesto por <Sujeto, Predicado, Objeto>. Graph: Es un grafo RDF. Un grafo es aquel que contiene un conjunto de triples RDF. Dataset: Es un conjunto de grafos cada uno de ellos identificados por una URI. En un dataset existe el grafo por defecto que es aquel que no tiene URI que lo identifique. Un dataset podría no contener named graphs, es decir que podría tener solamente el grafo por defecto. Mapping: Es un conjunto de elementos del tipo <identificador, valor>. Cada identificador tiene un valor determinado para el conjunto. Por ejemplo <edad, 10>, <nombre, Jorge >, etc. El mismo identificador no puede contener más de un valor y los identificadores no deben repetirse. ResultSet: Es una lista de mappings. Esta lista es el resultado de aplicar un operador a un listado de triples RDF o sobre otro ResultSet. Condition: Representa una restricción de filtro que se aplicará a los mappings de un ResultSet. Por ejemplo cuando indicamos FILTER?edad >

60 La Figura 18 presenta el diagrama de clases que representará los elementos principales de la arquitectura RDF-SPARQL. Figura 18 Diagrama de clases para la arquitectura RDF-SPARQL. En este diagrama el componente Dataset contiene Grafos representados por Graph mientras que este último contiene un conjunto de Triples y a su vez un Triple contiene tres elementos Rterm que son los que representan datos como nombres, edades, etc. Para efectos de implementación se define Sterm que puede ser Var o Rterm, estos representan una variable (?nombrevariable usadas en SPARQL) y un término RDF, respectivamente, el último puede tomar valores como Juan (literal sin tipo), 20 ^^xsd:integer (literal con tipo), entre otros. Sabemos que un triple puede contener tres elementos que corresponden a los elementos sujeto, predicado y objeto del tipo Sterm, que para efectos del modelo RDF sólo corresponden a elementos del tipo Rterm. -51-

61 Traductor SPARQL (Módulo Parser) Para realizar la traducción de consultas SPARQL lo necesario es modelar los elementos del árbol sintáctico que será generado por este componente de la aplicación. A continuación se presenta el diagrama de clases que representará los elementos del árbol sintáctico: Figura 19 Diagrama de Clases del Árbol Sintáctico de Consulta. Este diagrama representa la jerarquía utilizada para representar patrones de grafo SPARQL como (P1 AND P2) donde AND corresponde a un elementos del tipo ANDPattern. El concepto Pattern o patrón de grafo lo vemos representado en la Figura 19, un patrón de grafo está representado por cada una de las componentes de dicha figura, por ejemplo el elemento ANDPattern representa el operador AND que recibe dos entradas, p1 y p2, que corresponden a otros dos patrones de grafo que a su vez pueden ser un ANDPattern, un TriplePattern u otro. Todos incluyen el procedimiento exec(g) que significa que usan un Grafo RDF sobre el cual operar para posteriormente generar una respuesta de tipo ResultSet. En la Figura 20 es prácticamente análogo al concepto Condition que agrupa tres -52-

62 tipos, el NotCondition (negación de un elemento Condition), SimpleCondition (por ejemplo FILTER isliteral(?x) y ComplexCondition que aplica operadores lógicos y y o (por ejemplo FILTER isliteral(?x) && bound(?x) ) El concepto Condition es usado en el elemento FILTERPattern de la Figura 19. El modelo del concepto Condition lo observamos en la Figura 20 Figura 20 Diagrama de clases para restricciones. Dada la gran variedad de formas de restringir un patrón de grafo (o en ejecución diríamos un ResultSet, que representa el conjunto de resultados) se hace necesario hacer un diagrama que representa todos los tipos de restricción. NotCondition representa la negación de una condición ( C ), EXISTS representa el operador EXISTS que se aplica a un conjunto de resultados utilizando subconsultas. isiri representa la función que evalúa si un valor es del tipo IRI, es decir representa una dirección como Para implementar el analizador sintáctico usamos JavaCC [13]. Se implementó la gramática definida para SPARQL-C [3] para darle a JavaCC ésta como entrada para que nos entregue nuestro analizador que trabaja con el modelo de la Figura

63 Engine SPARQL (motor) El Engine SPARQL contiene las clases que implementan las operaciones sobre los triples de los grafos y también entre ResultSets. En la Figura 21 se presenta el diseño de las clases encargadas de ejecutar las operaciones del álgebra del lenguaje. Figura 21 Diagrama de clases para Operators Ejemplo para el Modelo de Ejecución A continuación se presenta como funciona la ejecución de una consulta usando los modelos presentados en los diagramas de clases vistos hasta aquí: Sea la siguiente consulta SPARQL:?,? -54-

64 ????? 25 Para esta consulta se genera el siguiente árbol sintáctico, donde cada uno de los nodos del árbol recibe un Grafo RDF (del tipo Graph). Posteriormente cada uno de ellos espera el retorno de datos de los nodos de nivel inferior. El retorno de datos es un conjunto de mappings, es decir un ResultSet. La ejecución se realiza con la llamada a la función exec de cada nodo de tipo Pattern y este realiza la ejecución con los datos recibidos, que para este caso está representado por G en la Figura 22. Figura 22 Modelo de Ejecucion de una Consulta. Para este ejemplo G corresponde a un Grafo RDF que ingresa en el primer nodo (o nodo raiz Pattern), mientras que R corresponde a la respuesta de a ejecución del árbol sintáctico. G podemos decir que va bajando por cada nodo y R se va generando a medida que complete su ejecución el nodo respectivo. En el caso de los nodos Operator por ejemplo, este funciona por cada Mapping de G y va entregando una respuesta si el valor para la variable?a del mapping cumple o no el operador asignado, en este caso?a > 25. Los nodos del tipo Pattern (tales como ANDPattern, TriplePattern) en la función exec(graph) realizan la llamada a un operador asociado que está en el paquete Operators del módulo SPARQL Engine. En el caso de ANDPattern el paquete Operators contiene la clase AND que aplica la semántica del operador sobre el conjunto de datos y la llamada se -55-

65 realiza a la función exec(resultset, ResultSet), en el resto de las clases de tipo Pattern es análogo. En el caso de TriplePattern llama a su operador asociado directamente con el Grafo G, mientras que los operadores de nivel intermedio como AND, UNION, MINUS, trabajan con ResultSets que vienen del retorno de sus nodos hijos. Los operadores que se aplican en las restricciones del tipo? > 25 trabajan con un Mapping a la vez. Es decir que el nodo padre FILTERCondition hace N llamadas a la función eval(mapping) del operador Operator y este responde un número que indica si hubo error, si la evaluación arrojo un valor Verdadero o si arrojo Falso. Por ejemplo el operador que evalúa?a > 25 recibe un Mapping cuyo valor para la variable?a contiene José, la evaluación de este ejemplo retornará un número que indicará al objeto FILTERCondition que ese mapping no cumple con la restricción y que no debe ser añadido al conjunto de respuesta R y asi sucesivamente por cada uno de los mappings del conjunto que se está evaluando que en este caso corresponde al ResultSet obtenido como respuesta del nodo TriplePattern. 3.4 Implementación y evaluación del Prototipo La última actividad de la metodología usada corresponde a la implementación y evaluación de la aplicación. Los pasos de la última actividad implican la programación de la aplicación, definición de casos de prueba y su aplicación, y finalmente la obtención de un resumen de resultados obtenidos Implementación del prototipo El desarrollo de la aplicación se realiza en el lenguaje de programación Java en el Entorno de desarrollo Netbeans 6. Mediante esta herramienta se realizó la interfaz de la aplicación que pasamos a describir a continuación. 6 Entorno de desarrollo de aplicaciones (IDE) en múltiples lenguajes

66 En la Figura 23 tenemos la interface por la cual el usuario interactúa con la aplicación. Esta incluye varias funcionalidades. Para una mejor descripción de la interface, esta ha sido dividida en varias regiones, cada una de ellas tiene un número que la identifique. Figura 23 Interface SPARQL-C Las secciones de la interface son las siguientes: (1) Grafos RDF: Representará gráficamente cada una de las fuentes de datos. Si observamos podemos ver que en el título del componente está escrito el identificador G0. En este componente gráfico o TabPage se cargan los triples de los grafos por defecto de SPARQL-C. Cada TabPage contendrá una tabla en donde cada fila representa un triple RDF. En este sector de la interface podrá haber varios TabPage que representarán los Named Graph de las consultas SPARQL-C. (2) Consulta del usuario: Región de la interface donde el usuario puede escribir su consulta SPARQL-C. (3) Depuración de la consulta: Está dedicada para usuarios avanzados o con nociones en lenguajes de programación ya que en ella se desplegará el árbol sintáctico que -57-

67 represente la consulta expresada por el usuario, asi como también posibles mensajes de error avanzados, por ejemplo errores sintácticos. (4) Resultados la consulta: En este sector se despliega los resultados de una consulta SPARQL-C. Cada columna representa una variable solicitada en la consulta o en su defecto hay una sola donde la interface representa un mensaje True o False en el caso de la forma de consulta ASK. (5) Botones y funcionalidades: Figura 24 Botones y otras funcionalidades A continuación describiremos la figura anterior: i) Select source from File: Es un botón que permite al usuario obtener la representación en triples de un archivo RDF. Al presionar este botón podemos elegir un archivo cualquiera que cumpla con el formato RDF/XML y la aplicación lo cargará en G0 para observar sus triples. ii) Load query from File: Si tenemos un archivo de texto podemos cargarlo mediante esta funcionalidad que nos desplegará un formulario donde elegir dicha fuente. iii) Load Graph: Este botón hace similar funcionalidad que el anterior a diferencia que escribimos una URL en el campo de texto URL. iv) Validate Sintax: Al presionar este botón la aplicación responde con un OK o un ERROR dependiendo de la validez de la sintaxis de la consulta escrita en la región

68 v) RUN QUERY: Por medio de este botón invocamos al Query Engine (o motor de consultas) de SPARQL-C. En otras palabras, ejecutamos la consulta. vi) Graph Prefixes: Cada vez que se carga un Named Graph durante la ejecución de una consulta SPARQL-C, este listado va creciendo incorporando las representaciones de cada uno de los grafos RDF consultados. vii) Namespaces: El componente va listando urls relevantes que podrían ser usadas como prefijos (URL que acompañan a la palabra clave PREFIX de SPARQL-C) en las consultas Evaluación del prototipo Para realizar la evaluación se usa los casos de prueba definidos para la versión de SPARQL definida por la W3C (Test Cases) [27], se selecciona los que aplican a la versión SPARQL- C y luego estos últimos son adaptados a la sintaxis de esta última especificación. Existen dos tipos de casos de prueba (test), los primeros son los que evalúan si la aplicación valida la sintaxis del lenguaje (Sintax Test) y los otros los que validan la semántica (Evaluation Test). Por ejemplo para la especificación original existe el siguiente test de sintaxis: syntax-basic-05.rq Syntax test Approved by Query data-r2/syntax-sparql1/syntax-basic-05.rq -59-

69 ?x?y?z.?a?b?c La consulta se reescribe para SPARQL-C como ( (?x?y?z) AND (?a?b?c) ) Escribimos la consulta en la aplicación y luego validamos con el botón Validate Syntax. Es decir que podemos evaluar si está bien escrita la consulta sin necesidad de cargar las fuentes de datos a donde se realizará la consulta. Para evaluar una consulta una fuente de datos, esta se escribe y luego se acciona el botón Run Query A continuación una consulta de ejemplo: ASK FROM < -60-

70 (:x :p 1 ) Luego de evaluar la aplicación es posible indicar que de noventa y tres pruebas de sintaxis, la aplicación aprobó la totalidad. Para el caso de las evaluaciones de las pruebas de sintaxis de las subconsultas lo realizado fue diseñar diez, de las cuales fueron aprobadas el cien por ciento. Estas pruebas abarcan la sintaxis del operador en cuestión y no evalúan detalles como comas, puntos y otras características que fueron evaluadas en las pruebas anteriores. De ciento cinco pruebas de evaluación de consulta la cantidad aprobada corresponde a ciento tres y reprueba dos. Para aprobar la mayoría de las pruebas se realizó algunas modificaciones a medida que se iba realizando las pruebas. En el caso de las comparaciones numéricas, el valor 1.0 ^^xsd:double siempre era diferente a 1 ^^xsd:integer pero las pruebas indicaban que debe evaluarse como si fuesen el mismo valor. Esto se dio en pruebas que contienen el operador FILTER como FILTER?v1 =?v2. De los test no aprobados el primero de ellos corresponden a normalización. Por ejemplo cuando escribimos %20 en una URI significa que va un espacio (el test corresponde a -61-

Figura 4.1 Clasificación de los lenguajes de bases de datos

Figura 4.1 Clasificación de los lenguajes de bases de datos 1 Colección de Tesis Digitales Universidad de las Américas Puebla Romero Martínez, Modesto Este capítulo describen los distintos lenguajes para bases de datos, la forma en que se puede escribir un lenguaje

Más detalles

Introducción. Ciclo de vida de los Sistemas de Información. Diseño Conceptual

Introducción. Ciclo de vida de los Sistemas de Información. Diseño Conceptual Introducción Algunas de las personas que trabajan con SGBD relacionales parecen preguntarse porqué deberían preocuparse del diseño de las bases de datos que utilizan. Después de todo, la mayoría de los

Más detalles

MATERIAL 2 EXCEL 2007

MATERIAL 2 EXCEL 2007 INTRODUCCIÓN A EXCEL 2007 MATERIAL 2 EXCEL 2007 Excel 2007 es una planilla de cálculo, un programa que permite manejar datos de diferente tipo, realizar cálculos, hacer gráficos y tablas; una herramienta

Más detalles

BASE DE DATOS RELACIONALES

BASE DE DATOS RELACIONALES BASE DE DATOS RELACIONALES Una base de datos relacional es una base de datos que cumple con el modelo relacional, el cual es el modelo más utilizado en la actualidad para implementar bases de datos ya

Más detalles

5- Uso de sentencias avanzadas

5- Uso de sentencias avanzadas Objetivos: 5- Uso de sentencias avanzadas Elaborar sentencias de manejo de datos. Recursos: Microsoft SQL Server Management Studio Guías prácticas. Introducción: Después de trabajar con las sentencias

Más detalles

1. DML. Las subconsultas

1. DML. Las subconsultas 1.1 Introducción 1. DML. Las subconsultas Una subconsulta es una consulta que aparece dentro de otra consulta o subconsulta en la lista de selección, en la cláusula WHERE o HAVING, originalmente no se

Más detalles

CONSULTAS CON SQL. 3. Hacer clic sobre el botón Nuevo de la ventana de la base de datos. Aparecerá el siguiente cuadro de diálogo.

CONSULTAS CON SQL. 3. Hacer clic sobre el botón Nuevo de la ventana de la base de datos. Aparecerá el siguiente cuadro de diálogo. CONSULTAS CON SQL 1. Qué es SQL? Debido a la diversidad de lenguajes y de bases de datos existentes, la manera de comunicar entre unos y otras sería realmente complicada a gestionar de no ser por la existencia

Más detalles

Correspondencias entre taxonomías XBRL y ontologías en OWL Unai Aguilera, Joseba Abaitua Universidad de Deusto, EmergiaTech

Correspondencias entre taxonomías XBRL y ontologías en OWL Unai Aguilera, Joseba Abaitua Universidad de Deusto, EmergiaTech Correspondencias entre taxonomías XBRL y ontologías en OWL Unai Aguilera, Joseba Abaitua Universidad de Deusto, EmergiaTech Resumen Todo documento XBRL contiene cierta información semántica que se representa

Más detalles

CONSULTAS MULTITABLAS SQL SERVER 2005. Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

CONSULTAS MULTITABLAS SQL SERVER 2005. Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE CONSULTAS MULTITABLAS SQL SERVER 2005 Manual de Referencia para usuarios Salomón Ccance CCANCE WEBSITE CONSULTAS MULTITABLAS Hasta ahora hemos visto consultas que obtienen los datos de una sola tabla,

Más detalles

TEMA 3 PROFESOR: M.C. ALEJANDRO GUTIÉRREZ DÍAZ 2 3. PROCESAMIENTO DE CONSULTAS DISTRIBUIDAS

TEMA 3 PROFESOR: M.C. ALEJANDRO GUTIÉRREZ DÍAZ 2 3. PROCESAMIENTO DE CONSULTAS DISTRIBUIDAS 1 1 BASES DE DATOS DISTRIBUIDAS TEMA 3 PROFESOR: M.C. ALEJANDRO GUTIÉRREZ DÍAZ 2 3. PROCESAMIENTO DE CONSULTAS DISTRIBUIDAS 3.1 Metodología del procesamiento de consultas distribuidas 3.2 Estrategias de

Más detalles

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL OBJETIVO Mejorar el nivel de comprensión y el manejo de las destrezas del estudiante para utilizar formulas en Microsoft Excel 2010. 1) DEFINICIÓN Una fórmula de Excel es un código especial que introducimos

Más detalles

Base de datos relacional

Base de datos relacional Base de datos relacional Una base de datos relacional es una base de datos que cumple con el modelo relacional, el cual es el modelo más utilizado en la actualidad para modelar problemas reales y administrar

Más detalles

Informática I Notas del curso

Informática I Notas del curso EXCEL Objetivo: Identificar la funcionalidad general de Excel, sus herramientas y recursos Excel Objetivo Particular: Conocer los métodos básicos de trabajo de Excel, para el manejo de registros, datos

Más detalles

Actividades para mejoras. Actividades donde se evalúa constantemente todo el proceso del proyecto para evitar errores y eficientar los procesos.

Actividades para mejoras. Actividades donde se evalúa constantemente todo el proceso del proyecto para evitar errores y eficientar los procesos. Apéndice C. Glosario A Actividades de coordinación entre grupos. Son dinámicas y canales de comunicación cuyo objetivo es facilitar el trabajo entre los distintos equipos del proyecto. Actividades integradas

Más detalles

Elementos requeridos para crearlos (ejemplo: el compilador)

Elementos requeridos para crearlos (ejemplo: el compilador) Generalidades A lo largo del ciclo de vida del proceso de software, los productos de software evolucionan. Desde la concepción del producto y la captura de requisitos inicial hasta la puesta en producción

Más detalles

Diagramas del UML. A continuación se describirán los diagramas más comunes del UML y los conceptos que representan: Diagrama de Clases

Diagramas del UML. A continuación se describirán los diagramas más comunes del UML y los conceptos que representan: Diagrama de Clases El UML está compuesto por diversos elementos gráficos que se combinan para conformar diagramas. Debido a que el UML es un lenguaje, cuenta con reglas para combinar tales elementos. La finalidad de los

Más detalles

Modulo 1 El lenguaje Java

Modulo 1 El lenguaje Java Modulo 1 El lenguaje Java 13 - Codificación en Java Una de las grandes diferencias entre Java y Pascal en cuando a la codificación es que Java se trata de un lenguaje de los llamados case sensitive Esto

Más detalles

La ventana de Microsoft Excel

La ventana de Microsoft Excel Actividad N 1 Conceptos básicos de Planilla de Cálculo La ventana del Microsoft Excel y sus partes. Movimiento del cursor. Tipos de datos. Metodología de trabajo con planillas. La ventana de Microsoft

Más detalles

LAS SUBCONSULTAS SQL SERVER 2005. Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

LAS SUBCONSULTAS SQL SERVER 2005. Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE LAS SUBCONSULTAS SQL SERVER 2005 Manual de Referencia para usuarios Salomón Ccance CCANCE WEBSITE LAS SUBCONSULTAS Una subconsulta es una consulta que aparece dentro de otra consulta o subconsultas, en

Más detalles

Operación de Microsoft Excel. Guía del Usuario Página 79. Centro de Capacitación en Informática

Operación de Microsoft Excel. Guía del Usuario Página 79. Centro de Capacitación en Informática Manejo básico de base de datos Unas de las capacidades de Excel es la de trabajar con listas o tablas de información: nombres, direcciones, teléfonos, etc. Excel puede trabajar con tablas de información

Más detalles

Diagramas de Clases ~ 1 ~ Ing. Fabián Silva Alvarado

Diagramas de Clases ~ 1 ~ Ing. Fabián Silva Alvarado Diagramas de Clases ~ 1 ~ Ing. Fabián Silva Alvarado DIAGRAMAS DE CLASES RELACIONES ENTRE CLASES Una vez que tengamos todas nuestras clases, será necesario que estas se asocien, con el fin de mostrar la

Más detalles

Centro de Capacitación en Informática

Centro de Capacitación en Informática Fórmulas y Funciones Las fórmulas constituyen el núcleo de cualquier hoja de cálculo, y por tanto de Excel. Mediante fórmulas, se llevan a cabo todos los cálculos que se necesitan en una hoja de cálculo.

Más detalles

Introducción a Visual Studio.Net

Introducción a Visual Studio.Net Introducción a Visual Studio.Net Visual Studio es un conjunto completo de herramientas de desarrollo para la generación de aplicaciones Web ASP.NET, Servicios Web XML, aplicaciones de escritorio y aplicaciones

Más detalles

Operaciones en el Modelo Relacional. Relacional. Relacional. Índice. Lenguajes de Consulta

Operaciones en el Modelo Relacional. Relacional. Relacional. Índice. Lenguajes de Consulta Operaciones en el Modelo Relacional Bases de Datos Ingeniería a Técnica T en Informática de Sistemas El interés de los usuarios de las bases de datos se suele centrar en realizar consultas (contestar a

Más detalles

CASO PRÁCTICO DISTRIBUCIÓN DE COSTES

CASO PRÁCTICO DISTRIBUCIÓN DE COSTES CASO PRÁCTICO DISTRIBUCIÓN DE COSTES Nuestra empresa tiene centros de distribución en tres ciudades europeas: Zaragoza, Milán y Burdeos. Hemos solicitado a los responsables de cada uno de los centros que

Más detalles

Estructuras de Datos y Algoritmos. Árboles de Expresión

Estructuras de Datos y Algoritmos. Árboles de Expresión Estructuras de Datos y Algoritmos Árboles de Expresión Año 2014 Introducción Los avances tecnológicos producen día a día una gran cantidad de información que debe ser almacenada y procesada en forma eficiente.

Más detalles

Operación Microsoft Access 97

Operación Microsoft Access 97 Utilizar expresiones y criterios Trabajar con expresiones Las expresiones son un componente fundamental de numerosas operaciones en Access. Una expresión es una combinación de símbolos (identificadores,

Más detalles

Los números racionales

Los números racionales Los números racionales Los números racionales Los números fraccionarios o fracciones permiten representar aquellas situaciones en las que se obtiene o se debe una parte de un objeto. Todas las fracciones

Más detalles

VAST: Manual de usuario. Autores: Francisco J. Almeida-Martínez Jaime Urquiza-Fuentes

VAST: Manual de usuario. Autores: Francisco J. Almeida-Martínez Jaime Urquiza-Fuentes VAST: Manual de usuario Autores: Francisco J. Almeida-Martínez Jaime Urquiza-Fuentes Índice general Índice general 2 1. Introducción 4 2. Representación intermedia del AST 5 2.1. Funcionamiento del VAST

Más detalles

Ejercicio Nº 3: Realizar aumentos en una Tabla de Sueldos

Ejercicio Nº 3: Realizar aumentos en una Tabla de Sueldos SESION5: BASE DE DATOS PLANILLAS Ejercicio Nº : Realizar aumentos en una Tabla de Sueldos Veamos pues. En la hoja de calculo se tiene la Tabla de Sueldos de varios empleados (aquí ahora vemos solo empleados,

Más detalles

Manual de Usuario SIGECOF MANUAL DE USUARIO SIGECOF DISTRIBUCIÓN INTERNA DE CUOTA DE COMPROMISO

Manual de Usuario SIGECOF MANUAL DE USUARIO SIGECOF DISTRIBUCIÓN INTERNA DE CUOTA DE COMPROMISO Manual de Usuario SIGECOF APROBADO POR: JEFA DE LA ONCOP Punto: DGAT-001/2013 De Fecha: 31/01/2013 CONTROL DE REVISIONES Y ACTUALIZACIONES Nº de Versión Fecha de Aprobación y/o Actualización Punto de Cuenta

Más detalles

Sistema de Mensajería Empresarial para generación Masiva de DTE

Sistema de Mensajería Empresarial para generación Masiva de DTE Sistema de Mensajería Empresarial para generación Masiva de DTE TIPO DE DOCUMENTO: OFERTA TÉCNICA Y COMERCIAL VERSIÓN 1.0, 7 de Mayo de 2008 CONTENIDO 1 INTRODUCCIÓN 4 2 DESCRIPCIÓN DE ARQUITECTURA DE

Más detalles

Definición de XQuery.

Definición de XQuery. Definición de XQuery. Podemos definir XQuery con un símil en el que XQuery es a XML lo mismo que SQL es a las bases de datos relacionales. XQuery es un lenguaje de consulta diseñado para escribir consultas

Más detalles

GESTION DE REQUISICIONES VIA WEB MANUAL DEL USUARIO

GESTION DE REQUISICIONES VIA WEB MANUAL DEL USUARIO GESTION DE REQUISICIONES VIA WEB MANUAL DEL USUARIO UNIDAD DE SISTEMAS DE INFORMACION Y COMPUTO DEPARTAMENTO DE ADQUISICIONES INDICE Tema Página Objetivo 2 Portal del Departamento de Adquisiciones 3 Sección

Más detalles

Consultas con combinaciones

Consultas con combinaciones UNIDAD 1.- PARTE 2 MANIPULACIÓN AVANZADA DE DATOS CON SQL. BASES DE DATOS PARA APLICACIONES Xochitl Clemente Parra Armando Méndez Morales Consultas con combinaciones Usando combinaciones (joins), se pueden

Más detalles

Tabla de contenido. Manual B1 Time Task

Tabla de contenido. Manual B1 Time Task Tabla de contenido Introducción... 2 Configuración... 2 Prerrequisitos... 2 Configuración de la tarea... 2 Configurando las horas estándar de trabajo... 3 Datos maestros de empleados... 4 Utilización...

Más detalles

UML, ejemplo sencillo sobre Modelado de un Proyecto

UML, ejemplo sencillo sobre Modelado de un Proyecto UML, ejemplo sencillo sobre Modelado de un Proyecto Normal &DOLILFDU 0L3DQRUDPD 626 (VFULEHSDUD1RVRWURV Por Armando Canchala Contenido Introducción Objetivo Requerimientos Casos de Uso Subcasos de Uso

Más detalles

OPERADORES LÓGICOS Y DE COMPARACIÓN EN PHP. PRIORIDADES. EJEMPLOS. EJERCICIOS RESUELTOS. (CU00818B)

OPERADORES LÓGICOS Y DE COMPARACIÓN EN PHP. PRIORIDADES. EJEMPLOS. EJERCICIOS RESUELTOS. (CU00818B) APRENDERAPROGRAMAR.COM OPERADORES LÓGICOS Y DE COMPARACIÓN EN PHP. PRIORIDADES. EJEMPLOS. EJERCICIOS RESUELTOS. (CU00818B) Sección: Cursos Categoría: Tutorial básico del programador web: PHP desde cero

Más detalles

BASES DE DATOS TEMA 3 MODELO ENTIDAD - RELACIÓN

BASES DE DATOS TEMA 3 MODELO ENTIDAD - RELACIÓN BASES DE DATOS TEMA 3 MODELO ENTIDAD - RELACIÓN 3.3 Aplicaciones Definición de Aplicación (Application). Programa informático que permite a un usuario utilizar una computadora con un fin específico. Las

Más detalles

COPPEL MANUAL TÉCNICO MCC DE SISTEMAS PROGRAMACIÓN DESCRIPCIÓN DEL PROCESO DE ARQUITECTURA DE SOFTWARE

COPPEL MANUAL TÉCNICO MCC DE SISTEMAS PROGRAMACIÓN DESCRIPCIÓN DEL PROCESO DE ARQUITECTURA DE SOFTWARE COPPEL MANUAL TÉCNICO MCC DE SISTEMAS PROGRAMACIÓN DESCRIPCIÓN DEL PROCESO DE ARQUITECTURA DE SOFTWARE Creado en May/14 Objetivo: Contar con una guía de las actividades que se deben realizar en esta fase,

Más detalles

1.2 Qué es un Sistemas de Información Geográfica?

1.2 Qué es un Sistemas de Información Geográfica? 1.1 Introducción En los últimos años, se ha desarrollado software especializado que permite el manejo de cartografía por computadora, favoreciendo a diferentes áreas, en el proceso de toma de decisiones.

Más detalles

Instituto Tecnológico de Costa Rica

Instituto Tecnológico de Costa Rica Instituto Tecnológico de Costa Rica Escuela de Ingeniería en Computación Proyecto Programado: Revisión de Utilización Médica: Aplicación Web para el control de pacientes en hospitales de Puerto Rico Práctica

Más detalles

Construcción de Escenarios

Construcción de Escenarios Construcción de Escenarios Consiste en observar los diferentes resultados de un modelo, cuando se introducen diferentes valores en las variables de entrada. Por ejemplo: Ventas, crecimiento de ventas,

Más detalles

TEMA 3: EN QUÉ CONSISTE?

TEMA 3: EN QUÉ CONSISTE? Módulo 7 Sesión 3 5/16 TEMA 3: EN QUÉ CONSISTE? La metodología seguida para aplicar correctamente la técnica de RGT se basa en cuatro fases (Figura 1). En la primera de ellas, se seleccionan los elementos

Más detalles

Base de datos en la Enseñanza. Open Office

Base de datos en la Enseñanza. Open Office 1 Ministerio de Educación Base de datos en la Enseñanza. Open Office Módulo 1: Introducción Instituto de Tecnologías Educativas 2011 Introducción Pero qué es una base de datos? Simplificando mucho, podemos

Más detalles

SQL (Structured Query Language)

SQL (Structured Query Language) SQL (Structured Query Language) El lenguaje de consulta estructurado o SQL (por sus siglas en inglés Structured Query Language) es un lenguaje declarativo de acceso a bases de datos relacionales que permite

Más detalles

INTRODUCCIÓN A LOS SISTEMAS GESTORES DE BASE DE DATOS

INTRODUCCIÓN A LOS SISTEMAS GESTORES DE BASE DE DATOS INTRODUCCIÓN A LOS SISTEMAS GESTORES DE BASE DE DATOS AUTORÍA JOSEFA PÉREZ DOMÍNGUEZ TEMÁTICA NUEVAS TECNOLOGIAS ETAPA CICLOS FORMATIVOS DE GRADO SUPERIOR DE INFORMÁTICA Resumen En esta publicación se

Más detalles

EJEMPLO DE REPORTE DE LIBERTAD FINANCIERA

EJEMPLO DE REPORTE DE LIBERTAD FINANCIERA EJEMPLO DE REPORTE DE LIBERTAD FINANCIERA 1. Introduccio n El propósito de este reporte es describir de manera detallada un diagnóstico de su habilidad para generar ingresos pasivos, es decir, ingresos

Más detalles

PROGRAMACIÓN ORIENTADA A OBJETOS

PROGRAMACIÓN ORIENTADA A OBJETOS PROGRAMACIÓN ORIENTADA A OBJETOS Clase 1. Introducción Profesor: Diego Sánchez Gómez Introducción a la programación orientada a objetos 1. Introducción a la programación orientada a objetos 2. Las clases

Más detalles

Tutorial de UML. Introducción: Objetivos: Audiencia: Contenidos:

Tutorial de UML. Introducción: Objetivos: Audiencia: Contenidos: Tutorial de UML Introducción: El Lenguaje de Modelamiento Unificado (UML - Unified Modeling Language) es un lenguaje gráfico para visualizar, especificar y documentar cada una de las partes que comprende

Más detalles

Institución Educativa Inem Felipe Pérez de Pereira 2012 Estrategia taller. AREA: Sistemas de información Taller 1 2 3 4 Previsto 1 2 3 4 5 6 7 8 9 10

Institución Educativa Inem Felipe Pérez de Pereira 2012 Estrategia taller. AREA: Sistemas de información Taller 1 2 3 4 Previsto 1 2 3 4 5 6 7 8 9 10 Grado 10º Tiempo (semanas) GUÍA DE FUNDAMENTACIÓN Institución Educativa AREA: Sistemas de información Taller 1 2 3 4 Previsto 1 2 3 4 5 6 7 8 9 10 Fecha Real 1 2 3 4 5 6 7 8 9 10 Área/proyecto: es y Mantenimiento

Más detalles

Ingeniería de Software I

Ingeniería de Software I Ingeniería de Software I Diagramas de Actividad 2 Cuatrimestre 1998 1. INTRODUCCIÓN 1 2. DIAGRAMA DE ACTIVIDAD 1 2.1. SEMÁNTICA 1 2.2. NOTACIÓN 1 2.3. EJEMPLO 2 3. ACCIÓN 3 3.1. SEMÁNTICA 3 3.2. NOTACIÓN

Más detalles

Apuntes de Matemática Discreta 1. Conjuntos y Subconjuntos

Apuntes de Matemática Discreta 1. Conjuntos y Subconjuntos Apuntes de Matemática Discreta 1. Conjuntos y Subconjuntos Francisco José González Gutiérrez Cádiz, Octubre de 2004 Universidad de Cádiz Departamento de Matemáticas ii Lección 1 Conjuntos y Subconjuntos

Más detalles

CAPÍTULO I. Sistemas de Control Distribuido (SCD).

CAPÍTULO I. Sistemas de Control Distribuido (SCD). 1.1 Sistemas de Control. Un sistema es un ente cuya función es la de recibir acciones externas llamadas variables de entrada que a su vez provocan una o varias reacciones como respuesta llamadas variables

Más detalles

Universidad Católica del Maule. Fundamentos de Computación Especificación de tipos de datos ESPECIFICACIÓN ALGEBRAICA DE TIPOS DE DATOS

Universidad Católica del Maule. Fundamentos de Computación Especificación de tipos de datos ESPECIFICACIÓN ALGEBRAICA DE TIPOS DE DATOS Especificación algebraica ESPECIFICACIÓN ALGEBRAICA DE TIPOS DE DATOS Un tipo abstracto de datos se determina por las operaciones asociadas, incluyendo constantes que se consideran como operaciones sin

Más detalles

3.8 Construcción de una ALU básica

3.8 Construcción de una ALU básica 3.8 Construcción de una ALU básica En este punto veremos como por medio de compuertas lógicas y multiplexores, se pueden implementar las operaciones aritméticas básicas de una ALU. Esencialmente en este

Más detalles

4. Modelo Relacional: Manipulación de los datos.

4. Modelo Relacional: Manipulación de los datos. Modelo Relacional: Manipulación de los datos. 54 4. Modelo Relacional: Manipulación de los datos. 4.1. Lenguaje de procedimiento: álgebra relacional Los lenguajes de procedimientos para consultar bases

Más detalles

Gestión de Permisos. Documento de Construcción. Copyright 2014 Bizagi

Gestión de Permisos. Documento de Construcción. Copyright 2014 Bizagi Gestión de Permisos Documento de Construcción Gestión de Permisos 1 Tabla De Contenido Descripción del Proceso... 3 Factores Importantes En La Construcción Del Proceso... 4 Modelo de Datos... 4 Principales

Más detalles

Lección 1-Introducción a los Polinomios y Suma y Resta de Polinomios. Dra. Noemí L. Ruiz Limardo 2009

Lección 1-Introducción a los Polinomios y Suma y Resta de Polinomios. Dra. Noemí L. Ruiz Limardo 2009 Lección 1-Introducción a los Polinomios y Suma y Resta de Polinomios Dra. Noemí L. Ruiz Limardo 2009 Objetivos de la Lección Al finalizar esta lección los estudiantes: Identificarán, de una lista de expresiones

Más detalles

Manual etime para supervisores

Manual etime para supervisores Contenido Introducción...3 Empezando a usar etime...4 Cómo entrar a etime?...5 *Cambiar su propia contraseña...5 Partes de pantalla principal...6 Funcionamiento estándar de las pantallas de captura...7

Más detalles

Resumen. El rol del lenguaje SQL en los SGBDR y en la Relacional. cjimenez@inf.udec.cl, tamrstro@inf.udec.cl

Resumen. El rol del lenguaje SQL en los SGBDR y en la Relacional. cjimenez@inf.udec.cl, tamrstro@inf.udec.cl El rol del lenguaje SQL en los SGBDR y en la Relacional. cjimenez@inf.udec.cl, tamrstro@inf.udec.cl Resumen demandas de almacenamiento y procesamiento de datos. Es el conjunto de estas dos capacidades

Más detalles

TALLER No.1 AUDITORÍA A CUENTAS POR COBRAR DE COMFAPOPAYAN UTILIZANDO SOFTWARE DE AUDITORÍA - IDEA.

TALLER No.1 AUDITORÍA A CUENTAS POR COBRAR DE COMFAPOPAYAN UTILIZANDO SOFTWARE DE AUDITORÍA - IDEA. TALLER No.1 AUDITORÍA A CUENTAS POR COBRAR DE COMFAPOPAYAN UTILIZANDO SOFTWARE DE AUDITORÍA - IDEA. PROGRAMA DE AUDITORÍA Objetivo de la Auditoria : Asegurar que las Cuentas por Cobrar que se muestran

Más detalles

Módulo 9 Sistema matemático y operaciones binarias

Módulo 9 Sistema matemático y operaciones binarias Módulo 9 Sistema matemático y operaciones binarias OBJETIVO: Identificar los conjuntos de números naturales, enteros, racionales e irracionales; resolver una operación binaria, representar un número racional

Más detalles

SIIT SISTEMA INFORMÁTICO DE INSPECCIONES DE TRABAJO. Modulo de Planificación Manual de Usuario

SIIT SISTEMA INFORMÁTICO DE INSPECCIONES DE TRABAJO. Modulo de Planificación Manual de Usuario SISTEMA INFORMÁTICO DE INSPECCIONES DE TRABAJO Modulo de Planificación Manual de Usuario Oficina General de Estadística e Informática Oficina de Informática Unidad de Análisis y Desarrollo MÓDULO DE PLANIFICACIÓN

Más detalles

MODELOS DE RECUPERACION

MODELOS DE RECUPERACION RECUPERACIÓN Y ORGANIZACIÓN DE LA INFORMACIÓN INGENIERÍA INFORMÁTICA RECUPERACIÓN Y ACCESO A LA INFORMACIÓN MODELOS DE RECUPERACION AUTOR: Rubén García Broncano NIA 100065530 grupo 81 1 INDICE 1- INTRODUCCIÓN

Más detalles

Introduccion al Lenguaje C. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia

Introduccion al Lenguaje C. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia Introduccion al Lenguaje C Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia Introducción C es un lenguaje de programación creado en 1972 por

Más detalles

PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación. II MODELOS y HERRAMIENTAS UML. II.1 UML: Introducción

PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación. II MODELOS y HERRAMIENTAS UML. II.1 UML: Introducción PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación II MODELOS y HERRAMIENTAS UML 1 1 Técnica de modelado de objetos (I) El modelado orientado a objetos es una técnica de especificación semiformal para

Más detalles

DIAGRAMA DE CLASES EN UML

DIAGRAMA DE CLASES EN UML DIAGRAMA DE CLASES EN UML Mg. Juan José Flores Cueto jflores@usmp.edu.pe Ing. Carmen Bertolotti Zuñiga cbertolotti@usmp.edu.pe INTRODUCCIÓN UML (Unified Modeling Language) es un lenguaje que permite modelar,

Más detalles

Modelos y Bases de Datos

Modelos y Bases de Datos Modelos y Bases de Datos MODELOS Y BASES DE DATOS 1 Sesión No. 10 Nombre: Álgebra Relacional Contextualización En qué consiste el álgebra relacional? Se ha planteado hasta el momento cada uno de los procesos

Más detalles

Hoja1!C4. Hoja1!$C$4. Fila

Hoja1!C4. Hoja1!$C$4. Fila CAPÍTULO 6......... Cálculo y funciones con Excel 2000 6.1.- Referencias De Celdas Como vimos con anterioridad en Excel 2000 se referencian las celdas por la fila y la columna en la que están. Además como

Más detalles

Introducción a las tablas dinámicas

Introducción a las tablas dinámicas Introducción a las tablas dinámicas Cuando tenemos una gran cantidad de datos en una planilla de cálculo, puede resultar difícil analizar toda la información. En estos casos, usaremos las tablas dinámicas,

Más detalles

PEEPER PONTIFICIA UNIVERSIDAD JAVERIANA FACULTAD DE INGENIERIA CARRERA DE INGENIERIA DE SISTEMAS. Mayo 2014. Versión 2.1 OSCAR IVAN LÓPEZ PULIDO

PEEPER PONTIFICIA UNIVERSIDAD JAVERIANA FACULTAD DE INGENIERIA CARRERA DE INGENIERIA DE SISTEMAS. Mayo 2014. Versión 2.1 OSCAR IVAN LÓPEZ PULIDO PEEPER Implementación del cambio de técnica usada para la actualización de datos en los reportes de esfuerzo, usados como métrica de productividad, progreso y costo de los proyectos, de la compañía de

Más detalles

FORMACIÓN DE EQUIPOS DE E-LEARNING 2.0 MÓDULO DE DISEÑO Y PRODUCCIÓN DE MATERIALES UNIDAD 6 B

FORMACIÓN DE EQUIPOS DE E-LEARNING 2.0 MÓDULO DE DISEÑO Y PRODUCCIÓN DE MATERIALES UNIDAD 6 B 141 1 FORMACIÓN DE EQUIPOS DE E-LEARNING 2.0 Unidad 6 B 142 2 Índice SEGUIMIENTO DE PERSONAS 1 INFORMES 2 143 3 SEGUIMIENTO DE PERSONAS E INFORMES EN MOODLE El seguimiento de los participantes en Moodle

Más detalles

Conclusiones. Particionado Consciente de los Datos

Conclusiones. Particionado Consciente de los Datos Capítulo 6 Conclusiones Una de las principales conclusiones que se extraen de esta tesis es que para que un algoritmo de ordenación sea el más rápido para cualquier conjunto de datos a ordenar, debe ser

Más detalles

BANCOS. Manejo de Bancos. Como crear una ficha de Banco? Como modificar los datos de una ficha de Banco? Como borrar una ficha de Banco?

BANCOS. Manejo de Bancos. Como crear una ficha de Banco? Como modificar los datos de una ficha de Banco? Como borrar una ficha de Banco? BANCOS El Sistema de Gestión Administrativa permite el manejo de los movimientos bancarios. Seleccionada la opción de Bancos, el sistema presentara las siguientes opciones. Manejo de Bancos Manejo de movimientos

Más detalles

Unidad II: Diseño de Bases de Datos y el modelo E-R. 2.1 El Proceso de Diseño

Unidad II: Diseño de Bases de Datos y el modelo E-R. 2.1 El Proceso de Diseño Unidad II: Diseño de Bases de Datos y el modelo E-R. 2.1 El Proceso de Diseño El proceso de diseño para una base de datos consta básicamente de 7 pasos, los cuáles se describen en la siguiente imagen.

Más detalles

Programa para el Mejoramiento de la Enseñanza de la Matemática en ANEP Proyecto: Análisis, Reflexión y Producción. Fracciones

Programa para el Mejoramiento de la Enseñanza de la Matemática en ANEP Proyecto: Análisis, Reflexión y Producción. Fracciones Fracciones. Las fracciones y los números Racionales Las fracciones se utilizan cotidianamente en contextos relacionados con la medida, el reparto o como forma de relacionar dos cantidades. Tenemos entonces

Más detalles

RECOMENDACIONES DE INVESTIGACIÓN FUTURA.

RECOMENDACIONES DE INVESTIGACIÓN FUTURA. Capítulo 6 CONCLUSIONES Y RECOMENDACIONES DE INVESTIGACIÓN FUTURA. 212 METODOLOGÍA PARA LA DETECCIÓN DE REQUERIMIENTOS SUBJETIVOS EN EL DISEÑO DE PRODUCTO. CAPÍTULO 6. CONCLUSIONES, APORTACIONES Y RECOMENDACIONES.

Más detalles

Sub consultas avanzadas

Sub consultas avanzadas Sub consultas avanzadas Objetivo Después de completar este capítulo conocerá lo siguiente: Escribir una consulta de múltiples columnas Describir y explicar el comportamiento de las sub consultas cuando

Más detalles

MANUAL DEL SISTEMA DE INFORMACIÓN DE EXPEDIENTES DEL GOBIERNO DE LA CIUDAD DE SANTA FE

MANUAL DEL SISTEMA DE INFORMACIÓN DE EXPEDIENTES DEL GOBIERNO DE LA CIUDAD DE SANTA FE MANUAL DEL SISTEMA DE INFORMACIÓN DE EXPEDIENTES DEL GOBIERNO DE LA CIUDAD Subsecretaría de Reforma y Modernización del Estado Programa Municipio Digital ÍNDICE Características del sistema... 2 Funcionalidades...

Más detalles

Tema 1: Fundamentos de lógica, teoría de conjuntos y estructuras algebraicas: Apéndice

Tema 1: Fundamentos de lógica, teoría de conjuntos y estructuras algebraicas: Apéndice Tema 1: Fundamentos de lógica, teoría de conjuntos y estructuras algebraicas: Apéndice 1 Polinomios Dedicaremos este apartado al repaso de los polinomios. Se define R[x] ={a 0 + a 1 x + a 2 x 2 +... +

Más detalles

Funciones CONJUNTO EXCEL 2013 AVANZADO

Funciones CONJUNTO EXCEL 2013 AVANZADO EXCEL 2013 AVANZADO Esta función contará la cantidad de celdas que contengan palabras de cuatro letras y que terminen con la A. El asterisco cumple una función similar, pero la diferencia radica en que

Más detalles

SECRETARÍA DE FINANZAS DEL DISTRITO FEDERAL P05 PANEL DE CONTROL DEL PROGRAMA HONORARIOS

SECRETARÍA DE FINANZAS DEL DISTRITO FEDERAL P05 PANEL DE CONTROL DEL PROGRAMA HONORARIOS SECRETARÍA DE FINANZAS DEL DISTRITO FEDERAL P05 PANEL DE CONTROL DEL PROGRAMA HONORARIOS ROLES: ADMN_HON_05 Fecha:30ƒ08ƒ2012 1/26 2/26 PANEL DE CONTROL DEL PROGRAMA DE HONORARIOS Objetivo : Permite crear

Más detalles

LABORATORIO Nº 3 PRÁCTICA DE FUNCIONES EN MICROSOFT EXCEL

LABORATORIO Nº 3 PRÁCTICA DE FUNCIONES EN MICROSOFT EXCEL OBJETIVO Mejorar el nivel de comprensión y el manejo de las destrezas del estudiante para utilizar funciones en Microsoft Excel 2010. 1) LA FUNCIÓN SI EN EXCEL La función SI en Excel es parte del grupo

Más detalles

El conjunto de conocimientos científicos y técnicos que hacen posible la resolución de forma automática de problemas por medio de las computadoras.

El conjunto de conocimientos científicos y técnicos que hacen posible la resolución de forma automática de problemas por medio de las computadoras. 1 Conceptos Generales 1.1 Definición de Informática Una posible definición de informática podría ser: El conjunto de conocimientos científicos y técnicos que hacen posible la resolución de forma automática

Más detalles

El proceso de edición digital en Artelope y CTCE

El proceso de edición digital en Artelope y CTCE El proceso de edición digital en Artelope y CTCE Carlos Muñoz Pons Universitat de València carlos.munoz-pons@uv.es Introducción Una de las cuestiones más importantes a la hora de trabajar en proyectos

Más detalles

CONTROL DE ASISTENCIA DE PERSONAL

CONTROL DE ASISTENCIA DE PERSONAL CONTROL DE ASISTENCIA DE PERSONAL PARA UNA EMPRESA INITE, S.C. no es responsable del contenido, de la veracidad de los datos, opiniones y acontecimientos vertidos en el presente proyecto. La finalidad

Más detalles

TEMA 20: CONCEPTOS BÁSICOS DE SQL

TEMA 20: CONCEPTOS BÁSICOS DE SQL TEMA 20: CONCEPTOS BÁSICOS DE SQL OBJETIVOS DEL TEMA Introducción al lenguaje de consultas SQL. Para iniciar esta parte del curso se va a utilizar el programa SQLITE que es sencillo, multiplataforma y

Más detalles

Capítulo 4 Procesos con estructuras de repetición

Capítulo 4 Procesos con estructuras de repetición Estructura de contador Capítulo 4 Procesos con estructuras de repetición Esta es una operación que incrementa en una unidad el valor almacenado en la variable c, cada vez que el flujo del diagrama pasa

Más detalles

4. METODOLOGÍA. 4.1 Materiales. 4.1.1 Equipo

4. METODOLOGÍA. 4.1 Materiales. 4.1.1 Equipo 4. METODOLOGÍA 4.1 Materiales 4.1.1 Equipo Equipo de cómputo. Para el empleo del la metodología HAZOP se requiere de un equipo de cómputo con interfase Windows 98 o más reciente con procesador Pentium

Más detalles

Introducción al álgebra relacional. Con ejemplos en SQL

Introducción al álgebra relacional. Con ejemplos en SQL OpenStax-CNX module: m18351 1 Introducción al álgebra relacional. Con ejemplos en SQL Miguel-Angel Sicilia This work is produced by OpenStax-CNX and licensed under the Creative Commons Attribution License

Más detalles

GUÍAS. Módulo de Diseño de software SABER PRO 2013-2

GUÍAS. Módulo de Diseño de software SABER PRO 2013-2 GUÍAS Módulo de Diseño de software SABER PRO 2013-2 GUÍAS Módulo de diseño en ingeniería El diseño de productos tecnológicos (artefactos, procesos, sistemas e infraestructura) está en el centro de la naturaleza

Más detalles

Capítulo 3: XML Spy como editor de documentos XML. 2. La interfaz de usuario de XML Spy

Capítulo 3: XML Spy como editor de documentos XML. 2. La interfaz de usuario de XML Spy Capítulo 3: XML Spy como editor de documentos XML 1. Objetivos del capítulo Este capítulo pretende servir como una introducción a las funciones de la aplicación XML Spy, incluida dentro del conjunto de

Más detalles

Funciones en Excel (II)

Funciones en Excel (II) Funciones en Excel (II) Las Funciones de Texto Jose Ignacio González Gómez Departamento de Economía Financiera y Contabilidad - Universidad de La Laguna www.jggomez.eu INDICE 1 Para qué las funciones de

Más detalles

ESTRUCTURAS CONDICIONALES EN PHP: SWITCH, CASE, BREAK. EJEMPLOS DE USO Y EJERCICIOS RESUELTOS. (CU00820B)

ESTRUCTURAS CONDICIONALES EN PHP: SWITCH, CASE, BREAK. EJEMPLOS DE USO Y EJERCICIOS RESUELTOS. (CU00820B) APRENDERAPROGRAMARCOM ESTRUCTURAS CONDICIONALES EN PHP: SWITCH, CASE, BREAK EJEMPLOS DE USO Y EJERCICIOS RESUELTOS (CU00820B) Sección: Cursos Categoría: Tutorial básico del programador web: PHP desde cero

Más detalles

SISTEMA DE APARTADO DE SALAS PARA EVENTOS

SISTEMA DE APARTADO DE SALAS PARA EVENTOS SISTEMA DE APARTADO DE SALAS PARA EVENTOS Dirección General de Comunicaciones e Informática Febrero 2008 1 INDICE 1. Objetivos del Sistema... 3 10. Solución de problemas... 23 2. Introducción... 4 3. Requisitos...

Más detalles

Introducción a la Firma Electrónica en MIDAS

Introducción a la Firma Electrónica en MIDAS Introducción a la Firma Electrónica en MIDAS Firma Digital Introducción. El Módulo para la Integración de Documentos y Acceso a los Sistemas(MIDAS) emplea la firma digital como método de aseguramiento

Más detalles

3.1 INGENIERIA DE SOFTWARE ORIENTADO A OBJETOS OOSE (IVAR JACOBSON)

3.1 INGENIERIA DE SOFTWARE ORIENTADO A OBJETOS OOSE (IVAR JACOBSON) 3.1 INGENIERIA DE SOFTWARE ORIENTADO A OBJETOS OOSE (IVAR JACOBSON) 3.1.1 Introducción Este método proporciona un soporte para el diseño creativo de productos de software, inclusive a escala industrial.

Más detalles

ANÁLISIS SEMÁNTICO. Especificación formal: Semántica Operacional, semántica denotacional, semántica Axiomática, Gramáticas con Atributos.

ANÁLISIS SEMÁNTICO. Especificación formal: Semántica Operacional, semántica denotacional, semántica Axiomática, Gramáticas con Atributos. ANÁLISIS SEMÁNTICO El análisis semántico dota de un significado coherente a lo que hemos hecho en el análisis sintáctico. El chequeo semántico se encarga de que los tipos que intervienen en las expresiones

Más detalles

Desarrollo de un Sistema de Gestión de Proyectos mediante el framework GWT

Desarrollo de un Sistema de Gestión de Proyectos mediante el framework GWT Proyecto de Fin de Carrera Universidad Politécnica de Valencia Escuela Técnica Superior de Informática Desarrollo de un Sistema de Gestión de Proyectos mediante el framework GWT Realizado por: Dirigido

Más detalles