DOT (lenguaje de programación)

De Wikipedia, la enciclopedia libre
Saltar a: navegación, búsqueda

DOT es un lenguaje descriptivo en texto plano. Proveé una forma simple de describir gráficas que sean entendibles por humanos y computadoras. Los programas en DOT generalmente usan la extensión .gv o .dot (aunque esta última esta en desuso debido a que puede confundirse con el formato que usan versiones anteriores al 2007 de Microsoft Word.[1]

Existen varios programas que pueden procesar programas en DOT, algunos de ellos son OmniGraffle, dot, neato, twopi, circo, fdp, y sfdp, estos programas renderizan la descripción y generan gráficos en una multitud de formatos de imágen. Otros como gvpr, gc, accyclic, ccomps, sccmap, y tred, ejecutan cálculos sobre las imágenes generadas. Finalmente programas como GVedit, KGraphEditor, lefty, dotty, and grappa, proveen una interfaz para editar archivos DOT. La mayoría de estos programas forman parte del paquete Graphviz o lo usan parcialmente para ejecutar cálculos.

Sintaxis[editar]

Tipo de gráficas[editar]

Gráficas indirectas[editar]

Una gráfica indirecta

En su forma más simple, DOT puede describir una gráfica indirecta. Una gráfica indirecta es aquella que muestra relaciones simples entre varios objetos, por ejemplo al relacionar la amistad entre personas. La palabra clave graph es usada para comenzar a definir una nueva gráfica, los nodos son descritos por llaves {} y el doble menos (--) se usa para crear relaciones entre los nodos.

 
 // el nombre de la gráfica es opcional, como lo son el punto y coma al final de la línea
 graph nombre_de_la_gráfica {
     a -- b -- c;
     b -- d;
 }

en contra

Gráfica directa[editar]

Una gráfica directa

De forma similar a las gráficas indirectas, DOT puede describir gráficas directas, como diagramas de flujo o de arboles de dependencias. La sintaxis es la misma, excepto que la palabra clave diagraph' es usada para comenzar la definición (en lugar de graph). También la flecha (->) es usada para relacionar los nodos en lugar de los dos menos (--).

 digraph nombre_del_diagrama {
     a -> b -> c;
     b -> d;
 }

en contra

Atributos[editar]

Un diagrama con atributos

A los diagramas se les pueden aplicar atributos.[2] Estos atributos pueden modificar aspectos tales como: color, forma, tipo de línea, etc. Los atributos para nodos y figuras pueden contener uno o más pares de atributos entre corchetes ([]), atributo="valor", los atributos se colocan despues de la definición de los nodos pero antes del punto y coma. Se pueden definir varios atributos separandolos por comas (,) y espacios.

 graph nombre_del_diagrama {
     // Este atributo se aplica al diagrama en si mismo, y modifica el tamaño
     size="1,1";
     // El atributo label (etiqueta) puede usarse para modificar el título de un nodo
     a [label="Foo"];
     // Este atributo cambia la forma del nodo b
     b [shape=box];
     // Se puede cambiar el tipo de línea que rodea a las figuras con los atributos color y style (estílo)
     a -- b -- c [color=blue];
     b -- d [style=dotted];
 }

en contra

Las etiquetas definidas con el estilo [[HTML|HTML] solo estan disponibles en versiones más recientes de Graphviz (después de Noviembre del 2003). En partícular, no son parte de la versión 1.10.[3]

Comentarios[editar]

DOT es compatible con el estilo que se usa en los comentarios en los lenguajes de programación C y C++. En comparación, tambien ignora el texto que sigue despues de un caracter gato (#).

 // Este es un comentario que se extiende a una sola línea.
 /* Este es
    un comentario que se extiende
    en varias líneas. */
 # Líneas como esta también son ignoradas.

en contra

Programas[editar]

generado por Graphiviz a partir de una archivo DOT

El lenguaje DOT define gráficas, pero no provee un framework para generarlas. Existen varios programas que pueden ser usados para renderizar, ver o manipular gráficas definidas en DOT:

  • Graphviz - Una colección de librerias y utilidades para manipular y renderizar imagenes.
  • Canviz - Libreria en JavaScript para renderizar archivos DOT.
  • Viz.js - Un cliente para Graphviz en JavaScript
  • Grappa - Un envolvedor para usar la librería Graphviz en Java.[4] [5]
  • Beluging - Un visor en python alojado en la nube de google y con extensiones Beluga. [1]
  • Tulip - Es un programa que puede importar archivos en DOT para su análisis
  • ZGRViewer - Un visor basado en GraphViz

Limitaciones[editar]

Una imagen renderizada incorrectamente

Es posible modificar la disposición de los diagramas DOT. sin embargo no todas las herramientas que lo implementan prestan atención a todos los atributos posibles. Por lo tanto, el usuario debe prestar atención a la forma en que se posicionan en cada programa y tomar en cuenta que esas posiciones cambiaran de un programa a otro.

Ejemplo:

digraph g {
	node [shape=plaintext];
	A1 -> B1;
	A2 -> B2;
	A3 -> B3;
 
	A1 -> A2 [label=f];
	A2 -> A3 [label=g];
	B2 -> B3 [label="g'"];
	B1 -> B3 [label="(g o f)'" tailport=s headport=s];
 
	{ rank=same; A1 A2 A3 }
	{ rank=same; B1 B2 B3 } 
}
Después de mover las etiquetas y las flechas un poco, la imagen se ve correctamente.

Hay dos problemas en la imagen superior. El cuadrado de la derecha no es perfecto y las etiquetas "(g y f)'" estan en el lugar incorrecto.

Estos errores pueden corregirse con programas como Inkscape u otros programas que reconozcan el formato SVG editors. En algunos casos, esto también puede solicionarse con el atributo pos. en contra

Otros formatos para describir gráficas[editar]

  • TGF, un formato simple para la generación de gráficas.
  • GML un formato muy popular y simple -- GML
  • GraphML, un formato basado en XML -- GraphML
  • GXL, otro formato basado en XML -- GXL
  • DGML, un formato desarrollador por Microsoft.

Véase también[editar]

Notes[editar]

Enlaces externos[editar]