Lenguajes Canónicos para la Descripción de Grafos: Estudio y Transformación entre Esquemas de distintos Modelos de Datos

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

Download "Lenguajes Canónicos para la Descripción de Grafos: Estudio y Transformación entre Esquemas de distintos Modelos de Datos"

Transcripción

1 Interoperabilidad, Monografía 1 Lenguajes Canónicos para la Descripción de Grafos: Estudio y Transformación entre Esquemas de distintos Modelos de Datos Pablo Rodríguez Bocca Septiembre, 2002 Resumen - El presente documento resume los resultados del proyecto final desarrollado en el marco del curso de postgrado Interoperabilidad del Instituto de Ingeniería en Computación de la Universidad de la República Oriental del Uruguay. Se introduce en la temática contextualizando el estudio y su motivación, para esto se definen entre otras: interoperabilidad, modelo de datos, lenguaje canónico y grafo, así como sus principales características. Posteriormente se presentan los modelos de datos y lenguajes que son fuentes de estudios en este documento: GraphML, XGMML, GXL, GML, Heidi, etc.. De la comparación entre los mismos, surge las posibles transformaciones a realizar para convertir entre grafos de distintos lenguajes. Finalizando con las principales conclusiones extraídas. Este documento solo resume los puntos mas relevantes de cada lenguaje, centrándose en su comparación y transformación, es necesario dirigirse a la documentación citada para mayor profundidad en cada descripción. canónico común entre todas las fuentes del sistema. Esta transformación presenta muchos desafíos; es necesario conocer cada modelo, su potencialidad y deficiencias para expresar la realidad, también poder distinguir entre las distintas opciones que se presentan al momento de expresar un esquema en otro modelo de datos (puesto que es necesario enfrentarse a distintos niveles de abstracción entre modelos). Este problema de comparación y transformación entre modelos de datos es uno de los atacados por la Interoperabilidad, y tiene múltiples áreas de aplicación en la informática. A los efectos de este documento el resumen anterior quiso mostrar el enfoque y marco que presenta el estudio en su globalidad. Palabras claves Data Model, Canonical Language, Mapping, XML, DTD, Heidi, XGMML, GraphML. I. INTRODUCCIÓN La Interoperabilidad es el acceso uniforme a múltiples fuentes de datos heterogéneas y autónomas. La intención es intercambiar datos y funcionalidades cooperando con un fin común. Los problemas básicos que se enfrentan cuando se realiza un sistema integrado es resolver las heterogeneidad de las fuentes, respetar la autonomía de las mismas, y diseñar de forma que el sistema sea gerenciable y mantenible frente a cambios en la cantidad de las fuentes (escalabilidad) o cambios en las estructuras de las fuentes (evolución). La arquitectura de un sistema interoperable debe entonces, adaptarse en mayor o menor medida a la naturaleza de las fuentes y los objetivos específicos de integración en cada caso. Un caso de especial interés, por su generalidad y utilidad, es cuando las fuentes presentan autonomía de ejecución, es decir, tienen la posibilidad de realizar operaciones locales sin interferir en la ejecución de las no locales. Un sistema integrado por este tipo de fuentes recibe el nombre de Sistema Federado. Para este tipo de sistemas se suele utilizar una arquitectura de cinco niveles, donde cada nivel resuelve un problema especifico de la integración. Comenzando desde la base de datos fuente, el primer nivel representa el esquema local, expresado en el modelo de datos que la fuente utiliza. El siguiente nivel representa el esquema componente, donde se realiza una transformación del modelo de datos de la fuente a un modelo de datos Figura I-1 Arquitectura de 5 Niveles. Entendiendo la problemática derivada de la existencia de distintos modelos de datos, es necesario atacar el problema en los distintos ámbitos donde se presenta. En particular la motivación de este estudio surge de grupo de Investigación Operativa de la Facultad de Ingeniería de la Universidad de la Republica Oriental de Uruguay, el cual se enfrenta sistemáticamente al problema de heterogeneidad en la representación de tipo de datos abstracto Grafo. La carencia de un lenguaje canónico único para la representación de los grafos trae aparejado complicaciones al momento de intercambiar resultados y casos de prueba entre investigadores del grupo, así como en esfuerzo repetido al momento de implementar la exportación e importación de datos. Un grafo G=(V,A), según [AHO], pensado como tipo de dato abstracto es un conjunto de vértices V y un conjunto de arcos A, donde un arco es un par ordenado de vértices A VxV. Cuando se trata con grafos en general surgen los conceptos de dirigido y no dirigido, camino, matriz de adyacencia, función de costos, grado de un nodo, etc. Estos términos son muy utilizados por algoritmos y muchos de

2 2 ellos se incorporan a la propia definición del grafo. Esto último es muy importante puesto que si se pretende comparar lenguajes para representar grafos es vital tener definido que datos y operaciones se deben incluir dentro del tipo de datos abstracto grafo y cuales no. Lamentablemente no existe consenso en este último punto, crucial para nuestro análisis comparativo entre lenguajes. Se volverá sobre este tema mas adelante. Otros términos que pertenecen al marco teórico del documento y corresponden ser presentados brevemente en este capítulo introductorio son: modelo de datos y lenguaje canónico. Un modelo de datos según [EN] es un conjunto de conceptos que pueden servir para describir la estructura de una base de datos, considerándose estructura como los tipos de datos, vínculos y restricciones que deben cumplir esos datos. También se agrega a la definición que un modelo de datos debe incluir conceptos para especificar comportamientos, es decir, operaciones sobre los datos. Desde un punto de vista mas abstracto un modelo de datos es una herramienta para representar la realidad, es decir, un lenguaje para especificar bases de datos, donde se puedan expresar estructuras (objetos de interés), restricciones (reglas que deben cumplir los datos) y operaciones (insertar, borrar, consultar los datos). Los modelos de datos son comúnmente clasificados según su grado de abstracción, como: conceptuales, lógicos o físicos. Donde se consideran de alto nivel o conceptuales aquellos que disponen de conceptos muy cercanos al modo como en general se perciben los datos, para lograrlo estos modelos deben representar la realidad independientemente de cualquier implementación. Los modelos de mas bajo nivel, que pertenecen a niveles lógicos o físicos, permiten entrever detalles de su realización en un computador. En este documento se pretende enfocar el estudio pensando los modelos de datos como conceptuales, es decir, haciendo hincapié en su potencialidad para describir la realidad y no tanto las facilidades que brinda para especificar su implementación. Un lenguaje es un sistema de símbolos para la comunicación que consta normalmente de vocabulario y reglas. Todo modelo de datos tiene por lo menos un lenguaje que lo expresa, y por tanto determina la expresividad del mismo o grado de abstracción. Por lenguaje canónico se pretende referenciar al lenguaje común adaptado por un ambiente heterogéneo, en este caso las distintas representaciones de grafos que conviven. Por tanto se debe hacer explicito que se intenta describir el lenguaje de intercambio, posiblemente la representación en archivos, y no la representación interna programada en cada caso. II. DEFINICIÓN DEL PROBLEMA Y ALCANCE En la sección anterior se a resumido muy brevemente el marco teórico y la línea en la que se enmarca este trabajo. Teniendo clara la terminología es posible determinar el problema en estudio, así como su alcance. El objetivo primario del artículo es presentar varios lenguajes que actualmente son utilizados para la representación de grafos, y mostrar sus ventajas o desventajas si fueran elegidos como lenguaje canónico. El análisis se realiza desde el punto de vista de la expresividad de los distintos lenguajes, así como de la facilidad de transformación entre los mismos (tal cual se realiza en los estudios enmarcados en el área de la Interoperabilidad con los modelos de datos). En segunda instancia se pretende enriquecer el estudio con otras consideraciones pertinentes al problema, como facilidad de implementación, disponibilidad de herramientas de desarrollo, consideraciones sobre migraciones, etc. Sin ser entonces el punto central, el estudio pretende concluir con la sugerencia de utilización de uno de los lenguajes estudiado como lenguaje canónico. Este documento se realiza como monografía final de un curso de postgrado, debiendo adaptar su alcance a lo estipulado en cuanto a profundidad y dedicación. Con esta consideración, es necesario limitar el análisis a solo tres lenguajes de descripción de grafos. Tampoco se pretende realizar una especificación profunda de cada uno, solo lo necesario para poder entender sus diferencias y transformaciones, debiendo dirigirse a la documentación referenciada por mas detalle. El documento se estructura de la siguiente manera, comienza realizando una perspectiva histórica de algunos lenguajes relevantes utilizados para la descripción de grafos. Desde este punto de vista se pretende justificar la elección de tres de ellos que serán estudiados en profundidad. En el siguiente capítulo se realiza una especificación informal de cada lenguaje, haciendo hincapié en los puntos relevantes para el análisis. Posteriormente se comparan entre sí, mostrando las ventajas y desventajas de cada lenguaje al momento de esbozar las transformaciones posibles entre los mismos. Finalmente se discuten otras consideraciones, a tener en cuenta para una elección de lenguaje canónico, las conclusiones y el trabajo a futuro. III. PERSPECTIVA HISTÓRICA Existe un amplia variedad de lenguajes para grafos, cada uno con un marco de aplicación en mayor o menor medida específico, reflejo del paradigma o necesidad histórica de cuando se desarrollaron. En primer lugar tenemos a Heidi ("Herramienta Inteligente para el Diseño de Redes de Comunicación Confiables") [HEIDI]. Heidi es desarrollada por el Departamento de Investigación Operativa del Instituto de Computación de la Facultad de Ingeniería de la Universidad de la R.O.U, en un proyecto financiado por el CONICYT en Es mucho más que un lenguaje, de hecho posiblemente el lenguaje de intercambio sea en lo que menos se hace énfasis, incluye una biblioteca de base para el manejo de grafos estocásticos para los modelos de aristas y de nodos, junto con algoritmia de evaluación exacta y por simulación de la confiabilidad, evaluación de la vulnerabilidad y heurísticas de

3 Interoperabilidad, Monografía 3 optimización. Una extensión a esta herramienta se realiza en 1996, en el proyecto de Taller V realizado por G. Friss de Kereki, M. Maneyro, F. Robledo y A. Sabiguero, en el cual se implementan los algoritmos que calculan la confiabilidad de una red en el modelo de nodos. Cuenta con una interfase gráfica desarrollada por Gerardo Maquiel y Pablo Barrios (en su proyecto de Taller V "Interfase para el Modelado y Diseño de Redes de Comunicación", 1995) [HEIDI97]. Es importante incluir a Heidi en este análisis, porque se dedicaron muchos recursos en el pasado para lograr una biblioteca general y actualmente un tanto en desuso sigue siendo utilizada en algunas circunstancias. Bajo los paradigmas modernos, se impone la utilización de XML como lenguaje de intercambio [XML]. Utilizar XML como marco para especificar un lenguaje de intercambio de grafos ofrece ventajas muy grandes, resaltándose: Es fácilmente legible por ambos: hombre y maquina. Es orientado a objetos, en el sentido de que es adecuado para describir objetos de la realidad o un problema abstracto modelando sus propiedades. Esto hace que sea intuitivo de interpretar, disminuyendo tiempos de diseño e implementación. XML describe estructura de lo que se quiere modelar, no el formato de despliegue como html. Existen cada vez mas herramientas, de uso muy simple, de dominio público y comerciales para manipular XML. Entre ellas se destacan los editores, visualizadores, validadores y especialmente los poderosos parseadores, disponibles en general para Java, C, C++ y Perl. Al ser utilizado en muchas áreas, se tiene mayor aceptación del formato en aplicaciones variadas. La serie de servicios emergentes en la Web, conocidos como Web-Services [SOAP] utilizan el formato XML para intercambiar datos, ser compatible con estos estándares permite con increíble facilidad utilizar estos recursos. Todos los documentos XML son unicode [UNICODE] por definición, pero pueden ser guardados en disco o transmitidos en distintas codificaciones como ISO o UTF-8. Esto brinda flexibilidad y soluciona potenciales problemas de interoperabilidad. Define claramente las reglas sintácticas en el Document Type Definition (DTD) o más recientemente en el Schema, permitiendo al usuario hacer las extensiones que considere adecuadas. Mediante la introducción de RDF Schema ( Resource Description Framework )[RDF], se enriquece la potencialidad de XML, pudiendo definirse por ejemplo otros tipos de datos como float, etc. Con la utilización exclusiva de DTD, el chequeo de tipos lo debe realizar el parseador de grafo, mientras que utilizando RDF esto ya es nativo, con las ventajas de implementación que esto trae. Es mas fácil de mapear a SVG ( Scalable Vector Graphics), un estándar desarrollado por W3C para gráficos en la Web [SVG]. En este contexto se han desarrollado una variedad muy grande de especificaciones de lenguajes para grafos usando XML. Las principales son: En 1999, surge GraphXML, es presentado en Graph Drawing 2000, utiliza de forma correcta las prestaciones de XML, especificado usando DTD [GRAPHXML]. Aparentemente inmediatamente surge GraphML, que se encuentra especificado en XML Schema, muy similar, presenta mayor difusión y actividad en la actualidad [GRAPHML]. XGMML (extensible Graph Markup and Modeling Language) formato de grafo basado en XML y GML. Tiene mucho prestigio por su antigüedad, no es muy soportado por aplicaciones, aparentemente deja a la capa de aplicación cosas importantes como el chequeo de restricciones referenciales [XGMML]. En el 2000 también surge Graph exchange Language, pensado para la reingeniería de software [GXL]. Especificado en DTD y posteriormente en XML Schema, parece brindar muchas herramientas y tener varios adeptos. Existen muchas más especificaciones de grafos. Muchas de ellas debieron ser descartadas rápidamente dado el alcance del documento. Es pertinente nombrar algunas de ellas: XML Schema for Lattices and Graphs [XLG] parece ser una iniciativa sin mucho apoyo que surge de la simulación en la física, presentan una especificación bastante pobre de un grafo, sin utilizar al máximo las características de XML, obviamente tiene la virtud de simplicidad. GML (Graph Modelling Language) [GML] surge en 1997, no esta basado en XML, no existe implementación para las plataformas mas comunes de desarrollo y actualmente todas sus virtudes son contempladas por XGMML. En 1997 surge Resource Description Framework [RDF] de W3C, esta orientado a describir relaciones entre recursos de Internet en términos de propiedades de nombre y valores, pero en realidad por si solo puede ser usado para representar cualquier grafo directo etiquetado (con direcciones URI) en XML, tiene altísima difusión y herramientas gratuitas, es muy útil si se quieren realizar distintos tipos de consultas directa sobre el documento. Es muy cuestionable descartar esta solución, por la difusión que tiene, en realidad no se adapta completamente a las necesidades introduciendo complicaciones innecesarias, además cualquier facilidad que este modelo permita puede introducirse en otros modelos como por ejemplo se expresa directamente en la especificación de XGMML. GRXL, Creado y usado en Grrr (Graph Rewriting Programming Language), de poca adhesión [GRXL]. Structured Graph Format: XML metadata for describing Web site structure [SGF] surge en 1998, es relativamente difundido, no fue creado para representar grafos genéricos sino principalmente estructuras arborescentes tipo sitios Web. Utiliza adecuadamente las facilidades de XML para implementar por ejemplo restricciones referenciales.

