1 / 45

GXL – Eine XML-Anwendung

GXL – Eine XML-Anwendung. Martin Sievers 27.06.2002. Inhalt. Begriffe & Notationen Motivation & Entwicklung von GXL Austausch von Graphen mit GXL GXL in der Praxis; Implementierungen Fazit Ausblick. 1. Begriffe & Notationen. Definition Digraph.

maddox
Télécharger la présentation

GXL – Eine XML-Anwendung

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. GXL – Eine XML-Anwendung Martin Sievers 27.06.2002

  2. Inhalt • Begriffe & Notationen • Motivation & Entwicklung von GXL • Austausch von Graphen mit GXL • GXL in der Praxis; Implementierungen • Fazit • Ausblick

  3. 1. Begriffe & Notationen

  4. Definition Digraph Seien V,E Mengen mit V nichtleer, endlich, E⊂ VxV. Dann heißt G:=(V,E) gerichteter Graph (Digraph) mit der Knotenmenge V und der Kantenmenge E.

  5. Eigenschaften von Graphen Ein Graph G=(V,E) heißt • ungerichtet (undirected), falls E aus zweielementigen Teilmengen von V besteht • geordnet (ordered), falls auf V,E und der Menge der zu einem Knoten inzidenten Kanten eine totale Ordnung definiert ist • typisiert (typed), falls V und E aus Objekten eines bestimmten Typs bestehen • attribuiert (attributed), falls mindestens einem Graphobjekt ein Paar aus Attributbezeichnung und -wert zugeordnet ist

  6. Definition Hypergraph Seien I Indexmenge, V Knotenmenge und ℰ :={Ei : i ∈ I} Familie von Teilmengen (sog. Hyperkanten) von V. Dann heißt H:=(V,ℰ) Hypergraph, falls • ∀ i ∈ I : Ei nicht leer • ∪ i ∈ I : Ei = V

  7. Eigenschaften von Hypergraphen Zwei Knoten u,v heißen adjazent, falls ∃ j ∈ I : {u,v} ⊂ Ej Zwei Kanten E1,E2 heißen adjazent, falls E1∩ E2 nichtleer Die Zahl r := r(V) := max {|V ∩ Ei| : i ∈ I } heißt Rang von H und gibt an, wieviele Knoten eine Kante in H maximal verbindet. Wir nennen H auch Hypergraph r-ten Grades

  8. Bemerkungen zu Hypergraphen • Jeder Graph ist ein Hypergraph zweiten Grades • Falls die Ei disjunkt sind, heißt H einfach (simple) • Hyperkanten werden durch Ellipsen, die die zugehörigen Kanten umschließen, dargestellt

  9. Beispiel (Hypergraph) E4 E1 1 E5 2 4 3 5 7 6 E2 E6 8 E3

  10. 2. Motivation & Entwicklung von GXL

  11. Motivation von GXL • Vielseitigkeit von Graphen führte zu verschiedenen Graph-Formaten in der Praxis ⇒Probleme beim Zusammenspiel von Softwarekomponenten • Austausch schwierig, Nutzung von Konvertern nötig ⇒Notwendigkeit eines universellen Graph-Formats

  12. Fakten • Graph eXchange Language • XML - Untersprache • 1998 unter Leitung von Andreas Winter an der Uni Koblenz entwickelt • Aktuelle Version: GXL 1.0 (Januar 2001) • Informationen unter http://www.gupro.de/GXL/

  13. Entwicklung von GXL (1. Phase)

  14. Entwicklung von GXL (2. Phase)

  15. Entwicklung von GXL (3. Phase)

  16. Entwicklung von GXL (Schematisch) WCRE 1999 AlGra 2000 GROOM 2000 TA GraX PROGRES da Vinci GML Graphlet GML XGMML RPA RSF ATerms WoSEF 2000 GXL 0.4.2 Barcelona Berlin Budapest Kent GXL 0.6.6 Graph Drawing workshop on data exchange formats (GD 2000) GraphXML GXL 0.7 CASCON 2000 WCRE 2000 GXL 0.7.2 Dagstuhl 2001 „Interoperability of Reengineering Tools“ GXL 1.0 Quelle: [1], Abb. 1

  17. 3. Austausch von Graphen mit GXL

  18. Austausch von Graphen • Betrachtung typisierter, attribuierter, gerichteter, geordneter Graphen (sog. TGraphs) • Zur Verarbeitung von Hyper- bzw. hierarchischer Graphen Erweiterungen um Hyperkanten sowie hierarchische Strukturen nötig

  19. Grundlagen für den Austausch von Graphen per GXL • GXL-Dokumente werden stets von <gxl> umschlossen; jeder im Dokument definierte Graph von <graph> • jedem Graph muß eindeutiger Name zugewiesen werden • zu jedem Graph gehört Graph-Schema • Knoten und Kanten werden mit <node> bzw. <edge> und optionalem eindeutigen Namen gekennzeichnet

  20. Innerhalb von <node> bzw. <edge> werden durch • from und to zu einer Kante inzidente Knoten • fromorder und toorder die Ordnung der Kanten • <type> der aus dem Graph-Schema bekannte Typ für Knoten und Kanten • <attr> zugehörige evtl. verschachtelte Attribute des Typs <int>, <bool>, <string>, <float> u.a. angegeben.

  21. Beispiel (einfacher Graph)

  22. GXL-Darstellung <?xml version="1.0"?><!DOCTYPE gxl SYSTEM "../../../gxl-1.0.dtd"><gxl xmlns:xlink="http://www.w3.org/1999/xlink">   <graph id="simpleExample"><type xlink:href="../../schema/gxl/simpleExampleSchema.gxl# simpleExampleSchema"/>      <node id="p">         <type xlink:href="../../schema/gxl/simpleExampleSchema.gxl#Proc"/>         <attr name="file">             <string>main.c</string>         </attr>      </node>      <node id="q">         <type xlink:href="../../schema/gxl/simpleExampleSchema.gxl#Proc"/>         <attr name="file">             <string>test.c</string>         </attr>      </node>      <node id="v">         <type xlink:href="../../schema/gxl/simpleExampleSchema.gxl#Var"/>         <attr name="line">             <int>225</int>         </attr>      </node> <node id="w">         <type xlink:href="../../schema/gxl/simpleExampleSchema.gxl#Var"/>         <attr name="line">             <int>316</int>         </attr>      </node>      <edge id="r1" from="p" to="v">         <type xlink:href="../../schema/gxl/simpleExampleSchema.gxl#ref"/>         <attr name="line">             <int>127</int>         </attr>      </edge>      <edge id="r2" from="q" to="w">         <type xlink:href="../../schema/gxl/simpleExampleSchema.gxl#ref"/>         <attr name="line">             <int>27</int>         </attr>      </edge>      <edge id="c" from="p" to="q">         <type xlink:href="../../schema/gxl/simpleExampleSchema.gxl#call"/>         <attr name="line">             <int>42</int>         </attr>      </edge>   </graph></gxl>

  23. GXL-Darstellung <?xml version="1.0"?><!DOCTYPE gxl SYSTEM "../../../gxl-1.0.dtd"><gxl xmlns:xlink="http://www.w3.org/1999/xlink">   <graph id="simpleExample"><type xlink:href="../../schema/gxl/simpleExampleSchema.gxl# simpleExampleSchema"/>      <node id="p">         <type xlink:href="../../schema/gxl/simpleExampleSchema.gxl#Proc"/>         <attr name="file">             <string>main.c</string>         </attr>      </node>      <node id="q">         <type xlink:href="../../schema/gxl/simpleExampleSchema.gxl#Proc"/>         <attr name="file">             <string>test.c</string>         </attr>      </node>      <node id="v">         <type xlink:href="../../schema/gxl/simpleExampleSchema.gxl#Var"/>         <attr name="line">             <int>225</int>         </attr>      </node> <node id="w">         <type xlink:href="../../schema/gxl/simpleExampleSchema.gxl#Var"/>         <attr name="line">             <int>316</int>         </attr>      </node>      <edge id="r1" from="p" to="v">         <type xlink:href="../../schema/gxl/simpleExampleSchema.gxl#ref"/>         <attr name="line">             <int>127</int>         </attr>      </edge>      <edge id="r2" from="q" to="w">         <type xlink:href="../../schema/gxl/simpleExampleSchema.gxl#ref"/>         <attr name="line">             <int>27</int>         </attr>      </edge>      <edge id="c" from="p" to="q">         <type xlink:href="../../schema/gxl/simpleExampleSchema.gxl#call"/>         <attr name="line">             <int>42</int>         </attr>      </edge></graph></gxl>

  24. GXL-Darstellung <?xml version="1.0"?><!DOCTYPE gxl SYSTEM "../../../gxl-1.0.dtd"><gxl xmlns:xlink="http://www.w3.org/1999/xlink">   <graph id="simpleExample"><type xlink:href="../../schema/gxl/simpleExampleSchema.gxl# simpleExampleSchema"/><node id="p">         <type xlink:href="../../schema/gxl/simpleExampleSchema.gxl#Proc"/>         <attr name="file">             <string>main.c</string>         </attr>      </node>      <node id="q">         <type xlink:href="../../schema/gxl/simpleExampleSchema.gxl#Proc"/>         <attr name="file">             <string>test.c</string>         </attr>      </node>      <node id="v">         <type xlink:href="../../schema/gxl/simpleExampleSchema.gxl#Var"/>         <attr name="line">             <int>225</int>         </attr>      </node> <node id="w">         <type xlink:href="../../schema/gxl/simpleExampleSchema.gxl#Var"/>         <attr name="line">             <int>316</int>         </attr>      </node>      <edge id="r1" from="p" to="v">         <type xlink:href="../../schema/gxl/simpleExampleSchema.gxl#ref"/>         <attr name="line">             <int>127</int>         </attr>      </edge>      <edge id="r2" from="q" to="w">         <type xlink:href="../../schema/gxl/simpleExampleSchema.gxl#ref"/>         <attr name="line">             <int>27</int>         </attr>      </edge>      <edge id="c" from="p" to="q">         <type xlink:href="../../schema/gxl/simpleExampleSchema.gxl#call"/>         <attr name="line">             <int>42</int>         </attr>      </edge>   </graph></gxl>

  25. GXL-Darstellung <?xml version="1.0"?><!DOCTYPE gxl SYSTEM "../../../gxl-1.0.dtd"><gxl xmlns:xlink="http://www.w3.org/1999/xlink">   <graph id="simpleExample"><type xlink:href="../../schema/gxl/simpleExampleSchema.gxl# simpleExampleSchema"/>      <node id="p">         <type xlink:href="../../schema/gxl/simpleExampleSchema.gxl#Proc"/>         <attr name="file">             <string>main.c</string>         </attr>      </node>      <node id="q">         <type xlink:href="../../schema/gxl/simpleExampleSchema.gxl#Proc"/>         <attr name="file">             <string>test.c</string>         </attr>      </node>      <node id="v">         <type xlink:href="../../schema/gxl/simpleExampleSchema.gxl#Var"/>         <attr name="line">             <int>225</int>         </attr>      </node> <node id="w">         <type xlink:href="../../schema/gxl/simpleExampleSchema.gxl#Var"/>         <attr name="line">             <int>316</int>         </attr>      </node><edge id="r1" from="p" to="v">         <type xlink:href="../../schema/gxl/simpleExampleSchema.gxl#ref"/>         <attr name="line">             <int>127</int>         </attr>      </edge>      <edge id="r2" from="q" to="w">         <type xlink:href="../../schema/gxl/simpleExampleSchema.gxl#ref"/>         <attr name="line">             <int>27</int>         </attr>      </edge>      <edge id="c" from="p" to="q">         <type xlink:href="../../schema/gxl/simpleExampleSchema.gxl#call"/>         <attr name="line">             <int>42</int>         </attr>      </edge>   </graph></gxl>

  26. Austausch von Hypergraphen per GXL • Betrachtung typisierter, attribuierter, (un-)gerichteter, geordneter Hypergraphen ⇒Notwendigkeit zusätzlicher Tags im GXL-Dokument • jede Hyperkante wird durch <rel> definiert und evtl. durch <type> und <attr> näher erklärt • die durch eine Hyperkante verbundenen Knoten werden über <relend> angegeben und durch target, role, startorder, endorder, isdirected, direction genauer spezifiziert.

  27. Beispiel (Hypergraph) a = max(a,b)

  28. <?xml version="1.0"?><!DOCTYPE gxl SYSTEM "../../../gxl-1.0.dtd"><gxl xmlns:xlink="http://www.w3.org/1999/xlink">   <graph id="hypergraph2"><type xlink:href="../../schema/gxl/hypergraph2Schema.gxl# hypergraph2Schema"/>      <node id="v1">         <type xlink:href="../../schema/gxl/hypergraph2Schema.gxl#Function"/>         <attr name="name">             <string>main</string>         </attr>      </node>      <node id="v4">         <type xlink:href="../../schema/gxl/hypergraph2Schema.gxl#Function"/>         <attr name="name">             <string>max</string>         </attr>      </node>      <node id="v6">         <type xlink:href="../../schema/gxl/hypergraph2Schema.gxl#Variable"/>         <attr name="name">             <string>a</string>         </attr>      </node> <node id="v7">         <type xlink:href="../../schema/gxl/hypergraph2Schema.gxl# Variable"/>         <attr name="name">             <string>b</string>         </attr>      </node><rel id="r1">         <type xlink:href="../../schema/gxl/hypergraph2Schema.gxl# FunctionCall2"/>         <attr name="line">             <int>8</int>         </attr>         <relend target="v1" role="caller"/>         <relend target="v4" role="callee"/>         <relend target="v6" role="output"/>         <relend target="v6" role="input" startorder="1"/>         <relend target="v7" role="input" startorder="2"/></rel>   </graph></gxl>

  29. <?xml version="1.0"?><!DOCTYPE gxl SYSTEM "../../../gxl-1.0.dtd"><gxl xmlns:xlink="http://www.w3.org/1999/xlink">   <graph id="hypergraph2"><type xlink:href="../../schema/gxl/hypergraph2Schema.gxl# hypergraph2Schema"/>      <node id="v1">         <type xlink:href="../../schema/gxl/hypergraph2Schema.gxl#Function"/>         <attr name="name">             <string>main</string>         </attr>      </node>      <node id="v4">         <type xlink:href="../../schema/gxl/hypergraph2Schema.gxl#Function"/>         <attr name="name">             <string>max</string>         </attr>      </node>      <node id="v6">         <type xlink:href="../../schema/gxl/hypergraph2Schema.gxl#Variable"/>         <attr name="name">             <string>a</string>         </attr>      </node> <node id="v7">         <type xlink:href="../../schema/gxl/hypergraph2Schema.gxl# Variable"/>         <attr name="name">             <string>b</string>         </attr>      </node><rel id="r1">         <type xlink:href="../../schema/gxl/hypergraph2Schema.gxl# FunctionCall2"/>         <attr name="line">             <int>8</int>         </attr>         <relend target="v1" role="caller"/>         <relend target="v4" role="callee"/>         <relend target="v6" role="output"/>         <relend target="v6" role="input" startorder="1"/>         <relend target="v7" role="input" startorder="2"/>      </rel>   </graph></gxl>

  30. Austausch hierarchischer Graphen Problem: Große Graphen führen schnell zu unübersichtlichen Strukturen Lösung: Zusammenfassung zusammengehöriger Objekte zu eigenständigen Strukturen Umsetzung in GXL durch Verschachtelung von <graph>-Elementen

  31. Beispiel (Hierarchischer Graph)

  32.                <edge id="e1" from="u" to="v">                  <type xlink:href="../../schema/gxl/ crossingSchema.gxl#E"/>               </edge></graph>      </node>      <node id="w">         <type xlink:href="../../schema/gxl/ crossingSchema.gxl#W"/>      </node>      <edge id="e2" from="t" to="w">         <type xlink:href="../../schema/gxl/ crossingSchema.gxl#f"/>      </edge>      <edge id="e3" from="w" to="v">         <type xlink:href="../../schema/ gxl/crossingSchema.gxl#g"/>      </edge></graph></gxl> <?xml version="1.0"?><!DOCTYPE gxl SYSTEM "../../../gxl-1.0.dtd"><gxl xmlns:xlink= "http://www.w3.org/1999/xlink"><graph id="crossingHierarchies"><type xlink:href="../../schema/gxl/ crossingSchema.gxl#crossingSchema"/>      <node id="t">         <type xlink:href="../../schema/gxl/ crossingSchema.gxl#T"/><graph id="graph2"><type xlink:href="../../schema/gxl/ crossingSchema.gxl#GraphT"/>         <node id="u">             <type xlink:href="../../ schema/gxl/ crossingSchema.gxl#U"/>         </node>         <node id="v"> <type xlink:href= "../../schema/ gxl/crossingSchema.gxl#V"/>         </node>

  33.                <edge id="e1" from="u" to="v">                  <type xlink:href="../../ schema/gxl/ crossingSchema.gxl#E"/>               </edge></graph>      </node>      <node id="w">         <type xlink:href="../../schema/gxl/ crossingSchema.gxl#W"/>      </node>      <edge id="e2" from="t" to="w">         <type xlink:href="../../schema/gxl/ crossingSchema.gxl#f"/>      </edge>      <edge id="e3" from="w" to="v">         <type xlink:href="../../schema/ gxl/crossingSchema.gxl#g"/>      </edge></graph></gxl> <?xml version="1.0"?><!DOCTYPE gxl SYSTEM "../../../gxl-1.0.dtd"><gxl xmlns:xlink= "http://www.w3.org/1999/xlink"><graph id="crossingHierarchies"><type xlink:href="../../schema/gxl/ crossingSchema.gxl#crossingSchema"/>      <node id="t">         <type xlink:href="../../schema/gxl/ crossingSchema.gxl#T"/><graph id="graph2"><type xlink:href="../../schema/gxl/ crossingSchema.gxl#GraphT"/>         <node id="u">             <type xlink:href="../../ schema/gxl/ crossingSchema.gxl#U"/>         </node>         <node id="v"> <type xlink:href= "../../schema/ gxl/crossingSchema.gxl#V"/>         </node>

  34. Weitere Aspekte • Graphmodell von GXL als XML-DTD • Übersetzung manuell durchgeführt ⇒nur 18 XML Elemente notwendig

  35. Graph-Schemata • Graphen stellen Strukturen zur Beschreibung von Objekten (Knoten) und Zusammenhänge (Hyperkanten) bereit • Graphen haben keine eigene Bedeutung ⇒Interpretation eines Graphen durch Betrachtung der dahinterliegenden Anwendung

  36. Anwendung entscheidet über • Knoten, Kanten, Hyperkanten • Beziehungen zwischen Graphobjekten • Attributstrukturen • Graphhierachien • weitere Bedingungen wie Inzidenzordnung, Gradbeschränkung etc.

  37. Darstellung von Graph-Schemata • Schematische Daten werden durch UML-Klassen-Diagramme dargestellt • UML-Klassen-Diagramme können ebenfalls als Graphen dargestellt werden ⇒Konkrete Graphen und Schemata können im selben Dokument beschrieben werden (dies entspricht nicht dem XMI-Ansatz)

  38. Überblick Graph-Klasse Zur Darstellung von Schema-Graphen ist Instanz von UML-Klassen-Diagramm UML-Objekt-Diagramm ist Instanz von dargestellt als visualisiert als GXL-Metaschema repräsentiert als GXL Graph GXL-Schema nutzt definiert wird repräsentiert durch Nach: [7], Seite 2.

  39. 4. GXL in der Praxis / Implementierungen

  40. GXL in der Praxis GXL bzw. seine direkten Vorgänger wurden schon zur Analyse einiger „prominenter“ Anwendungen benutzt • GCC C++ Compiler (1.000.000 LOC) • Linux Kernel (7.000.000 LOC) • Netscape Navigator

  41. Implementierungen • Implementierungen zwar angekündigt, jedoch bisher nicht ausreichend umgesetzt • Einzelne (studentische) Projekte • Stillstand?

  42. Fazit GXL • ist akzeptiertes Graph-Austauschformat • bietet flexibles, erweiterbares Graphformat • ist einfach zu benutzen; intuitiv • wird durch Forschung und Wirtschaft unterstützt • ist (noch) nicht ausreichend implementiert

  43. Ausblick • GXL wird (hoffentlich) immer stärker auch bei bestehenden Softwarepaketen berücksichtigt • GXL ist Grundlage für weitere Graph-Austauschformate • GXL wird das Zusammenwirken einzelner Softwarekomponenten stark vereinfachen

  44. Literatur / Quellen [1] C.Berge: Graphs and Hypergraphs. North-Holland, Amsterdam, 2.Edition, 1976. [2] J.Ebert, A.Franzke. A Declarative Approach to Graph Based Modelling. In: E.Mayr et al. (Hrsg.). Graphtheoretic Concepts in Computer Science, LNCS 903. Springer, Berlin, S. 38 - 50. 1995. [3] J.Ebert, K.Kontogiannis, J.Mylopoulos: Interoperbility of Reengineering Tools. http://www.dagstuhl.de/DATA/Reports/ 01041/, 2001.

  45. Literatur / Quellen [4] A.Winter: Exchanging Graphs with GXL. http://www.gupro.de/GXL, 2001. [5] http://www.gupro.de/GXL/(graph model). [6] http://www.gupro.de/GXL/(DTD). [7] http://ist.unibw-muenchen.de/GXL/volk/ gxl.the_basics/gxl_the_basics.htm.

More Related