GraphML-Datenfelder

Für Gravel wurden in GraphML verschiedene Datenfelder mittels <key>-Tag definiert. zunächst sind hier die einfachen Datenfelder aufgelistet, welche einfache Werte für einzelne Elemente des Graphen speichern.

Einfache Datenfelder

Dabei werden zunächst die mathematischen Daten aufgelistet, dann die visuellen, jeweils gruppiert nach Element.
Datenfeld (id)fürTypKommentar
graphtypegraphstringGibt den Typ an, der im Dokument gespeichert ist: mathematischer oder visualler Graph bzw. Hypergraph
graphloopsgraphbooleanGibt an, ob in einem Graphen Schleifen erlaubt sind
graphmultipleedgesgraphbooleanGibt an, ob in einem Graphen Mehrfachkanten erlaubt sind.
edgevalueedgeintegerGewicht einer Kante
edgenameedgestringKantenname1,2,3
hyperedgevaluehyperedgeintegerGewicht einer Hyperkante
hyperedgenamehyperedgestringHyperkantenname1
nodenamenodestringKnotenname1
edgewidthedgeintLinienbreite der Kante
edgetypeedgestringKantentyp, einer der vier aus dem Editor, Standard ist stets Straightline, weil dieser Type keine Zusatzinformationen benötigt.
edgeorthogonaledgebooleanAngabe, welche richtung die orthogonal gezeichnete Kante zuerst wählt (true entspricht vertikal vom Start entfernen)
edgewidthedgeintLinienbreite der Kante
hyperedgewidthhyperedgeintLinienbreite des Hyperkantenumrisses
hyperedgemarginhyperedgeintInnenabstand des Hyperkantenumrisses

komplexe Datenfelder

Die komplexen Datenfelder sind eigene XML-Strukturen, da die Werte komplizierter sind. Dabei kann ein Element weitere Elemente enthalten. Ein Datenelement mit einer id kann dann in dem entsprechend angegebenen Graphenelement verwendet werden.
Datenfeld (id)fürTypKommentar
subgraphX4graphgraph.subgraph.typeUntergraphenspezifikation
edgearrowedgeedge.arrow.typePfeil einer Kante
edgepointsedgeedge.points.typeMenge der Kantenkontrollpunkte
loopedgeedgeedge.loop.typeWerte der Schleife
edgetextedgeedge.text.typeWerte zum Kantentext
edgelineedgeedge.line.typeWerte der Linienart einer Kante
hyperedgetexthyperedgeedge.text.typeWerte zum Hyperkantentext (Typ identisch mit Kantentext)
hyperedgelinehyperedgeedge.line.typeLinienart der Hyperkante (Typ wie bei Linie der Kante)
hyperedgeshapehyperedgehyperedge.shape.typeUmriss der Hpyerkante (NURBS-Kurve)
nodeformnodenode.form.typeKnotenform (bisher nur Kreis) und -position
nodetextnodenode.text.typeKnotentext

komplexe Datentypen

Die mit * gekennzeichneten Elemente in einem Typ können mehrfach vorkommen. Die meisten enthalten Elemente, etwa id oder name sind vom Typ her aus dem Kontext ersichtlich. Besondere Elemente sind direkt danach erläutert. Attribute sind ebenso meist aus dem Kontext klar, knot, controlpoint
DatentypAttributeElementeKommentar
graph.subgraph.typecolor,name,nodeid*,(hyper)edgeid*Untergraphenspezifikation, wobei nur entweder Kanten- oder Hyperkantenindizes vorkommen.
color.typer,g,b (jeweils 8 Bit)Farbangabe im RGB-Farbraum
edge.arrow.typesize,part,position,headalphaPfeil mit seiner Größe, des Füllteils, der Position auf der Kante und dem Winkel in der Spitze (jeweils float-Werte)
edge.points.typeedge.point*Menge an Punkten.
edge.point.typeid,x,yEin Punkt mit Position im Bild und dem Index im Punktvektor
edge.loop.typelength,proportion,direction,clockwiseEine Schleife, in Größe und Ellipsenform (Proportion Haupt- zu Nebenachse), Richtung der Hauptachse und (bei gerichteten Schleifen) die Umlaufrichtung
edge.text.typeposition, distance, size, visible, showEin Kantentext mit Position und Abstand, Textgröße und Sichtbarkeit, sowie der Angabe ob Kantentext oder -wert angezeigt werden sollen.5
edge.line.typelength, distance,typeDie Angabe der Linie einer Kante mit Länge und Abstand (beides Integer) und einem Typ (siehe nächste Zeile)
edge.line.type.typeEin Linientyp aus der Menge solid,dashed,dotted,dotdashed
node.form.typeform,x,yDie Knotenform (stets form=Cicle) und Position im Bild
node.text.typedistance, rotation, size, visibleDer Knotentext mit Abstand, Orientierung, Textgröße und Sichtbarkeit
hyperedge.shape.typedegreeHyperkantenumriss mit dem Grad als Attribut und den Knoten/Kontrollpunkten
shape.point.typeid,x,y,wNURBS-Kontrollpunkt mit gewicht w und dem Index als Position im Vektor
shape.knot.typeid,uNURBS-Knoten Wert und Index
1 Enthält der Standardname $ID so wird dies beim Erstellen eines Knotens oder beim bearbeiten mehrer Knoten, Kanten bzw. Untergraphen durch den Index des jeweiligen Elements ersetzt.
2 Enthält der Standardname $EID so wird beim Erstellen einr oder dem Bearbeiten mehrerer Kanten durch den Endknotenindex ersetzt (hier ist auch bei ungerichteten Kanten die unterscheidung Start- und Endknoten wichtig).
3 Enthält der Standardname $SID so wird dies analog zu $EID verwendet, nur bezeichnet dies den Startknotenindex.
4Ein Graph enthält stets die Untergraphen-Datenschlüssel seiner Untergraphen, wobei X jeweils durch den Index ersetzt wird.
5show ist einer der beiden Werte name oder value.