4 4 Claramente en esta reseña se intenta remarcar el advenimiento del paradigma de XML y como este fue vital para los lenguajes modernos de especificación de grafos. En este sentido surge la necesidad de comparar el lenguaje histórico desarrollado por el Departamento de Investigación Operativa conocido como Heidi y alguno de los más prominentes lenguajes modernos basados en XML, en particular con GraphML y extensible Graph Markup and Modeling Language (XGMML). La elección de los lenguajes de grafos basados en XML no es arbitraria, a requerido mucho tiempo estudiar todos los intentos de estandarización mencionados anteriormente a pesar de que el objetivo se limita a una comparación profunda entre tres lenguajes, es necesario conocer aquellos mas exitosos basados en XML para saber con cual comparar. Se considera fuertemente para la decisión aquellos estándares de lenguajes de dominio público, que presente gran adhesión y un conjunto importante de herramientas gratuitas (priorizando aquellas de dominio público). En este sentido se han elegido GraphML y XGMML 1, los cuales parecen tener muchos adeptos, además permiten representaciones mas genéricas haciendo un correcto uso de XML como se verá en las siguientes secciones. El estudio continua haciendo una necesaria introducción a XML, a los lectores familiarizados con el área se recomienda saltear este capítulo, a aquellos que desconocen completamente los fundamentos se recomienda luego de esta breve introducción dirigirse a la bibliografía citada. IV. EXTENSIBLE MARKUP LANGUAGE: XML El extensible Markup Language (XML) es un subconjunto del lenguaje SGML (Structured Generalized Markup Language) que fue definido por el World Wide Web Consortium (W3C) en 1998 (ver la especificación 1.0 completa en Su objetivo es permitir que el genérico SGML sea servido, recibido y procesado en la Web en la forma en que hoy es posible hacerlo con el HTML. XML fue diseñado para su fácil implementación e interoperabilidad con ambos lenguajes: SGML y HTML. Muchas veces no se tiene clara la diferencia entre XML y HTML [HTML], esto se debe a que HTML es un subconjunto especifico (aplicación concreta) de SGML usado para describir paginas Web, mientras que XML es un subconjunto (sublenguaje) de SGML. Esto significa que XML es un conjunto de reglas para el diseño de etiquetas (tags) semánticas, es decir es un lenguaje de Meta-markup pensado para definir otros lenguajes. Por tanto es ideal estructurar, describir e intercambiar información. Por otro lado HTML es un simple lenguaje de formato de texto. Como XML fue creado para simplificar al SGML, no es descabellado pensar que el W3C haya decidido redefinir el HTML 4.0 como una aplicación especifica de XML, esto lo 1 Graph exchange Language (GXL) también parece muy bueno, pero presenta poca actividad en la actualidad. está haciendo a través de la especificación del XHTML [XHTML]. Como se adelantó, el XML es actualmente la forma ideal para intercambiar información. Su popularidad en este sentido radica en: un crecimiento importante de formatos propietarios, la complejidad que surge de las conversiones de formato entre diferentes aplicaciones o versiones, el formato es fácilmente legible puesto que los datos y las etiquetas son guardadas en texto plano, evita el problema de almacenar datos simples en archivos grandes. Todos estos problemas se presentan en el intercambio de grafos, haciendo dificultosa la investigación en el ámbito de la Investigación Operativa. Pero es fácil ver que estos problemas no se presentan únicamente en Investigación Operativa, para abolir esta problemática los distintos interesados han desarrollado lenguajes de Markups específicos para su disciplina, a forma de ejemplo se tiene: Banking Industry Technology Secretariat (BITS) Financial Exchange (IFX) Schools Interoperability Framework (SIF) Common Business Library (CBL) Electronic Business XML Initiative (ebxml) The Text Encoding Initiative (TEI) Chemical Markup Language (CML) Mathematical Markup Language (MathML) Channel Definition Format (CDF) Synchronized Multimedia Integration Language (SMIL) XHTML Scalable Vector Graphics (SVG) MusicML VoxML Lamentablemente no existe un estándar consolidado para el intercambio de grafos, siendo objetivo de este documento contrarrestar un conjunto de propuestas para ayudar a este fin. Un documento XML puede ser chequeado, para saber si esta bien formado (well-formed), o validado, para saber si cumple con un lenguaje especifico definido en XML. Estos conceptos muchas veces son confundidos y conviene marcar sus diferencias. DOCUMENTOS XML BIEN-FORMADOS (WELL-FORMED): Un documento XML se dice que esta bien-formado si cumple con las reglas sintácticas de la especificación de XML (www.w3.org/tr/rec-xml). Como una descripción rápida se resalta que un documento XML esta formado por etiquetas(tags) y datos. Las etiquetas se encuentra encerradas entre <> mientras que los datos están por fuera. Un documento XML consiste de uno o más elementos. Los elementos son marcados al comienzo y al final con etiquetas. Las etiquetas contienen el nombre del elemento y

5 Interoperabilidad, Monografía 5 la etiqueta del comienzo tiene la forma <nombre_elemento> y la del final </nombre_elemento>. Un elemento raíz debe contener a todo el resto de los elementos del documento, pudiendo anidarse elementos. A diferencia de HTML, no existe un conjunto predefinido de nombres de elementos (como body, h1 y b ). Como ejemplo observemos el siguiente documento XML: <producto> <nombre>manzana</nombre> <precio moneda="$u" >0.10</precio> </producto> Incluye tres elementos: producto, nombre y precio. Donde un producto esta formado por un nombre y un precio. El dato descrito es el producto Manzana con un precio de Algunos elementos pueden contener información adicional en su etiqueta de comienzo, conocida como atributo consta de un nombre y un valor, en el ejemplo la moneda en la cual está expresado el precio es en pesos uruguayos. Si este mismo documento se fuese a expresar en algún otro formato de intercambio de datos como CVS (commaseparated value) tendría la siguiente apariencia: "Manzana";0.10 Mostrando una de las principales ventajas del XML, que es auto-descriptivo. Todo esto va a quedar mas claro mas adelante cuando se especifiquen los DTD y los XML-Schemas, y finalmente cuando se detallen los lenguajes específicos de grafos basados en XML. DOCUMENTOS XML VALIDOS (VALID): Un documento XML, si esta bien-formado, puede ser validado contra un Document Type Definition (DTD) o un XML-Schema. Los DTD y los XML-Schema son dos formas distintas de definir un sublenguaje basado en XML, por tanto la validación representa el chequeo de cumplimiento por parte de un documento de pertenecer a dicho sublenguaje. Para el caso de estudio la validación representa que el grafo es semánticamente correcto, por ejemplo toda arista es entre dos nodos pertenecientes al grafo. Que existan dos formas de especificar los lenguajes basados en XML se debe principalmente a razones históricas. Los DTD's son usados desde 1970, utilizan un formato muy particular de especificación y tienen una serie de limitantes que no permiten una buena expresividad. Estas limitantes forjaron el desarrollo de un nuevo estándar conocido como XML-Schema, esta vez especificado en el mismo XML. Un documento XML puede incluir en el encabezado la información de cual es su método de validación. Permitiendo muchas variantes, una forma simple de especificar que un documento debe ser validado con un DTD es 2 : <?xml version="1.0"?> <!DOCTYPE graph SYSTEM "./xgmml.dtd">... 2 El archivo xgmml.dtd debe estar en el mismo directorio que el documento XML. Mientras que con XML-Schema es 3 : <?xml version="1.0"?> <root xmlns="http://www.cs.rpi.edu/xgmml" xmlns:xsi="http://www.w3.org/2001/xmlschemainstance" xsi:schemalocation="http://www.cs.rpi.edu/xgm ML./xgmml.xsd">... A lo largo de todo el documento aparecen ejemplos completos de su aplicación. A. Document Type Definition (DTD's). En esta sección se describe las principales reglas de construcción de los Document Type Definition (DTD's). Los DTD s están formados exclusivamente por bloques de elementos, entidades, atributos y notaciones. El elemento es el bloque básico de construcción. Existen tres tipos de elementos. 1) Elementos simples. Estos elementos contienen texto, básicamente son strings y se representan como #PCDATA en la DTD. Como ejemplo para XHTML se tiene a <b>. 2) Elementos compuestos. Elementos formados por otros elementos o #PCDATA. Como ejemplo para XHTML se tiene a <html>. 3) Elementos aislados (singleton tags). No contienen otros elementos ni #PCDATA. Como ejemplo para XHTML se tiene a <b/>. Los elementos se especifican en la DTD de la siguiente forma: <!ELEMENT elemento (#PCDATA)> Una entidad es un espacio donde se pueden guardar datos (un texto) para luego ser utilizados por algún documento XML que haga referencia. El elemento raíz de un DTD es conocido como la entidad documento : <!DOCTYPE root [ ]> Una entidad genérica es definida como 4 : <!ENTITY name "text to be replaced"> Los atributos son muy usados en XHTML, por ejemplo: <hr size="40" width="80%"> Cuando se declaran atributos a un elemento en la DTD, es necesario utilizar una sentencia del tipo: <!ATTLIST element_name attribute_name type default_value> Los atributos entonces tienen un tipo asociado, este tipo puede ser: CDATA, enumerated, ID, IDREF, IDREFS, 3 El elemento root debe ser el elemento raíz del esquema. El archivo xgmml.xsd debe estar en el mismo directorio que el documento XML. 4 Cuando en un documento se hace referencia a una entidad previamente declarada, se sustituye el texto desplegado por el texto de la entidad.

6 6 ENTITY, ENTITIES, NMTOKEN, NMTOKENS y NOTATION. De los cuales interesan especialmente para este análisis ID e IDREF como se muestra en la sección siguiente. Las notaciones son utilizadas para especificar datos que no se encuentran en formato XML. El formato es: <!NOTATION name system "external_id"> Un caso típico de uso es utilizar los tipos MIME definidos en el sistema. Por una información mas detallada por favor dirigirse a [W3C]. B. XML-Schema La especificación de XML-Schema surge como necesidad de cubrir la falta de expresividad del DTD. A pesar de que la especificación en DTD s tiene buenas características de madurez y uso difundido, los esquemas son escritos en XML, permiten la utilización de namespaces [XML-NS], permiten el manejo de datataypes complejos y simples, así como la posibilidad de que el usuario defina sus propios tipos, además mecanismos como la herencia para elementos y atributos, y otras características por lo que en este documento se estudia (cuando es posible) las especificaciones presentadas en XML-Schema. Por un estudio detallado se recomienda ir a la especificación [XML-Schema] o a los requerimientos iniciales de diseño [XML-SCH99]. En su comienzo, se plantearon distintos esquemas en distintos ámbitos de aplicación. Una reseña simple es: XML-Schema XDR, XML-Data Document Content Description, DCD Schema Object-Oriented XML, SOX Document Structure Description, DSD REgular LAnguage description for XML, RELAX Schematron Por mas datos y comparaciones se puede ir a [XML SCH- Comp], que realiza un estudio interesante de expresividad de los distintos esquemas para implementaciones de base de datos. C. Desarrollo y Herramientas No se quería dejar esta introducción a XML sin nombrar algunas de las herramientas disponibles para su manejo. BROWSERS En primer lugar se tiene a los visualizadores, en general los browsers permiten ver la información estructurada de un documento XML de forma gráfica. Internet Explorer 6 Muestra directamente documentos XML. Maneja XML en lenguajes de scripting (JScript, VBScript) Liga XML con ActiveX Data Object (ADO). Integración de XML en las aplicaciones Office Netscape Navigator 6 y Mozilla 1.3 Muestra directamente documentos XML. Maneja XML en lenguajes de scripting (Javascript). Soporta el lenguaje XUL (XML-based User Interface Language), que permite configurar controles en el navegador. Usa MathML para mostrar formulas matemáticas. Jumbo Muestra directamente documentos XML. Usa CML para dibujar moléculas. EDITORES Para crear o modificar documentos XML se tiene a los editores. Editor de texto - vi, emacs, notepad Editores de XML Adobe FrameMaker, XML Pro, XML Writer, xmlwriter.net XMLNotepad, msdn.microsoft.com/xml/notepad/ XMetal from SoftQuad, xmetal.com XML Spy, Algunos de ellos, permiten inclusive edición grafica de documentos XML, DTD y XSD (Schema), muy útil para el diseño. VALIDADORES Existen una serie de validadores de XML disponibles en la red. XML.com's Validator based on Lark Language Technology Group at the University of Edinburgh's validator based on the RXP Parser Scholarly Technology Group at Brown University's validator PARSEADORES Los parseadores de XML tienen que leer el documento XML, chequear que esa bien-formado y validarlo. Expat, parser written in C by James Clark. XML for Java (XML4J), from IBM Alphaworks Lark, written in Java Apache Xerces XP by James Clark Oracle XML Parser technet.oracle.com/tech/xml Sun Microsystems Project X java.sun.com/products/xml TRANSFORMADORES La necesidad de transformar el documento XML en otro formato (por ejemplo.txt o.pdf) es muy común, por eso se desarrollaron una serie de estándares y herramientas. Por supuesto que es muy utilizada la posibilidad de parsear el documento y luego transformarlo, pero lo que se describe en este punto son métodos sin la necesidad de implementación.

7 Interoperabilidad, Monografía 7 extensible Stylesheet Language, XSL [XSL] permite especificar como desplegar cada tag. Diferentes documentos XSL pueden ser usados para desplegar los mismos datos en forma diferente, para usos diferentes. Un ejemplo de su utilización se muestra más adelante en este documento, transformando fácilmente de GraphML a Heidi (Ver: Herramientas Particulares de GraphML). Extensible Style Language-Transformations, XSLT [XSLT] es un lenguaje para la transformación de documentos XML en otros documentos XML. XSLT forma parte de XSL y al igual que este, incluye un vocabulario XML para especificar formatos. Una transformación expresada en XSLT, básicamente describe reglas para la transformación de un árbol origen a un árbol destino (donde los elementos del árbol fuente pueden ser filtrados, reordenados, añadido de estructuras arbitrarias, etc.). Extensible Style Language-Formatting Objects, XSL- FO, es un conjunto de herramientas de desarrollo y diseños Web para especificar la visualización de un documento (incluye XHTML). Muy utilizado para convertir a formatos complejos como.pdf o imágenes. Por supuesto que todas las herramientas antes mencionadas (visualizadores, editores, validadores, parseadores y transformadores) se encuentran consolidadas en cómodos entornos. Uno de los mas completos es XMLSpy, el cual se utiliza en este estudio. API S Finalmente, las API s permiten manipular y parsear los documentos XML en algún lenguaje de programación. Existen API s consolidadas para Java, C, C++ y Perl. La interfaz que ofrecen se pueden clasificar en dos estilos SAX (Simple API for XML) y DOM (Document Object Model). SAX es un framework basado en eventos del tipo startdocument() y endelement() mientras que DOM provee una representación del documento XML como árbol. Sun Microsystems a desarrollado para Java JAXP (Java API for XML Parsing) una API que incluye las ventajas de ambos estilos. SAX 2.0/Java final release W3C DOM Site DOM Java Language Binding The Apache XML Project's Xerces Java Parser Sun's JAXP SAXON XSLT processor Oracle XML Developer's Kit for Java ParserAdapter Java y XML forman una combinación perfecta: Java es código portable, mientras que XML brinda datos portable. Además se dispone de las mas potentes herramientas (API: JAXP, Parser: Xerces, Processors: Saxon, Publishing Frameworks: Cocoon). V. PRINCIPALES LENGUAJES PARA LA DESCRIPCIÓN DE GRAFOS A continuación se describen brevemente las principales características de los lenguajes para intercambio de grafos: Heidi, GraphML y extensible Graph Markup and Modeling Language para su posterior comparación y análisis. A. Heidi HISTORIA. Como se dijo en la sección anterior, Heidi ("Herramienta Inteligente para el Diseño de Redes de Comunicación Confiables") es mucho más que un lenguaje para intercambio de grafos, pero a los efectos de este documento se limita la descripción al formato de intercambio 5. Por más información se recomienda [HEIDI]. Heidi es desarrollada por el Departamento de Investigación Operativa del Instituto de Computación de la Facultad de Ingeniería de la Universidad de la R.O.U, en un proyecto financiado por el CONICYT en PROPIEDADES GENERALES Y OBJETIVOS DE DISEÑO. Como objetivo de diseño se tiene un formato de interpretación simple por parte del hombre y maquina. Se define entonces la utilización de un archivo de texto, con etiquetas (lamentablemente al momento de especificar el formato de intercambio no existía el estándar XML). La primera observación que es necesaria hacer es que dada las funcionalidades esperadas de la herramienta Heidi se define el tipo de grafo a ser utilizado, por tanto Heidi no presenta un lenguaje genérico para representar grafos necesarios en distintas realidades, sino que se limita a aquellos útiles para los problemas originales. Se vuelve sobre este punto en lo que resta de la descripción. MODELO DE GRAFO, ESTRUCTURA. Se prosigue definiendo los conceptos mas importantes del lenguaje 6. Un grafo está formado por un conjunto de nodos y un conjunto de aristas. Un conjunto de nodos es una lista de uno o mas nodos. Donde un nodo incluye una identificación, una confiabilidad, un costo y una capacidad. La identificación es básicamente un string obligatorio y único en todo el grafo, mientras que la confiabilidad, el costo y la capacidad son reales. El conjunto de aristas se encuentra formado por una o más aristas. Donde una arista incluye la identificación del nodo origen, la identificación del nodo destino, una identificación de la arista opcional, el costo, la confiabilidad y la 5 Para acceder a los archivos de intercambio de grafos se puede utilizar el Editor Grafico de Heidi, mediante las funcionalidades de exportar o importar [HEIDI97]. 6 Se supone que el lector está familiarizado con la terminología de grafos, sino se recomienda [AHO].

8 8 capacidad. Las identificaciones son strings y el resto son reales. Para visualizar todos los conceptos al finalizar la sección se introduce el siguiente ejemplo de la Figura V-1. GRAFO CONJUNTO_DE_NODOS NODO identificación de un nodo arbitrario n1 su confiabilidad su costo su capacidad FINNODO NODO identificación de un nodo arbitrario n2 su confiabilidad su costo su capacidad FINNODO FINCONJUNTO CONJUNTO_DE_ARISTAS ARISTA identificación del nodo 1 de incidencia identificación del nodo 2 de incidencia identificación de una arista arbitraria a1 su costo su confiabilidad su capacidad FINARISTA FINCONJUNTO FINGRAFO No es posible especificar hiperaristas o puertos. Una hiperarista es un subconjunto de nodos, juntos con una clasificación de esos nodos dentro de entradas, salidas o ninguna de las dos. Un puerto es la parte de un nodo donde una arista puede amarrarse (por ejemplo para circuitos eléctricos, un nodo puede ser un chip, y los puertos son las patas de dicho chip). Sobre estos puntos se va a volver más de una vez, en el resto de los lenguajes y en el comparativo. ESPECIFICACIÓN. Intentando dar más formalidad a la definición del lenguaje en el esquema de la Figura V-2 se expresa la sintaxis en notación BNF, según [HEIDI97]: Caracteres entre comillas significan caracteres terminales, palabras entre <> significan caracteres no terminales, x+ es una secuencia de uno o mas x, x* es una secuencia de cero o mas x, x? significa que x puede estar o no y es el valor vacío. Figura V-1 Ejemplo de grafo simple representado en Heidi. A partir de la descripción anterior 7 es importante resaltar algunas particularidades (útiles para su posterior comparación) que determinan algunas características de expresividad del lenguaje: La confiabilidad, el costo y la capacidad son opcionales. Si no existen, en su lugar hay un renglón vacío, que se resuelve en las aplicaciones con valores por defecto u otra acción. Es posible crear loops y multiaristas, por tanto el grafo de HEIDI en realidad es un multigrafo. No es posible distinguir entre grafos orientados de no orientados. Menos aun es posible especificar algunas aristas dirigidas y otras no dentro de un mismo grafo, por tanto no presenta el concepto de multigrafo mixto. No es posible especificar mas de un grafo dentro del mismo documento en Heidi, menos aun expresar grafos anidados (un grafo anidado es un grafo que ocurre dentro de un elemento de otro grafo, por ejemplo dentro de un nodo o una arista). Datos Extendidos: No es posible agregar datos específicos de la aplicación. Por ejemplo si los nodos especifican paginas Web y las aristas hipervínculos, no es posible agregar datos sobre las paginas más allá de un identificador, su costo, confiabilidad y capacidad; siendo entonces necesaria una estructura de datos extra para guardar información asociada. 7 Algunas de las características se extraen del estudio del editor de grafos desarrollado como parte del proyecto Heidi [HEIDI97].

9 Interoperabilidad, Monografía 9 <Grafo> <setnodos> <listanodos> ::= 'GRAFO' <setnodos> <setaristas> 'FINGRAFO' ::= 'CONJUNTO DE NODOS' <listanodos> 'FINCONJUNTO' ::= 'NODO' <id_nodo> <num> <num> <num> 'FINNODO' <listanodos> 'NODO' <id_nodo> <num> <num> <num> 'FINNODO' <id_nodo> ::= <ident> <setaristas> ::= 'CONJUNTO DE ARISTAS' <listaristas> 'FINCONJUNTO' <listaristas> ::= <listaristas> 'ARISTA' <id_nodo> <id_nodo> <id_arista> <num> <num> <num> 'FINARISTA' <id_arista> ::= <ident> <ident> ::= ['0'-'9' 'a'-'z' 'A'-'Z' ' _'] + <num> ::= '-'? ['0'-'9']'.'?['0'-'9']* Figura V-2 Definición del lenguaje Heidi en notación BNF. HERRAMIENTAS PARTICULARES Una serie de herramientas fueron probadas durante el transcurso de este proyecto, todas basadas en nuevas tecnologías XML. A pesar de que no se probaron herramientas especificas de Heidi se aprovecha la oportunidad para citar algunas que pueden ser particularmente útiles en un contexto general (no se incluye la propia herramienta Heidi). GraphDraw Sistema sencillo para el dibujado interactivo de grafos en Internet. Basado en Java, de uso público y código disponible es una herramienta que implementa varios algoritmos para la visualización de grafos. De forma muy sencilla puede probarse esta herramienta con un navegador (usando applet) en: Incluye la posibilidad de ingresar grafos en formatos sencillos (matriz de adyacencia, etc.) para ser visualizados por los distintos algoritmos. Yacc y Lex Yacc (Yet Another Compiler-Compiler) y Lex (Lexical Analyzer Generator) son herramientas generales para leer y escribir respectivamente un lenguaje especifico [YACC&LEX]. Siendo utilizadas desde 1975, en particular pueden resultar muy útiles como parseadores genéricos del lenguaje Heidi. Tienen manejo de errores, ambigüedades y conflictos. Por una introducción a estas herramientas se recomienda A continuación se presenta una especificación para el lenguaje de intercambio Heidi en yacc (ver Figura V-3) y lex (ver Figura V-4), desarrollada por R. Cardozo, F. Berruti, P. Pereyra como parte de su trabajo en el Departamento de Investigación Operativa del Instituto de Computación de la Facultad de Ingeniería de la Universidad de la R.O.U. [HEIDI97]. %{ %} %token _GRAFO _CONJUNTODENODOS _NODO _FINNODO _FINCONJUNTO %token _ID _ERROR _NUMBER _NL %token _CONJUNTODEARISTAS _ARISTA _FINARISTA _FINGRAFO /*El token _NL es un New Line)*/ %% grafo: _GRAFO _NL setnodos setaristas _FINGRAFO _NL _ERROR ; setnodos: _CONJUNTODENODOS _NL listanodos _FINCONJUNTO _NL ; listanodos: _NODO _NL id _NL num _NL num _NL num _NL _FINNODO _NL listanodos _NODO _NL id _NL num _NL num _NL num _NL _FINNODO _NL ; setaristas: _CONJUNTODEARISTAS _NL listaaristas _FINCONJUNTO _NL ; listaaristas: /*nada*/ listaaristas _ARISTA _NL id _NL id _NL id _NL num _NL num _NL num _NL _FINARISTA _NL ; num: /* nada */ _NUMBER ; id : /* nada */ _ID ; %% Figura V-3. Yacc para Heidi. %{ %} %s nut nut1 edge edge1 edge2 edge3 %% <nut>\n {BEGIN nut1; return (_NL); } <edge>\n {BEGIN edge1; return (_NL); } <edge1>\n {BEGIN edge2; return (_NL); } <edge2>\n {BEGIN edge3; return (_NL); } \n {BEGIN 0; return (_NL); } [\t ] {} <nut1,edge1,edge2,edge3>[0-9a-za-z_]+ {return (_ID);} "-"?[0-9]+"."?[0-9]* {return (_NUMBER);} GRAFO {return(_grafo);} "CONJUNTO DE NODOS" {return(_conjuntodenodos);} NODO { BEGIN nut; return(_nodo); } FINNODO {return(_finnodo);} FINCONJUNTO {return(_finconjunto);} "CONJUNTO DE ARISTAS" {return(_conjuntodearistas);} ARISTA { BEGIN edge;

10 10 return(_arista); } FINARISTA {return(_finarista);} FINGRAFO {return(_fingrafo);}. {return (_ERROR);} %% Figura V-4. Lex para Heidi. B. GraphML HISTORIA. El proyecto de GraphML fue iniciado en el comité Graph Drawing Steering Committee previo al Graph Drawing 2000 de Williamsburg. Un taller sobre formatos de archivos se mantuvo en las vísperas del simposio, y se acordó formar un grupo que defina un nuevo formato de grafo basado en XML para que sea estándar en la comunidad de dibujo de grafos y sus cooperadores. Una propuesta de la capa de estructura fue presentado en el siguiente simposio Graph Drawing Symposium de Viena. [GraphML] El principal predecesor de GraphML es GML, GML fue el resultado de una iniciativa que comenzó en el Graph Drawing 1995 en Passau y finalizó en el Graph Drawing 1996 de Berkeley. GML es todavía uno de los principales formato de grafos soportado por muchos sistemas de dibujo [GML]. PROPIEDADES GENERALES Y OBJETIVOS DE DISEÑO GraphML es un formato comprensible y fácil de usar para especificar grafos. Consta de: un corazón de lenguaje capaz de describir las propiedades estructurales de un grafo, y un mecanismo flexible de extensiones para agregar información específica de cada aplicación. En particular, las extensiones pueden ser libremente combinadas o ignoradas sin afectar los datos pertinentes al grafo en sí mismo. La información de despliegue o dibujo son incluidas como extensiones, por tanto se encuentra separado lo que son los datos del grafo de lo que son otras informaciones pertinentes a cada aplicación. Este es un requerimiento esencial, considerando la omnipresencia del modelo de grafos en un numero muy importante de disciplinas, y siendo impensado la existencia de un formato general único monolítico. Algunas características surgen de esta breve descripción, en primer lugar parece ser un estándar motivado por el dibujo de grafos, por tanto es parecido en cierto sentido a los objetivos de SVG [SVG], el cual fue descartado en una instancia temprana de este análisis por no adaptarse completamente a las necesidades y ser una complicación al momento de utilizarlo en algoritmos donde no son útiles ninguna de las propiedades de dibujo. Sin embargo la diferencia esta en que permite fácilmente agregar nuevos atributos, y como se verá mas adelante, la estructura de muy simple interpretación no incluye obligatoriamente las propiedades de despliegue, por tanto lo que en principio parecía una desventaja en realidad es una ventaja: porque este estándar permite especificar un grafo con únicamente las propiedades útiles para los algoritmos y posteriormente especificar la visualización con alguna herramienta de las herramientas disponibles (ver sección de herramientas). Una de las aplicaciones mas importante para las cuales fue diseñado GraphML, es como lenguaje canónico para el intercambio de grafos con el fin de utilizar servicios de dibujado, como los emergentes Web-Services [SOAP]. Pero como va a quedar claro a lo largo de esta introducción este concepto puede extenderse y el lenguaje no presenta ninguna limitante para ser el lenguaje canónico de intercambio de grafos para el área de Investigación Operativa. El objetivo final de diseño se resume en la siguiente frase [GraphML02]: El formato de intercambio de grafos debe poder representar grafos arbitrarios con información adicional arbitraria, incluyendo información de layout y visualización. La información adicional debe poder ser guardada en un formato apropiado para la aplicación especifica, pero no debe complicar o interferir con la representación de datos para otras aplicaciones... Los objetivos específicos del diseño de GraphML son, según [GraphML02]: Simplicidad: El formato debe ser fácil de interpretar y parsear por ambos hombre y maquina. Por supuesto que además no debe existir ambigüedad en un documento en formato GraphML bien definido. Generalidad: No debe haber restricciones en el modelo de grafos, es decir, hipergrafos, grafos jerárquicos, etc. deben ser posibles de expresar en el formato básico. Extensibilidad: debe ser posible extender el formato para representar información adicional necesaria por aplicaciones arbitrarias o uso mas sofisticado, como por ejemplo enviar un pseudocódigo de algoritmo junto con el grafo, algo muy útil para la disciplina de Investigación operativa. Estas extensiones deben mantener el grafo bien formado, en el sentido de que cumpla con el lenguaje. Robustez: Uno de los problemas de las especificaciones muy ambiciosas es que son difíciles de implementar y por tanto de utilizar en aplicaciones sencillas, uno de los objetivos del lenguaje es permitir que los sistemas que no manejan la especificación de forma completa (por ejemplo un sistema no permite la existencia de hipergrafos) o información extendida del modelo, puedan de todas formas de manera sencilla reconocer y extraer el subconjunto del modelo que ellos pueden manejar. Una decisión de diseño importante fue la separación en dos capas de información: por un lado la estructura del grafo, y por otro los datos de aplicación especifica, topología, geometría y visualización. La Figura V-5 muestra esta separación, donde la estructura del grafo representa los datos del grafo en sí mismo, denotado para el lenguaje GraphML como multigrafo mixto. El resto de la información, como por ejemplo la información de

11 Interoperabilidad, Monografía 11 visualización (topología, geometría y gráficos), son incluidas en forma de extensiones. Figura V-5. Diagrama de Diseño de GraphML. Otra decisión de diseño, considerando los objetivos específicos, no hay discusión en que se utilice XML (extensible Markup Language) [XML], recordar las ventajas señaladas en el capitulo de Perspectiva Histórica, donde se resaltan para este caso la utilización de Web- Services y la disponibilidad de herramientas publicas. En primera instancia se especificó usando DTD, en la actualidad existe una versión de XML Schema que es presentada en la siguiente sección. MODELO DE GRAFO, ESTRUCTURA Un grafo para el modelo de datos representado por el lenguaje GraphML recibe el nombre de multigrafo mixto etiquetado, y puede incluir opcionalmente puertos, hiperaristas y anidamientos. Las principales características soportadas son: grafos dirigidos, no dirigidos y mixtos, hipergrafos y grafos anidados. Antes de detallar la especificación se determina mejor cada uno de estos conceptos mediante un ejemplo sencillo extraído de [GraphML02]. Multigrafo Mixto Un multigrafo es un grafo que puede contener loops y multiaristas. Un multigrafo mixto, es un multigrafo que puede contener aristas dirigidas y no dirigidas. Un multigrafo mixto es el modelo de grafo mas simple que se puede expresar en el lenguaje GraphML. Un documento de GraphML puede contener cualquier cantidad de grafos, los grafos son elementos representados por el marcador <graph>. Un grafo es una lista simple de nodos y aristas. Los nodos y las aristas tienen marcadores <node> y <edge> respectivamente. Los nodos y las aristas pueden aparecer en cualquier orden dentro del <graph>. El atributo obligatorio de XML edgedefault de <graph> especifica cuando una arista es dirigida o no dirigida por defecto. Un atributo opcional directed de <edge> puede ser usado para sobrescribir el valor por defecto. Una arista referencia a los nodos de origen y destino, sin importar si es dirigido o no. <graph edgedefault="directed"> <desc>this is a mixed multigraph</desc> <node id="v1"/> <node id="v2"/> <node id="v3"/> <node id="v4"/> <edge source="v1" target="v2"/> <edge source="v1" target="v3"/> <edge source="v2" target="v4"/> <edge source="v2" target="v4" directed="false"/> Figura V-6. Ejemplo de multigrafo mixto representado en GraphML. Puerto Un puerto, especificado por el marcador <port>, es un subconjunto de relaciones incidentes a un nodo, y puede ser visto como la parte de un nodo donde una arista puede amarrarse (por ejemplo para circuitos eléctricos, un nodo puede ser un chip, y los puertos son las patas de dicho chip). En GraphML un <port> es un elemento que debe ser anidado dentro de un <node> y una <edge>, expresando la correspondencia de que arista se conecta a que puerto de que nodo de forma explicita. <graph edgedefault="directed"> <desc>mixed multigraph with node ports</desc> <node id="v1"> <port name="north"/> <port name="east"/> </node> <node id="v2"/> <node id="v3"/> <node id="v4"/> <edge source="v1" sourceport="east" target="v2"/> <edge source="v1" target="v3"/> <edge source="v2" target="v4"/> <edge source="v2" target="v4" directed="false"/> Figura V-7. Ejemplo de puerto representado en GraphML. Hiperarista Una hiperarista es un subconjunto de nodos, juntos con una clasificación de esos nodos dentro de entradas, salidas o ninguna de las dos.

12 12 El marcador <hyperedge> de GraphML puede contener cualquier cantidad de <endpoint>, que a su vez, refiere a nodos <node>, clasificando esos nodos usando el atributo XML type. Hiperaristas son generalizaciones de aristas, y las aristas podrían ser representadas como hiperaristas (la opción de mantener separada las aristas de las hiperaristas es para facilitar la tarea a las aplicaciones que no manejan hiperaristas) <graph edgedefault="directed"> <desc>mixed multigraph with a nested graph</desc> <node id="v1"/> <node id="v2"/> <node id="v3"> <graph id="g8local"> <locator xlink:href="http://domain.tld/graphs.xml#g8"/> </node> <node id="v4"/> <edge source="v1" target="v2"/> <edge source="v1" target="v3"/> <edge source="v2" target="v4"/> <edge source="v2" target="v4" directed="false"/> Figura V-9. Ejemplo de anidamiento representado en GraphML. <graph edgedefault="directed"> <desc>mixed multigraph with a hyperedge</desc> <node id="v1"/> <node id="v2"/> <node id="v3"/> <node id="v4"/> <edge source="v1" target="v2"/> <edge source="v1" target="v3"/> <edge source="v2" target="v4"/> <edge source="v2" target="v4" directed="false"/> <hyperedge> <endpoint node="v1" type="out"/> <endpoint node="v2" type="in"/> <endpoint node="v4"/> </hyperedge> Figura V-8. Ejemplo de hiperarista representado en GraphML. Anidamiento Un grafo anidado es un grafo que ocurre dentro de un elemento de otro grafo. Hay muchos modelos de grafos jerárquicos, por ejemplo permitiendo mas de un grafo anidado por elemento, o grafos anidados en mas de un elemento. En GraphML cada elemento de un grafo, es decir: <node>, <edge>, o <hyperedge> pueden contener un <graph> anidado. Esta es una forma simple y general de contemplar todas las variantes para el concepto de jerarquía en grafos. Para poder expresar grafos contenidos en más de un elemento es necesario utilizar el elemento <locator>. De forma general, el lenguaje GraphML no hace distinción de adyacencia entre tipos de objetos, por tanto soporta aristas entre grafos, aristas entre elementos de grafos en distintos nivel de anidamiento, etc. Dejando a la aplicación eliminar las inconsistencias que esto provoque en cada caso. <?xml version="1.0" standalone="no"?> <!DOCTYPE graphml SYSTEM "graphml.dtd"> <graphml> <graph edgedefault="directed"> <desc>the entire example graph</desc> <node id="v1"> <port name="north"/> <port name="east"/> </node> <node id="v2"/> <node id="v3"> <graph id="g8"> <locator xlink:href="http://domain.tld/graph.xml#g8"/> </node> <node id="v4"/> <edge source="v1" sourceport="east" target="v2"/> <edge source="v1" target="v3"/> <edge source="v2" target="v4"/> <edge source="v2" target="v4" directed="false"/> <hyperedge> <endpoint node="v1" port="north" type="out"/> <endpoint node="v2" type="in"/> <endpoint node="v4"/> </hyperedge> </graphml> Figura V-10. Ejemplo general de grafo representado en GraphML.

13 Interoperabilidad, Monografía 13 Datos Extendidos Como se adelanto en la sección de diseño, es posible incluir información adicional específica de cada aplicación en un documento GraphML. El lenguaje GraphML incluye la posibilidad de especificar significado y tipo de contenido para estas extensiones. El mecanismo utilizado para realizar dicha extensión permite que los parseadores utilicen estos datos y chequeen una buena sintaxis. Múltiples extensiones pueden combinarse libremente, y las extensiones no tienen que ser soportadas por todos los parseadores, puesto que los mismos pueden obviar de plano el subárbol con raíz <data>. Los datos extras deben ser ubicadas en lugares bien definidos del documento. Estas ubicaciones están definidas con la ayuda de los marcadores <key> y <data>. Tres tipos de extensiones distintas pueden ser utilizadas: datos no estructurados, estructurados y datos tipados. Datos no estructurados: Datos etiquetados son considerados como una función parcial que asigna valores en un rango arbitrario a elementos de un grafo (que usualmente tiene el mismo tipo) Por ejemplo, los costos o pesos asociados a las aristas, pueden verse como una función del conjunto de aristas a los números reales. Para cada una de estas funciones, GraphML requiere el tag <key> con un nombre y un dominio. Un contenido opcional del marcador <key> es el valor por defecto de la función. Cada elemento de la capa estructural de GraphML (excepto <locator>) puede contener cualquier cantidad de marcadores <data> referenciando a su <key>, es decir, la función que provee un valor. Si no se especifica el marcador <data> en un elemento del dominio de <key>, entonces se asigna el valor por defecto. A menos que se explicite, el rango de las etiquetas no esta restringido (es decir, #PCDATA). Datos estructurados: Contenido estructurado puede definirse de forma muy similar a los datos no estructurados, utilizando los marcadores <data> y <key>. El mecanismo es redefiniendo el tipo complejo data-extension.type que es una extensión del tipo data.type. Por defecto dataextension.type es vacío 8. Datos tipados: Otra necesidad para las extensiones es la posibilidad de que las mismas sean tipadas. Con el mecanismo de extensión planteado es posible dotar de tipos complejos a los datos <data>. Dos <data> pueden tener el mismo tipo, si tienen el mismo <key>. A futuro se espera una integración con GXL (Graph Exchange Language)[GXL], y una implementación de capa de visualización que haga uso de la especificación SVG (Scalable Vector Graphics) [SVG]. Ninguno de las dos trabajos parece haberse realizado, por mas que ha pasado el tiempo suficiente. ESPECIFICACIÓN En esta sección se intenta mostrar, de forma un poco mas formal, la especificación del lenguaje GraphML. Parte de la documentación se encuentra basada en la documentación generada automáticamente por la herramienta XMLSpy. La estructura de GraphML se encuentra especificada en graphml-structure.xsd. Los atributos que son extensiones particulares a los datos estándares son incluidos en graphmlattributes.xsd. Además existe un esquema, graphmlparseinfo.xsd, que incluye la información adicional necesaria para parsear las extensiones permitidas sobre el lenguaje GraphML, como por ejemplo cantidad de nodos y aristas de un grafo, grado de un nodo, etc. En este sección se describe la estructura, es decir, exclusivamente el esquema graphml-structure.xsd. La estructura de marcadores (tags) para el lenguaje GraphML es esquemáticamente la siguiente: graphml desc key desc data graph desc data node desc data port graph edge desc data graph hyperedge desc data endpoint desc graph locator Figura V-11. Árbol de GraphML. <graphml> El elemento <graphml> es la raíz de cada archivo de GraphML. Un archivo de GraphML puede contener un único elemento <graphml>. <graphml> esta formado por los siguientes elementos: <desc> una descripción opcional del documento (opcional), <key> el conjunto de claves que son utilizadas en el documento (opcional), <data> extensiones de datos definidos para el elemento graphml, y <graph> una lista de grafos. 8 En una primera instancia el mecanismo para la extensión de tipos de datos era distinto, puesto que los XML Schema no permitían este tratamiento. La definición estaba dada por DTD s solamente.

14 El único atributo que debe tener un nodo es el id (para luego ser referenciado por las aristas). 14 Figura V-12. Especificación de <graphml> en GraphML. <graphml> no tiene atributos. <graph> Un grafo <graph> esta constituido por una lista de nodos, aristas y hiperaristas. Los elementos nodo, arista e hiperarista pueden aparecer en cualquier orden y cantidad. <graph> esta formado por los siguientes elementos: <desc> una descripción opcional del documento (opcional), <data> extensiones de datos para el elemento grafo (opcional) (lista de cero o más), <node> un nodo del grafo (lista de cero o más), <edge> una arista del grafo (lista de cero o más), <hyperedge> una hiperarista del grafo (lista de cero o más), <locator> apunta a la definición del grafo actual, si este elemento se omite se considera que la definición se da en el propio contenido. Los atributos para un grafo son: Id: un grafo puede tener un identificador para ser referenciados en otro lugar del documento (opcional), Edgedefault: define el valor por defecto para las aristas, si son dirigidas o no. El valor por defecto para edgedefault es dirigido (opcional). Figura V-13. Especificación de <graph> en GraphML. <node> Un nodo <node> esta constituido por los siguientes elementos: <desc> una descripción opcional del nodo (opcional), <data> Extensión opcional de datos para un nodo (opcional) (lista de cero o más), <port> para aplicaciones que requieren agrupar los nodos incidentes sobre un nodo, el nodo debe contener definido los puertos. <graph> Un conjunto opcional de subgrafos de este nodo, para expresar anidamiento de grafos. Figura V-14. Especificación de <node> en GraphML. <edge> Las aristas <edge> son incidentes desde un nodo fuente a un nodo destino (sin importar si el grafo es dirigido o no), mas precisamente se puede especificar un puerto fuente o un puerto destino para especificar donde debe amarrarse precisamente la arista al nodo. Una arista incluye los siguientes elementos: <desc> una descripción opcional de la arista (opcional), <data> Extensión opcional de datos para una arista (opcional) (lista de cero o más), <graph> Un conjunto opcional de subgrafos de esta arista, para expresar anidamiento de grafos (al igual que un nodo, una arista también puede contener un grafo). Una arista tiene los siguientes atributos: Id: una identificación de la arista (a diferencia de los nodos, la identificación para las aristas es opcional) Source: especifica el id del nodo de origen. El id tiene que ser un id valido. Target: especifica el id del nodo de destino. El id tiene que ser un id valido. Directed: especifica si la arista es dirigida o no dirigida. Sobrescribe el valor por defecto definido para todo el grafo. SourcePort: especifica el puerto de origen del nodo de origen. El valor tiene que coincidir con el valor definido en el nodo. targetport: especifica el puerto de destino del nodo de destino. El valor tiene que coincidir con el valor definido en el nodo. Figura V-15. Especificación de <edge> en GraphML. Una vista general de los elementos mas importantes descriptos anteriormente se encuentra en la Figura V-16.

15 Interoperabilidad, Monografía 15 Figura V-16. Especificación general de GraphML. HERRAMIENTAS PARTICULARES Una serie de herramientas fueron probadas durante el transcurso de este proyecto. Las que se consideran más útiles, referentes a GraphML se describen a continuación: Entorno Yfile Herramienta muy completa, de carácter comercial, incluye una librería para Java, un editor, y otras facilidades. Es posible obtener una copia de evaluación (por 30 días) en Para funcionar junto con GraphML es necesario agregarle un Plug-In, disponible en el mismo sitio y gratuito (http://www.yworks.com/en/products_yfiles_ep_graphml.htm). Esta herramienta es muy aconsejable si se quiere trabajar con GraphML, además implementa la capa de visualización de GraphML, algo que aunque prometido por los desarrolladores del estándar parece todavía no estar disponible. Editor XML Y Graph Una versión preliminar del editor de Yfiles se encuentra disponible al público sin vencimiento temporal. La pagina a cargo de Markus Eiglsperger, presenta el editor y una cantidad muy grande de ejemplos. El editor permite guardar en tres formatos GML, GraphML y YgraphFormat (propietario de Yfiles). Conversor de GraphML a Heidi Probando la potencialidad de XSL, se desarrolla la transformación (ver Figura V-17) de un documento GraphML a su equivalente Heidi (probado en el entorno de desarrollo XMLSpy) <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transfor m"> <xsl:output method="text"/> <xsl:template match="graphml"> GRAFO <xsl:apply-templates select="graph"/> FINGRAFO </xsl:template> <xsl:template match="graph"> CONJUNTO_DE_NODOS <xsl:apply-templates select="node"/> FINCONJUNTO CONJUNTO_DE_ARISTAS <xsl:apply-templates select="edge"/> FINCONJUNTO </xsl:template> <xsl:template match="node"> NODO <xsl:value-of FINNODO </xsl:template> <xsl:template match="edge"> ARISTA <xsl:value-of <xsl:value-of <xsl:value-of

16 16 FINARISTA </xsl:template> </xsl:stylesheet> Figura V-17. Transformación de GraphML a Heidi. La transformación aquí presentada no intenta ser una descripción formal de la transformación de esquemas o correspondencia semántica entre esquemas, vista desde la teoría de capacidad de la información [MIR93], sino simplemente intenta brindar una idea de la potencialidad y facilidad de uso que tienen las herramientas basadas en XML, como XSL. En particular, para que GraphML presente la misma información que Heidi, es necesario definir los datos extendidos de confiabilidad, costo y capacidad para las aristas y los nodos. Como se mostró anteriormente existen varias estrategias para agregar datos extendidos en GraphML, cada una con sus ventajas y desventajas. En este documento se intentan analizar los tres lenguajes según que tan maleables son para expresar el concepto abstracto de grafo, en este sentido queda claro que Heidi solo intenta enfrentar una aplicación particular, considerándose (lamentablemente) fuera del alcance una transformación formal entre los lenguajes. LEDA LEDA (Library of Efficient Data Types and Algorithms) [LEDA] es una librería, en C++, de tipos de datos y algoritmos comúnmente usados en combinatoria y geometría. Esta librería es muy utilizada por el departamento de Investigación Operativa, puesto que desde el punto de vista del usuario es una plataforma para la computación de problemas combinatorios y geométricos genéricos [LEDABOOK]. Se espera que LEDA incluya a la brevedad el formato de GraphML como formato de exportación/importación de datos. C. extensible Graph Markup and Modeling Language (XGMML) HISTORIA Extensible Graph Markup and Modeling Language (XGMML) [XGMML99] es una aplicación de XML 1.0 [XML] basada en Graph Modelling Language (GML) [GML] que es usada para la descripción de grafos. GML fue el resultado de una iniciativa que comenzó en el Graph Drawing 1995 en Passau y finalizó en el Graph Drawing 1996 de Berkeley. GML es todavía uno de los principales formato de grafos soportado por muchos sistemas de dibujo [GML]. La propuesta de XGMML está pensada para intercambiar grafos entre navegadores visualizadores (herramientas de cliente) y generadores de grafos (servidores). XGMML surge para el uso con el sistema WWWPal System [WWWPal], que permite visualizar sitios Web como grafos (la estructura de la World Wide Web es un ejemplo típico de grafo, donde los nodos son las paginas y los hyperlinks son las aristas). El robot de Web, webbot [WebBot], de W3C es el componente del sistema WWWPal que navega por los sitios Web y guarda la información del grafo como un documento XGMML. Una observación importante es que XGMML es diseñado por John Punin (y Mukkai Krishnamoorthy), el mismo que estuvo a cargo de la traslación de GraphML de DTD a Schema. PROPIEDADES GENERALES Y OBJETIVOS DE DISEÑO El diseño original de XGMML respeta el formato de GML y su expresividad. Sumándole todas las ventajas de interoperabilidad que presenta en XML, mencionadas en capítulos anteriores. La necesidad de XGMML surge en un proyecto específico donde se necesita una descripción visual de un subconjunto de la World Wide Web. Esto permite observar que una de las metas del diseño es incluir en el lenguaje la información de visualización. Otro requerimiento de diseño es la posibilidad de incluir información extra y arbitraria sobre los sitios Web visitados, es decir, poder agregar información al grafo, a los nodos o a las aristas. Esto es cubierto por el simple hecho de que el lenguaje es una aplicación de XML, y por tanto puede ser mezclado con otros lenguajes de marcadores, como por ejemplo RDF (Resource Description Framework) [RDF] que es el utilizado por esta propuesta. Para ofrecer generalidad, el lenguaje XGMML contempla completamente la expresividad de su antecesor GML. Un documento en GML es un conjunto de parejas clavevalor, donde las claves son identificadores como graph, node y edge y los valores son tipos de datos como números, strings, o listas. La conversión de GML a XGMML es muy simple dada la similitud de ambos lenguajes: una clave de GML se convierte en un atributo de XGMML si el valor es un numero o un string. Una clave de GML se convierte en un elemento de XGMML si el valor que toma es una lista. Se presenta formalmente la conversión entre GML y XGMML en ambos sentidos, incluyendo herramientas de carácter publico para realizar ambas conversiones. Usando extensible Stylesheet Language (XSL) [XSL] se puede convertir XGMML en otros formatos, como por ejemplo GML. graph [ comment "This is a sample graph" directed 1 id 42 label "Hello, I am a graph" node [ id 1 label "Node 1" ] node [ id 2 label "node 2" ] node [ id 3 label "node 3" ]

17 Interoperabilidad, Monografía 17 ] edge [ source 1 target 2 label "Edge from node 1 to node 2" ] edge [ source 2 target 3 label "Edge from node 2 to node 3" ] edge [ source 3 target 1 label "Edge from node 3 to node 1" ] Multigrafo Mixto En realidad el lenguaje XGMML no limita las aristas permitiendo loops y multiaristas. <?xml version="1.0"?> <!DOCTYPE graph PUBLIC "-//John Punin//DTD graph description//en" "http://www.cs.rpi.edu/~puninj/xgmml/xgmml.dtd "> <graph directed="1" id="42" label="hello, I am a graph"> <node id="1" label="node 1"></node> <node id="2" label="node 2"></node> <node id="3" label="node 3"></node> <edge source="1" target="2" label="edge from node 1 to node 2"></edge> <edge source="2" target="3" label="edge from node 2 to node 3"></edge> <edge source="3" target="1" label="edge from node 3 to node 1"></edge> Figura V-18. Ejemplo de conversión GML y XGMML. MODELO DE GRAFO, ESTRUCTURA Un documento de XGMML describe la estructura de un único grafo. Un grafo, G=(V,E), para XGMML es un conjunto de nodos V y un conjunto de aristas E. Cada arista puede ser una pareja ordenada (dirigida) o no ordenada (no dirigida) de nodos. El lenguaje XGMML especifica un multigrafo, puesto que permite aristas loops y multiarista. Además puede expresar anidamiento. El elemento raíz es <graph> y puede contener cualquier cantidad de los elementos <node>, <edge> y <att>. Los elementos <node> y <edge> describen los nodos y aristas de un grafo respectivamente y el elemento <att> se encuentra para incluir información adicional sobre el grafo. Un elemento <graph> puede incluirse dentro del elemento <att> para representar un subgrafo del grafo del documento. El elemento <graphics> puede ser incluido dentro de un nodo o una arista, y describe su representación visual. El siguiente ejemplo es un grafo con un único nodo: <?xml version="1.0"?> <!DOCTYPE graph PUBLIC "-//John Punin//DTD graph description//en" "http://www.cs.rpi.edu/ puninj/xgmml/xgmml.dtd "> <graph directed="1" id="2"> <node id="1" label="node 1"/> Figura V-19. Ejemplo de grafo simple representado en XGMML. <?xml version="1.0"?> <!DOCTYPE graph SYSTEM "../xgmml.dtd"> <graph directed="1" Graphic="1" Layout="points"> <node id="1" label="1" weight="0"> <graphics type="circle" x="250" y="90"/> </node> <node id="2" label="2" weight="0"> <graphics type="circle" x="190" y="150"/> </node> <node id="3" label="3" weight="0"> <graphics type="circle" x="330" y="150"/> </node> <node id="4" label="4" weight="0"> <graphics type="circle" x="270" y="230"/> </node> <edge source="1" target="2" weight="1"/> <edge source="1" target="3" weight="0"/> <edge source="2" target="4" weight="0"/> <edge source="2" target="4" weight="2"/> Figura V-20. Ejemplo de multigrafo representado en XGMML. No es posible especificar grafos mixtos, es decir con aristas dirigidas y no dirigidas simultáneamente. Puerto Un puerto puede ser visto como la parte de un nodo donde una arista puede amarrarse. Es posible especificar de alguna manera el concepto de puerto en XGMML, si se incluyen la especificación de visualización (es decir el elemento <graph> tiene el atributo Graphic="1"), entonces es posible especificar el atributo anchor. El atributo anchor es un enumerado que especifica la posición relativa de un objeto en la visualización. Los valores posibles son: c (center), n (north), ne (northeast), e (east), se (southeast), s (south), sw (southweast), w (west) y nw (northwest). Hiperarista No existe el concepto de hiperarista en XGMML. Anidamiento Es posible especificar anidamiento de grafos, pero utilizando la extensión de datos del elemento <att>.

18 18 <?xml version="1.0"?> <!DOCTYPE graph SYSTEM "http://www.cs.rpi.edu/~puninj/xgmml/xgmml.dtd "> <graph directed="1"> <node id="1" label="1"></node> <node id="2" label="2"></node> <node id="3" label="3"> <att> <graph directed="1"> <node id="31" label="n31"/> <node id="32" label="n32"/> <node id="33" label="n33"/> <edge source="31" target="32" weight="0"/> <edge source="32" target="33" weight="0"/> <edge source="33" target="31" weight="0"/> </att> </node> <node id="4" label="4"></node> <edge source="1" target="2" weight="1"/> <edge source="1" target="3" weight="0"/> <edge source="2" target="4" weight="0"/> <edge source="2" target="4" weight="2"/> Figura V-21. Ejemplo de anidamiento representado en XGMML. Datos Extendidos Como cualquier lenguaje que sea aplicación de XML, documentos validos de XGMML pueden incluirse dentro de otros documentos XML usando espacios de nombres (namespace) [XML-NS]. El ejemplo de la Figura V-22 es un grafo de dos nodos unidos por una arista dentro de un documento de XHTML [XHTML]: <?xml version="1.0" encoding="utf-8"?> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2000/10/xmlschema -instance" xmlns:xgmml="http://www.cs.rpi.edu/xgmml" xsi:schemalocation="http://www.w3.org/1999/sty le/transform d puninj/xgmml/xgmml.xsd" xml:lang="en"> <head> <title>graph Information</title> </head> <body> <!-- XHTML Document here --> <xgmml:graph directed="1" Graphic="1" Layout="points"> <xgmml:node id="1" label="1" weight="0"> <xgmml:graphics type="circle" x="250" y="90" /> </xgmml:node> <xgmml:node id="2" label="2" weight="0"> <xgmml:graphics type="circle" x="190" y="150" /> </xgmml:node> <xgmml:edge source="1" target="2" weight="0" /> </xgmml:graph> <!-- XHTML Document here --> </body> </html> Figura V-22. Ejemplo de datos extras en XGMML. Resource Description Framework (RDF) [RDF] es una forma de describir metadatos sobre recursos. El lenguaje XGMML puede incluir metadatos sobre grafos, nodos y aristas usando el marcador <att>. El ejemplo de la Figura V-23 describe la estructura de un sitio Web (nodos representan paginas y aristas representan hipervínculos). Datos extras sobre las paginas Web (nodos) son incluidos, utilizando RDF y el vocabulario de Dublin Core (DC) [DC]. <?xml version="1.0"?> <graph xmlns = "http://www.cs.rpi.edu/xgmml" xmlns:xsi="http://www.w3.org/2000/10/xmlschema -instance" xsi:schemalocation="http://www.cs.rpi.edu/xgmm L puninj/xgmml/xgmml.xsd" directed="1" > <node id="3" label="http://www.cs.rpi.edu/courses/" weight="5427"> <att> <rdf:rdf xmlns:rdf="http://www.w3.org/1999/02/22-rdfsyntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.0/"> <rdf:description about="http://www.cs.rpi.edu/courses/" dc:title="courses at Rensselaer Computer Science Department" M.S. requirements; CSCI-1190 Beginning C Programming for Engineers; Courses; People; Graduate Program; CSCI-4020 Computer Algorithms; CSCI Programming in Java; Research; Course Selection Guide; CSCI , CSCI Advanced Robotics; Programming in Java; CSCI-2400 Models of Computation" dc:date=" " dc:type="text" > <dc:format> <rdf:bag rdf: 1="text/html" rdf: 2="5427 bytes" /> </dc:format> </rdf:description> </rdf:rdf> </att> </node>... <edge source="1" target="3" weight="0" label="src IMG gfx/courses2.jpg" /> <edge source="7" target="3" weight="0" label="src IMG../gfx/courses2.jpg" />

19 Interoperabilidad, Monografía 19 Figura V-23. Ejemplo elaborado de datos extras en XGMML. ESPECIFICACIÓN En esta sección se intenta mostrar, de forma un poco mas formal, la especificación del lenguaje XGMML. Parte de la documentación se encuentra basada en la documentación generada automáticamente por la herramienta XMLSpy. La estructura del lenguaje XGMML se encuentra especificada en el esquema xgmml.xsd. En esta sección se describe dicho esquema. graph att att graph node att att graph graphics line point center att att graph edge att att graph graphics line point center att att graph Figura V-24. Árbol de XGMML. <graph> El elemento <graph> es la raíz de un documento XGMML valido. El elemento <graph> tiene que ser único, pero eso no implica que un documento XGMML pueda especificar un único grafo, es posible especificar varios subgrafos de la forma en que se especifican grafos jerárquicos dentro del elemento <att> del grafo. Todos los elementos de XGMML tienen atributos globales de id, name y label. El id es un numero único que identifica el elemento, el name es un string que detalla al elemento y el label es un string usado para la representación visual. Figura V-25. Especificación de <graph> en XGMML. <node> Los nodos y las aristas pueden referenciar otros documentos XGMML usando el framework Xlink [XLINK]. Los atributos de Xlink son: type, role, title, show, actuate y href, y son agregados a como atributos de nodos y aristas. Un nodo esta conformado por los siguientes elementos: <att> Extensión opcional de datos para un nodo (opcional) (lista de cero o más), <graphics> información de visualización, por ejemplo una representación de rectángulo, circulo o imagen (opcional). Figura V-26. Especificación de <node> en XGMML. <edge> Las aristas <edge> son incidentes desde un nodo fuente a un nodo destino (sin importar si el grafo es dirigido o no). La aplicación final tiene que verificar que la fuente y el destino son nodos pertenecientes al documento. Una arista esta conformada por los siguientes elementos: <att> Extensión opcional de datos para la arista (opcional) (lista de cero o más), <graphics> información de visualización, por ejemplo una representación de línea o arco (opcional). El atributo weight es usado para especificar el costo de la arista. El graph tiene un atributo, directed, de tipo booleano que especifica si todas las aristas del grafo son dirigidas o no. Figura V-27. Especificación de <edge> en XGMML. Una vista general de los elementos mas importantes descriptos anteriormente se encuentra en la Figura V-28.

20 Figura V-28. Especificación general de XGMML. HERRAMIENTAS PARTICULARES Una serie de herramientas fueron probadas durante el transcurso de este proyecto. Las que se consideran más útiles, referentes a XGMML, se describen a continuación: Conversor de XGMML a GML Utilizando XSL, la aplicación pública permite transformar de un documento XGMML a su equivalente GML. Para su utilización es necesario un procesador de XSL, los recomendados por los autores son: XT: y Saxon: Conversor de GML a XGMML Basado en el parseador de Marcus Raitner (http://www.infosun.fmi.uni-passau.de/graphlet/download/), la aplicación pública permite transformar de un documento GML a su equivalente XGMML. Su utilización es desde línea de comando, muy simple. VI. LENGUAJE CANÓNICO DE INTERCAMBIO: COMPARACIÓN DE LENGUAJES PARA LA DESCRIPCIÓN DE GRAFOS Luego del estudio particular de cada lenguaje (Heidi, GraphML, XGMML) surgen algunas diferencias y similitudes que los hacen más o menos aptos para ser utilizados como lenguaje de intercambio de grafos. En esta sección se comparan los lenguajes bajo este punto de vista, contemplando las siguientes dimensiones de análisis: objetivos de diseño, expresividad, extensión de datos, simplicidad y herramientas disponibles. OBJETIVOS DE DISEÑO En primer lugar se tienen objetivos de diseño de cada lenguaje. Heidi y XGMML surgen de necesidades especificas para aplicaciones concretas (en el caso de Heidi para representar modelos de confiabilidad y en el caso de XGMML para una descripción visual de un subconjunto de la World Wide Web). En cambio GraphML intenta ser una especificación general. Es en este contexto que la expresividad y la extensibilidad (posibilidad de extender el formato para representar información adicional) de GraphML se encuentran mejor lograda.

Análisis y Diseño de Sistemas de

Análisis y Diseño de Sistemas de Análisis y Diseño de Sistemas de Información para Internet 1. Introducción a XML Luís Rodríguez Baena (luis.rodriguez@upsam.net) Universidad Pontificia de Salamanca (campus Madrid) Facultad de Informática

Más detalles

TEMA 35: Estándares SGML y XML. Entornos de aplicación.

TEMA 35: Estándares SGML y XML. Entornos de aplicación. Entornos de aplicación TEMA 35: Estándares SGML y. Entornos de aplicación. Índice 1 INTRODUCCIÓN 1 2 SGML 2 2.1 Cómo funciona SGML? 2 2.2 Definición de la sintaxis de un lenguaje SGML 3 2.3 Declaración

Más detalles

XML. El nuevo lenguaje universal

XML. El nuevo lenguaje universal Tema: XML el nuevo lenguaje universal. Autor: Marlene Melián Montalvo Institución: CITMATEL. Este trabajo consiste en una introducción al lenguaje XML. En el mismo se da a conocer su surgimiento, definiciones

Más detalles

Capí tulo IV. Lenguajes de estilo

Capí tulo IV. Lenguajes de estilo Capí tulo IV Lenguajes de estilo Lenguajes de Estilo Hojas de estilos Mecanismos de Hojas de estilos previos a XSL Lenguaje de estilo XSL Comparación entre CSS y XSL Transformación XML/XSL en aplicativos

Más detalles

Introducción a XML - Validación y Parseo. Huibert Aalbers, Senior Certified Software IT Architect

Introducción a XML - Validación y Parseo. Huibert Aalbers, Senior Certified Software IT Architect Introducción a XML - Validación y Parseo Huibert Aalbers, Senior Certified Software IT Architect IT Insight podcast Este podcast pertenece a la serie IT Insight Pueden suscribirse al podcast a través de

Más detalles

LOS LENGUAJES DE MARCADO APLICADOS A LOS REGISTROS BIBLIOGRÁFICOS. XML MARC DTD; XML MARC SCHEMA.

LOS LENGUAJES DE MARCADO APLICADOS A LOS REGISTROS BIBLIOGRÁFICOS. XML MARC DTD; XML MARC SCHEMA. LOS LENGUAJES DE MARCADO APLICADOS A LOS REGISTROS BIBLIOGRÁFICOS. XML MARC DTD; XML MARC SCHEMA. I. INTRODUCCIÓN A LOS LENGUAJES DE MARCADO Los lenguajes de marcado, también denominados lenguajes de marcas,

Más detalles

1 Introducción a XML

1 Introducción a XML 1 Introducción a XML Introducción (I)! Qué es XML?! Últimamente todo el mundo habla sobre XML!! Dicen que es un lenguaje etiquetado...es decir: Es un lenguaje como HTML, pero con nuevas etiquetas?! Dicen

Más detalles

XML práctico Bases esenciales, conceptos y casos prácticos (2ª edición)

XML práctico Bases esenciales, conceptos y casos prácticos (2ª edición) Introducción al lenguaje XML 1. De SGML a XML 17 2. Los conceptos básicos del XML 18 2.1 Recordatorio sobre el HTML 18 2.2 Creación de un primer documento XML 19 2.3 Las ventajas del XML 21 3. La sintaxis

Más detalles

XML: extensible Markup Language (Parte I) Ingeniería de la Información

XML: extensible Markup Language (Parte I) Ingeniería de la Información XML: extensible Markup Language (Parte I) DTDs Ingeniería de la Información Tabla de Contenidos Introducción histórica XML vs. HTML Características de XML Mi primer documento XML El lenguaje XML Entidades

Más detalles

XIII Reunión de Usuarios Aleph México. MarcXML. Egar Arturo Garcia Cárdenas

XIII Reunión de Usuarios Aleph México. MarcXML. Egar Arturo Garcia Cárdenas MarcXML Egar Arturo Garcia Cárdenas Secretaría Técnica de Biblioteca Digital Dirección General de Bibliotecas Universidad Nacional Autonóma de México Septiembre de 2009 1. Antecedentes Lenguajes de Marcado

Más detalles

DAW LENGUAJES DE MARCAS. Tema 1: Reconocimiento de las características de los Lenguajes de Marcas

DAW LENGUAJES DE MARCAS. Tema 1: Reconocimiento de las características de los Lenguajes de Marcas DAW LENGUAJES DE MARCAS Tema 1: Reconocimiento de las características de los Lenguajes de Marcas Características de los Lenguajes de Marcas 1. Codificación de la información 1.1. Datos binarios 1.2. Datos

Más detalles

qué es XML? por qué es necesario XML? XML vs. SGML y HTML Hacía la estandarización de los datos

qué es XML? por qué es necesario XML? XML vs. SGML y HTML Hacía la estandarización de los datos qué es XML? Hacía la estandarización de los datos César Ignacio García Osorio Surgió para superar la complejidad de SGML y la inflexibilidad de HTML. Es un meta lenguaje de etiquetado/marcado que permite

Más detalles

Visualización y Transformaciones en XML

Visualización y Transformaciones en XML Visualización y Transformaciones en XML 106 Visualización Los archivos XLM pueden ser vistos prácticamente en cualquier browser 107 Visualización Los XML en los web browsers no se despliegan como páginas

Más detalles

TEMA 5 LA FAMILIA XML EN LA NUEVA WEB

TEMA 5 LA FAMILIA XML EN LA NUEVA WEB TEMA 5 LA FAMILIA XML EN LA NUEVA WEB La Web, tanto cuantitativa como cualitativamente, se ha desarrollado extraordinariamente siendo el objeto de este texto ubicar el papel que XML juega y va a jugar

Más detalles

extensible Markup Language

extensible Markup Language extensible Markup Language ISLN ISLN () XML 1 / 26 Librería LWP::Simple Bajarse el archivo de internet Para bajar archivos de internet se puede usar alguno de los módulos del CPAN http://search.cpan.org

Más detalles

Topicos Avanzados de Bases de Datos en la Web

Topicos Avanzados de Bases de Datos en la Web Topicos Avanzados de Bases de Datos en la Web Introducción a XML Profesor: Alejandro Vaisman 1er. Cuatrimestre, 2007 4/16/2007 1 XML XML es el lenguaje estándar para intercambiar información en la Web.

Más detalles

Transformación de modelos en el proceso de obtención de Modelos Conceptuales partiendo de BPMN

Transformación de modelos en el proceso de obtención de Modelos Conceptuales partiendo de BPMN Transformación de modelos en el proceso de obtención de Modelos Conceptuales partiendo de BPMN Fernández Taurant, Juan Pablo Marciszack, Marcelo Martín Universidad Tecnológica Nacional, Facultad Regional

Más detalles

extensible Markup Language (XML)

extensible Markup Language (XML) extensible Markup Language (XML) 1. INTRODUCCIÓN Jennifer Pérez Benedí Departamento de Sistemas Informáticos y Computación Universidad Politécnica de Valencia C/Camino de Vera s/n E-46071 Valencia- España

Más detalles

XML, Servicios Web y Web Semántica

XML, Servicios Web y Web Semántica XML, Servicios Web y Web Semántica Departamento de Informática Universidad de Oviedo Sesión 2 Lenguaje XML Departamento de Informática Universidad de Oviedo Esquema de la Sesión Introducción a XML Definición

Más detalles

Taller de Prof. Hilda Contreras. Departamento de Computación Escuela de Ingeniería de Sistemas ULA

Taller de <?XML> Prof. Hilda Contreras. Departamento de Computación Escuela de Ingeniería de Sistemas ULA Taller de Prof. Hilda Contreras Departamento de Computación Escuela de Ingeniería de Sistemas ULA Contenido 1. Introducción 2. Preparándonos para trabajar con XML 3. Documentos XML bien formados

Más detalles

EVOLUCIÓN DE LA WEB. Presentado por: Pablo E. Lozada Y. (pablo.lozada@alumnos.usm.cl)

EVOLUCIÓN DE LA WEB. Presentado por: Pablo E. Lozada Y. (pablo.lozada@alumnos.usm.cl) EVOLUCIÓN DE LA WEB Presentado por: Pablo E. Lozada Y. (pablo.lozada@alumnos.usm.cl) Contenido Historia del Internet. La Web 1.0. Definición. Características. La Web 2.0. Definición. Tecnologías de la

Más detalles

M. Carmen Fernández Panadero

M. Carmen Fernández Panadero <mcfp@it.uc3m.es> Introducción n a XML M. Carmen Fernández Panadero Introducción a XML 1 Objetivos Familiarizarse con conceptos y herramientas básicas de XML Conocer la estructura de un documento XML Ser capaz de diseñar

Más detalles

Introducción a XML. Taller de Producción de Software 2º Semestre 2008 H.Astudillo / P.Inostroza

Introducción a XML. Taller de Producción de Software 2º Semestre 2008 H.Astudillo / P.Inostroza Taller de Producción de Software 2005 Introducción a XML Taller de Producción de Software 2º Semestre 2008 H.Astudillo / P.Inostroza Indice Qué es XML? Breve Historia de XML Anatomía de un Documento XML

Más detalles

CUALIFICACIÓN SISTEMAS DE GESTIÓN DE INFORMACIÓN PROFESIONAL. Nivel 3. Versión 5 Situación RD 1201/2007 Actualización

CUALIFICACIÓN SISTEMAS DE GESTIÓN DE INFORMACIÓN PROFESIONAL. Nivel 3. Versión 5 Situación RD 1201/2007 Actualización Página 1 de 16 CUALIFICACIÓN SISTEMAS DE GESTIÓN DE INFORMACIÓN PROFESIONAL Familia Profesional Informática y Comunicaciones Nivel 3 Código IFC304_3 Versión 5 Situación RD 1201/2007 Actualización Competencia

Más detalles

Programación orientada a

Programación orientada a Programación orientada a objetos con Java Pedro Corcuera Dpto. Matemática Aplicada y Ciencias de la Computación Universidad de Cantabria corcuerp@unican.es Objetivos Presentar los conceptos de la programación

Más detalles

Primeros pasos con XML y XSL Ricardo Borillo Domenech

Primeros pasos con XML y XSL Ricardo Borillo Domenech Primeros pasos con XML y XSL Ricardo Borillo Domenech Table of Contents 1.Apartadosprincipales...1 2. Introducción al lenguaje de marcas XML... 2 3. Estructura de los documentos: DTDs... 2 3.1. Asociar

Más detalles

Índice. HTML HyperText Markup Language. Conceptos básicos. Qué es HTML? Diseño de servicios Web HTML 1

Índice. HTML HyperText Markup Language. Conceptos básicos. Qué es HTML? Diseño de servicios Web HTML 1 Índice HTML HyperText Markup Language Conceptos básicos Historia y evolución de HTML XHTML vs. HTML HTML dinámico Hojas de estilo (CSS) DOM Diseño de servicios Web 2 DATSI Qué es HTML? Lenguaje de publicación

Más detalles

Práctica de introducción a

Práctica de introducción a Práctica de introducción a XML El trabajo consiste en una introducción al uso del lenguaje XML y su aplicación en documentos y sistemas de caracteristicas multimedia. 1.- Qué es XML? XML (extensible Markup

Más detalles

Fundamentos de las tecnologías de la información

Fundamentos de las tecnologías de la información Fundamentos de las tecnologías de la información la guerra de los formatos Diego Martín 2016 1 Definiciones W3C HTML CSS XML Introducción histórica HTML vs XML JSON XML vs JSON DTDsy XML SCHEMAs Qué formato

Más detalles

El XBRL y sus aportes al intercambio de información financiera

El XBRL y sus aportes al intercambio de información financiera Universidad ORT Uruguay Facultad de Ingeniería El XBRL y sus aportes al intercambio de información financiera Entregado como requisito para la obtención del título de Licenciado en Sistemas Carlos Rial

Más detalles

IES Pablo Serrano-ASIR1D/DAM1D-B.Soler XML

IES Pablo Serrano-ASIR1D/DAM1D-B.Soler XML IES Pablo Serrano-ASIR1D/DAM1D-B.Soler Contenidos 1. Introducción 2. Quién ha creado? 3. Definición según W3C 4. Qué es? 5. Objetivos 6. Para qué sirve? 7. Con ya vale? 8. Tecnologías asociadas 9. Familia

Más detalles

Tema 4 Metadatos. Eduardo Martínez Graciá Humberto Martínez Barberá

Tema 4 Metadatos. Eduardo Martínez Graciá Humberto Martínez Barberá Tema 4 Metadatos Eduardo Martínez Graciá Humberto Martínez Barberá Departamento de Ingeniería de la Información y las Comunicaciones Universidad de Murcia Metadatos Definición: datos sobre datos Fichero:

Más detalles

3.1 Tipos de DTDs. ! Si queremos validar un documento XML (para comprobar si cumple las normas de un dialecto) tendremos que validarlo contra el DTD.

3.1 Tipos de DTDs. ! Si queremos validar un documento XML (para comprobar si cumple las normas de un dialecto) tendremos que validarlo contra el DTD. 3.1 Tipos de DTDs Introducción (I)! El DTD es un documento que nos permite definir un dialecto XML.! DTD " Document Type Definition! Si queremos validar un documento XML (para comprobar si cumple las normas

Más detalles

CAPITULO 1 INTRODUCCION

CAPITULO 1 INTRODUCCION CAPITULO 1 INTRODUCCION 1.1 Sistemas de Información Geográfica Los sistemas de información geográfica, SIG (GIS, siglas en inglés), se refieren a sistemas que nos proporcionan y combinan capas de información

Más detalles

6.1 APIs para XML. APIs para XML (I) ! Uno de los usos más habituales de XML (y menos esperado) es como formato de intercambio de datos.

6.1 APIs para XML. APIs para XML (I) ! Uno de los usos más habituales de XML (y menos esperado) es como formato de intercambio de datos. 6.1 APIs para XML APIs para XML (I)! Uno de los usos más habituales de XML (y menos esperado) es como formato de intercambio de datos.! En este caso los documentos XML nunca llegan a visualizarse, sino

Más detalles

Tecnologías XML y Web Semántica. Departamento de Informática Universidad de Oviedo

Tecnologías XML y Web Semántica. Departamento de Informática Universidad de Oviedo Tecnologías XML y Web Semántica Departamento de Informática Universidad de Oviedo Sesión 1 Lenguaje XML Departamento de Informática Universidad de Oviedo Esquema de la Sesión (9-11h) Primera parte: Introducción

Más detalles

Búsqueda sobre catálogos basada en ontologías

Búsqueda sobre catálogos basada en ontologías Búsqueda sobre catálogos basada en ontologías Alianis Pérez Sosa, Yuniel Eliades Proenza Arias Universidad de las Ciencias Informáticas. Carretera a San Antonio Km 2 ½, Reparto Torrens, La Lisa, Ciudad

Más detalles

Programación con PHP y MySql Instituto CBTech 5/14

Programación con PHP y MySql Instituto CBTech 5/14 Programación con PHP y MySql Instituto CBTech 5/14 Programación con PHP y MySql Instituto CBTech 6/14 Qué es una aplicación web? Una aplicación web es un sistema informático que los usuarios utilizan accediendo

Más detalles

Estándares SGML y XML. Entornos de aplicación

Estándares SGML y XML. Entornos de aplicación Índice de contenido Estándares SGML y XML. Entornos de aplicación Estándares SGML y XML. Entornos de aplicación...1 Licencia...1 SGML...1 Introducción...1 Etiquetado...2 Estructura de un documento SGML...2

Más detalles

Introducción a RDF. Fundamentos de la Web Semántica. Documentos. Breve historia. Objetivos RDF. Modelo de datos RDF. Pablo R.

Introducción a RDF. Fundamentos de la Web Semántica. Documentos. Breve historia. Objetivos RDF. Modelo de datos RDF. Pablo R. Introducción a RDF RDF Pablo R. Fillottrani Depto. Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Segundo Cuatrimestre 2013 Objetivos Objetivos Breve historia Breve historia Objetivos

Más detalles

DESARROLLO WEB EN ENTORNO CLIENTE

DESARROLLO WEB EN ENTORNO CLIENTE DESARROLLO WEB EN ENTORNO CLIENTE CAPÍTULO 1: Selección de arquitecturas y herramientas de programación Juan Manuel Vara Mesa Marcos López Sanz David Granada Emanuel Irrazábal Jesús Javier Jiménez Hernández

Más detalles

XML Schema. Sergio Luján Mora. sergio.lujan@ua.es http://gplsi.dlsi.ua.es/~slujan/

XML Schema. Sergio Luján Mora. sergio.lujan@ua.es http://gplsi.dlsi.ua.es/~slujan/ XML Schema Sergio Luján Mora sergio.lujan@ua.es http://gplsi.dlsi.ua.es/~slujan/ 1 XML SCHEMA... 3 Introducción... 3 Ventajas... 3 Qué necesito para usar XML Schema... 4 Diseño de un documento XML... 5

Más detalles

Tema 3. Lenguajes de marcado

Tema 3. Lenguajes de marcado Tema 3. Lenguajes de marcado Ofimática Avanzada Profesor: Víctor Fresno Fernández Un Lenguaje de marcado o lenguaje de marcas se puede definir como una forma de codificar un documento donde, junto con

Más detalles

UF1302 Creación de páginas web con lenguajes de marcas

UF1302 Creación de páginas web con lenguajes de marcas UF1302 Creación de páginas web con lenguajes de marcas TEMA 1. Los lenguajes de marcas TEMA 2. Imágenes y elementos multimedia TEMA 3. Técnicas de accesibilidad y usabilidad TEMA 4. Herramientas de edición

Más detalles

Ya se definió brevemente lo que es la minería de datos, pero ahora conviene

Ya se definió brevemente lo que es la minería de datos, pero ahora conviene CAPÍTULO 2 Minería de datos y Conceptos generales 2.1 Minería de datos Ya se definió brevemente lo que es la minería de datos, pero ahora conviene elaborar un poco más sobre el tema. Se comentó anteriormente

Más detalles

Capítulo 1 Documentos HTML5

Capítulo 1 Documentos HTML5 Capítulo 1 Documentos HTML5 1.1 Componentes básicos HTML5 provee básicamente tres características: estructura, estilo y funcionalidad. Nunca fue declarado oficialmente pero, incluso cuando algunas APIs

Más detalles

XML. María Consuelo Franky. Universidad Javeriana 2009

XML. María Consuelo Franky. Universidad Javeriana 2009 XML María Consuelo Franky Universidad Javeriana 2009 1 XML: meta-lenguaje para definir lenguajes de etiquetas 2 Origen de XML SGML: Standard Generalized Markup Language: demasiado complejo para definir

Más detalles

Sistemas de Información 12/13 XML (extensible Mark-up Language)

Sistemas de Información 12/13 XML (extensible Mark-up Language) 12/13 XML (extensible Mark-up Language) Departamento Informática e Ingeniería de Sistemas Universidad de Zaragoza (raqueltl@unizar.es) " Guión Introducción Ejemplos Documentos vs apliaciones XML Espacios

Más detalles

XML (Extensible Markup Language)

XML (Extensible Markup Language) José Antonio Echagüe Burgos ja_echague@yahoo.es Tabla de Contenido 1. Lenguajes de marcas - Introducción...1 1.1. HTML...2 2. XML - Introducción...2 3. Estructura y DTD de un documento XML...3 4. Definición

Más detalles

Tabla de Contenidos. Rho-Sigma S.A.

Tabla de Contenidos. Rho-Sigma S.A. Tabla de Contenidos 1 INTRODUCCIÓN A XML...1 1.1 ORÍGENES Y MOTIVACIÓN...2 1.2 ESTADO ACTUAL...3 1.3 LIMITACIONES...5 1.4 CARACTERÍSTICAS PRINCIPALES DE LOS ESTÁNDARES XML...5 2 SINTAXIS DE XML...9 2.1

Más detalles

DISEÑO WEB (I y II) CONTENIDO TEMÁTICO

DISEÑO WEB (I y II) CONTENIDO TEMÁTICO DISEÑO WEB (I y II) CONTENIDO TEMÁTICO 1. Historia de internet 2. Introducción a las aplicaciones web 3. Estructura de un sitio web 4. Accesibilidad web a. Normas de accesibilidad del World Wide Web Consortium

Más detalles

Gestión de la Información Multimedia en Internet Gestión del conocimiento DAML y ontologías consensuadas

Gestión de la Información Multimedia en Internet Gestión del conocimiento DAML y ontologías consensuadas Gestión de la Información Multimedia en Internet Gestión del conocimiento DAML y ontologías consensuadas Autor: Pablo Barrera González Profesor: Carlos Delgado Kloos Fecha de presentación: 7 de Febrero

Más detalles

"Módulo OOWS para StarUML" INTRODUCCIÓN

Módulo OOWS para StarUML INTRODUCCIÓN UNA HERRAMIENTA PARA DIAGRAMAS OOWS: "Módulo OOWS para StarUML" Richard Medina Z. Universidad de Concepción, Chile INTRODUCCIÓN Una herramienta CASE (Computer Aided Software Engineering,

Más detalles

Programación del Módulo Profesional. Lenguajes de Marcas y Sistemas de Gestión de Información. Del Ciclo Formativo de Grado Superior

Programación del Módulo Profesional. Lenguajes de Marcas y Sistemas de Gestión de Información. Del Ciclo Formativo de Grado Superior Programación del Módulo Profesional Lenguajes de Marcas y Sistemas de Gestión de Información Del Ciclo Formativo de Grado Superior Desarrollo de Aplicaciones Multiplataforma Contenido 1 OBJETIVOS GENERALES

Más detalles

Unidad 6: DTD. JJ Taboada León IES San Sebastián, Departamento de Informática LENGUAJE DE MARCAS Y SGI Curso 2011 / 2012

Unidad 6: DTD. JJ Taboada León IES San Sebastián, Departamento de Informática LENGUAJE DE MARCAS Y SGI Curso 2011 / 2012 Unidad 6: DTD JJ Taboada León IES San Sebastián, Departamento de Informática LENGUAJE DE MARCAS Y SGI Curso 2011 / 2012 Guíon del tema Qué es un DTD? Declaración de DTD Declaración de Elementos Declaración

Más detalles

Introducción a WebMathematica

Introducción a WebMathematica Introducción a WebMathematica WebMathematica es una nueva tecnología que permite la generación de contenido web dinámico con Mathematica. Se integra en Mathematica a través de un servidor web. WebMathematica

Más detalles

Unidad IV. Los formatos de los documentos

Unidad IV. Los formatos de los documentos Unidad IV Los formatos de los documentos 129 Do cumentación técnica Esquema conceptual: Unidad IV Características Programas para realizarlo Utilización 1. Texto plano Características Programas para realizarlo

Más detalles

Documentación Electrónica

Documentación Electrónica Modelado de datos: Document Type Definition (DTD) Ofimática Avanzada Curso 2010/2011 Ofimática Avanzada 2010/2011 2 Ofimática Avanzada 2010/2011 3 1 Introducción XML es flexible, permitiendo a los usuarios

Más detalles

Ingeniería de Software con UML Unified Modeling Language Lenguaje Unificado de Modelado

Ingeniería de Software con UML Unified Modeling Language Lenguaje Unificado de Modelado Ingeniería de Software con UML Unified Modeling Language Lenguaje Unificado de Modelado 1. Introducción Unified Modeling Languaje Fuente: Booch- Jacobson-Rumbauch y diversos sitios Internet, entre otros:

Más detalles

desarrollo. Dentro del desarrollo de la tesis el proceso de modelado del sistema fue hecho con el

desarrollo. Dentro del desarrollo de la tesis el proceso de modelado del sistema fue hecho con el Capitulo II. Análisis de herramientas y tecnologías de desarrollo. Dentro del desarrollo de la tesis el proceso de modelado del sistema fue hecho con el lenguaje de Modelo de Objetos llamado UML (Unified

Más detalles

BASES DE DATOS MIS 308

BASES DE DATOS MIS 308 2. MODELOS DE DATOS Introducción 2.1 Entidad relación 2.2 Jerárquico 2.3 De red 2.4 Relacional Introducción Hoy en día las empresas manejan una gran cantidad de datos. Cualquier empresa que se precie debe

Más detalles

HOJA TÉCNICA. SemTalk 2

HOJA TÉCNICA. SemTalk 2 HOJA TÉCNICA SemTalk 2 SemTalk 2 - Información Técnica SemTalk 2 es una herramienta para modelamiento de procesos de negocios y conocimientos orientado a objetos 100% compatible con MS Office. REQUERIMIENTOS

Más detalles

Tema: Maquetación Web y CSS

Tema: Maquetación Web y CSS Diseño Digital V. Guía 4 1 Tema: Maquetación Web y CSS Facultad: Ciencias y Humanidades Escuela: Diseño Gráfico Asignatura: Diseño Digital V Objetivos Contenidos A través del desarrollo de la guía el estudiante

Más detalles

XML. Introducción. Cómo se usa? XML Tree. Sintaxis XML

XML. Introducción. Cómo se usa? XML Tree. Sintaxis XML XML Introducción XML(eXtensible Markup Language) es un lenguaje de etiquetas. Hay que tener en cuenta que no es un lenguaje de programación y como tal no ejecuta instrucciones, XML se creó para estructurar,

Más detalles

DESCRIPCIÓN ESPECÍFICA NÚCLEO: COMERCIO Y SERVICIOS SUBSECTOR: INFORMÁTICA

DESCRIPCIÓN ESPECÍFICA NÚCLEO: COMERCIO Y SERVICIOS SUBSECTOR: INFORMÁTICA DESCRIPCIÓN ESPECÍFICA NÚCLEO: COMERCIO Y SERVICIOS SUBSECTOR: INFORMÁTICA Nombre del Módulo: DISEÑO DE PAGINAS WEB CON HTML Código: CSTI0085 total: 3 Horas Objetivo General: Construir páginas Web en base

Más detalles

IIC3432 - Tópicos Avanzados en Bases de Datos. Una introducción a XML

IIC3432 - Tópicos Avanzados en Bases de Datos. Una introducción a XML IIC3432 - Tópicos Avanzados en Bases de Datos Una introducción a XML Documentos versus Bases de Datos Documentos estáticos estructura implícita semi-estructurados fácil de entender para una persona importa:

Más detalles

CICLO SUPERIOR DESARROLLO DE APLICACIONES MULTIPLATAFORMA

CICLO SUPERIOR DESARROLLO DE APLICACIONES MULTIPLATAFORMA CICLO SUPERIOR DESARROLLO DE APLICACIONES MULTIPLATAFORMA PROGRAMACIÓN DIDACTICA ANUAL Parte específica del módulo: 0485. Programación Departamento de Familia Profesional de Informática Curso: 2014-15

Más detalles

Tecnologías y Programación en el Internet

Tecnologías y Programación en el Internet Tecnologías y Programación en el Internet Prof. Miguel Vélez Rubio C y C++ / Base de todo C Comenzó su implementación en 1972, surgiendo del lenguaje B Asociado inicialmente a Unix Considerado difícil

Más detalles

Contenidos. 1. Requisitos del proyecto... 2

Contenidos. 1. Requisitos del proyecto... 2 En colaboración con Las opiniones recogidas en este documento no se corresponden, necesariamente, con las de ninguno de los organismos públicos participantes en esta iniciativa. Contenidos 1. Requisitos

Más detalles

Transformación del Modelo Relacional en UML a XML

Transformación del Modelo Relacional en UML a XML Transformación del Modelo Relacional en UML a XML Leonardo Rodríguez lrodrigu@fing.edu.uy Daniel Perovich perovich@fing.edu.uy INCO - PEDECIBA Facultad de Ingeniería Universidad de la República Uruguay

Más detalles

Tecnología Multimedia

Tecnología Multimedia Tecnología Multimedia Profesor Coordinador: Manuel Castro Antonio Colmenar, UNED Profesores de la asignatura: Manuel Castro, UNED Lenguajes de Marcado Índice LENGUAJES DE MARCADO... 3 Lenguajes de marcado

Más detalles

Capítulo 5. Implementación y Tecnologías Utilizadas

Capítulo 5. Implementación y Tecnologías Utilizadas Capítulo 5. Implementación y Tecnologías Utilizadas Cada vez más, se está utilizando Flash para desarrollar aplicaciones basadas en Web, pues permite la construcción de ambientes con mayor interacción.

Más detalles

GLOSARIO. Análisis Bottom-Up: Técnica utilizada en tareas de ingeniería inversa la cual parte de

GLOSARIO. Análisis Bottom-Up: Técnica utilizada en tareas de ingeniería inversa la cual parte de GLOSARIO Análisis Bottom-Up: Técnica utilizada en tareas de ingeniería inversa la cual parte de una descripción de bajo nivel (código fuente) para generar descripciones con un mayor grado de abstracción.

Más detalles

Generación de DTD para archivos XML utilizando una gramática visual relacional

Generación de DTD para archivos XML utilizando una gramática visual relacional P-161 Generación de DTD para archivos XML utilizando una gramática visual relacional Dr. Máximo López Sánchez I.S.C Sandra Luz García Orta Centro Nacional de Investigación y Desarrollo Tecnológico (cenidet)

Más detalles

1. Resumen.. 3. 2. Objetivos.. 3. 3. Introducción. 3

1. Resumen.. 3. 2. Objetivos.. 3. 3. Introducción. 3 1 Índice 1. Resumen.. 3 2. Objetivos.. 3 3. Introducción. 3 4. Aplicación web para la gestión de una memoria corporativa: reportes de actividades (proyectos) 4.1 Metodología... 4 4.2 Lenguajes y herramientas

Más detalles

GLOSARIO. Arquitectura: Funcionamiento, estructura y diseño de una plataforma de desarrollo.

GLOSARIO. Arquitectura: Funcionamiento, estructura y diseño de una plataforma de desarrollo. GLOSARIO Actor: Un actor es un usuario del sistema. Esto incluye usuarios humanos y otros sistemas computacionales. Un actor usa un Caso de Uso para ejecutar una porción de trabajo de valor para el negocio.

Más detalles

Herramientas de Software que posibilitan el BPM

Herramientas de Software que posibilitan el BPM Qué es BPM? BPM (Business Process Management) no es solamente una tecnología, sino en términos generales, una disciplina gerencial que trata a los procesos como bienes tangibles que contribuyen al desempeño

Más detalles

La Arquitectura de las Máquinas Virtuales.

La Arquitectura de las Máquinas Virtuales. La Arquitectura de las Máquinas Virtuales. La virtualización se ha convertido en una importante herramienta en el diseño de sistemas de computación, las máquinas virtuales (VMs) son usadas en varias subdiciplinas,

Más detalles

JAVA EE 5. Arquitectura, conceptos y ejemplos.

JAVA EE 5. Arquitectura, conceptos y ejemplos. JAVA EE 5. Arquitectura, conceptos y ejemplos. INTRODUCCIÓN. MODELO DE LA APLICACIÓN JEE5. El modelo de aplicación Java EE define una arquitectura para implementar servicios como lo hacen las aplicaciones

Más detalles

17º Concurso de Trabajos Estudiantiles, EST 2014

17º Concurso de Trabajos Estudiantiles, EST 2014 CXML: Intérprete para XML Concha Medina Edgard José, Del Corro Gonzalo, Leiva Mario Dpto. de Informática. Facultad de Ciencias Exactas y Tecnologías, Universidad Nacional de Santiago del Estero. {edgard.007.85,

Más detalles

BASES DE DATOS. Ivon Tarazona Oriana Gomez

BASES DE DATOS. Ivon Tarazona Oriana Gomez BASES DE DATOS Ivon Tarazona Oriana Gomez Introducción Introducción Ventajas e (Unified Modeling Language) Es un lenguaje usado para especificar, visualizar y documentar los diferentes aspectos relativos

Más detalles

Internet - Web. Internet - Web. Internet. Internet. Diseño de Sitios Web Desarrollo de Paginas Web. Qué es la Internet? - Qué es la Web?

Internet - Web. Internet - Web. Internet. Internet. Diseño de Sitios Web Desarrollo de Paginas Web. Qué es la Internet? - Qué es la Web? Desarrollo de Paginas Web Internet - Web Internet - Web Qué es la Internet? - Qué es la Web? Internet: Una red de computadoras a nivel mundial Web: Una forma de organizar la información existente en Internet

Más detalles

Clientes Donantonio. Especificación de requisitos software. Juan José Amor David Escorial Ismael Olea

Clientes Donantonio. Especificación de requisitos software. Juan José Amor David Escorial Ismael Olea Especificación de requisitos software Tabla de contenidos Juan José Amor David Escorial Ismael Olea 1. Introducción...3 1.1. Propósito...3 1.2. Ámbito del sistema...3 1.3. Definiciones, acrónimos y abreviaturas...3

Más detalles

UNIVERSITAT OBERTA DE CATALUNYA

UNIVERSITAT OBERTA DE CATALUNYA UNIVERSITAT OBERTA DE CATALUNYA Ingeniería Técnica en Informática de Gestión Estudio del modelo de representación XML/RDF Alumno: David Fernández Medina Dirigido por: Carlos Granell Canut CURSO 2003-04

Más detalles

Web Web 1.0 - Web 2.0 - Web 3.0. RDF -.net

Web Web 1.0 - Web 2.0 - Web 3.0. RDF -.net Universidad Central de Venezuela Facultad de Ciencias Postgrado en Ciencias Computación Fundamentos de Programación Paralela y Distribuida Web Web 1.0 - Web 2.0 - Web 3.0 RDF -.net Lic. Ronnel Velez Manzano

Más detalles

ACCIÓN FORMATIVA FINANCIADA POR EL SERVICIO PÚBLICO DE EMPLEO ESTATAL

ACCIÓN FORMATIVA FINANCIADA POR EL SERVICIO PÚBLICO DE EMPLEO ESTATAL MF0491_3: PROGRAMACIÓN WEB EN EL ENTORNO CLIENTE. (IFCD0210: DESARROLLO DE APLICACIONES CON TECNOLOGÍAS WEB) 180 HORAS PRESENCIALES Nº DE EXPEDIENTE: FC/2013/0064 ACCION 141 GRUPO 1 ACCIÓN FORMATIVA FINANCIADA

Más detalles

Organizaciones Virtuales e Integración de Información. José Abásolo Prieto

Organizaciones Virtuales e Integración de Información. José Abásolo Prieto Organizaciones Virtuales e Integración de Información José Abásolo Prieto Universidad de los Andes Objetivo de la charla Mostrar que aunque la problemática de integración de información distribuida y heterogénea

Más detalles

Drupal 7 Web Semántica al alcance de todos. Juan Antonio Pastor Sánchez (pastor@um.es) Universidad de Murcia

Drupal 7 Web Semántica al alcance de todos. Juan Antonio Pastor Sánchez (pastor@um.es) Universidad de Murcia Drupal 7 Web Semántica al alcance de todos Juan Antonio Pastor Sánchez (pastor@um.es) Universidad de Murcia Web Semántica Una idea... un camino... Para un ordenador, la Web es un mundo, plano, aburrido

Más detalles

Administración de Variabilidad en una línea de producto basada en modelos

Administración de Variabilidad en una línea de producto basada en modelos Administración de Variabilidad en una línea de producto basada en modelos Kelly Garcés Carlos Parra Hugo Arboleda Andres Yie Rubby Casallas Universidad de los Andes, Bogotá k-garces @uniandes.edu.co Universidad

Más detalles

Capítulo III. Procesar documentos XML

Capítulo III. Procesar documentos XML Capítulo III Procesar documentos XML APIS XML Procesador XML Parsers XML Herramientas para trabajar con XML Lenguajes que interactúan con XML Búsquedas con XML XML Query Language Bases de datos XML (XDB)

Más detalles

Tabla de Contenidos. xii

Tabla de Contenidos. xii Tabla de contenidos Capítulo 1. Introducción...1 1.1 MOTIVACIÓN...2 1.2 NOVEDADES APORTADAS POR ESTE LIBRO...3 1.3 ESTRUCTURA DE LA OBRA...4 1.4 CONOCIMIENTOS RECOMENDADOS...8 1.5 CONVENCIONES DE ESTILO

Más detalles

ANEXO 1 INFORMACIÓN SOBRE XML ENLACES SITIOS DE INTERES HERRAMIENTAS EDITORES, ETC

ANEXO 1 INFORMACIÓN SOBRE XML ENLACES SITIOS DE INTERES HERRAMIENTAS EDITORES, ETC ANEXO 1 INFORMACIÓN SOBRE XML ENLACES SITIOS DE INTERES HERRAMIENTAS EDITORES, ETC ANEXOS VISUALIZADORES Y PROCESADORES Amaya (en inglés) Visualizador oficial de W3C http://www.w3c.org/amaya/ DocZilla

Más detalles

INTRODUCCIÓN AL WEB. Pag. 1 de 10

INTRODUCCIÓN AL WEB. Pag. 1 de 10 INTRODUCCIÓN AL WEB La World Wide Web o simplemente WWW o Web es uno de los métodos más importantes de comunicación que existe en Internet. Consiste en un sistema de información basado en Hipertexto (texto

Más detalles

Objetivos. Tecnología XML. Al finalizar podremos:

Objetivos. Tecnología XML. Al finalizar podremos: Tecnología XML Objetivos Al finalizar podremos: Conocer los beneficios que nos aporta XML. Ser capaces de empezar a usarlo. Conocer cuáles son los lenguajes relacionados con XML. Saber en qué circunstancias

Más detalles

Guía práctica PHP 6. (c) Francisco Charte Ojeda

Guía práctica PHP 6. (c) Francisco Charte Ojeda Guía práctica PHP 6 Agradecimientos Sobre el autor (c) Francisco Charte Ojeda Introducción Páginas de servidor PHP Creación de páginas PHP Cómo usar este libro Convenciones tipográficas 1. Instalación

Más detalles

Modelar, documentar, discutir, versionar, difundir, capacitar DESCRIPCIÓN TÉCNICA

Modelar, documentar, discutir, versionar, difundir, capacitar DESCRIPCIÓN TÉCNICA Sistema para Gestión de Conocimiento Modelar, documentar, discutir, versionar, difundir, capacitar DESCRIPCIÓN TÉCNICA Contenido Introducción... 3 Antecedentes... 4 Ediciones... 4 Empresarial... 4 Personal...

Más detalles

Servidores Donantonio

Servidores Donantonio Especificación de requisitos software Tabla de contenidos Juan José Amor David Escorial Ismael Olea 1. Introducción...3 1.1. Propósito...3 1.2. Ámbito del sistema...3 1.3. Definiciones, acrónimos y abreviaturas...3

Más detalles

Bienvenidos a la presentación: Introducción a conceptos básicos de programación.

Bienvenidos a la presentación: Introducción a conceptos básicos de programación. Bienvenidos a la presentación: Introducción a conceptos básicos de programación. 1 Los programas de computadora son una serie de instrucciones que le dicen a una computadora qué hacer exactamente. Los

Más detalles