Upload
urbano
View
46
Download
0
Tags:
Embed Size (px)
DESCRIPTION
G raph E x change L anguage An overview. Ric Holt Andreas Winter joint work with Andy Schürr and Susan Sim. Contents. GXL motivation and history GXL requirements GXL features nodes, edges and attributes ordering hypergraphs GXL extended features support for hierarchical graphs - PowerPoint PPT Presentation
Citation preview
CASCON 2000
Universität Koblenz-LandauInstitut für SoftwaretechnikRe-Group
Toronto, 15.11.2000
Graph Exchange Language
An overviewRic Holt
Andreas Winterjoint work with
Andy Schürr and Susan Sim
© Institut für Softwaretechnik Universität Koblenz-Landau
CASCON 2000 (2)
Contents
• GXL motivation and history• GXL requirements• GXL features
– nodes, edges and attributes– ordering – hypergraphs
• GXL extended features– support for hierarchical graphs– support for graph drawing– GXL extension– schemata
• Conclusion and Future Work
© Institut für Softwaretechnik Universität Koblenz-Landau
CASCON 2000 (3)
Interoperability of Tools (examples)
• Acacia C++ parser tool kit and AT&T graph drawing (TA)
• ASIS, GCC and GUPRO (TGraphs)
• Bauhaus Parsers and PBS/LSEDIT (TA)
• CPPANAL and GUPRO (TGraphs)
• Cxref extractor and TA• CFX (PBS) and TA (RSF, TA)• Dali tool kit and Rigi (TA)• Datrix C++ and TA• DaVinci, Graphlet and GUPRO
(TGraphs)
• EDGE and PROGRES• HTML and GUPRO (TGraphs)• Grok (RSF, TA)• GUPRO (multi-language)
Parsers, GReQL-Query and Code-Browser (TGraphs)
• JViews and PROGRES• Mathlab Stateflow and
Daimler-Chrysler CTE (PROGRES)
• PLIX-Parser and TA (RSF,TA)• Rigi parser, Rigi viewer and
TA (RSF)• SNIFF+ and TA
© Institut für Softwaretechnik Universität Koblenz-Landau
CASCON 2000 (4)
GXL Objective
standard exchange language– for interchanging data between
reengineering toolsmathematical model
– typed, attributed, directed graphsnotation
– eXtensible Markup Language (XML)– Unified Modeling Language (UML)
application to other areas in software engineering– graph transformation– graph drawing
© Institut für Softwaretechnik Universität Koblenz-Landau
CASCON 2000 (5)
History
© Institut für Softwaretechnik Universität Koblenz-Landau
CASCON 2000 (6)
GXL Partners
Bell Canada (Datrix Group), CanadaIBM Centre for Advanced Studies, CanadaMahindra British Telecom, India Nokia Research Center (Software Technology Laboratory), FinlandPhilips Research (Software Architecture Group), The NetherlandsRWTH Aachen (Department of Computer Science III), GermanyUniversity of Berne (Software Composition Group), Switzerland University Bw München (Institute for Software Technology), Germany University of Koblenz (IST, Re-Group), Germany University of Oregon (Department of Computer Science), U.S.A. University of Paderborn (AG Softwaretechnik), Germany University of Stuttgart (BAUHAUS Group), Germany University of Victoria (RIGI Group), Canada
University of Waterloo (Software Architecture Group), Canada
© Institut für Softwaretechnik Universität Koblenz-Landau
CASCON 2000 (7)
Quality Criteria• application domain independent • based on an open standard• efficient in time and space
• applicable to most – reengineering approaches
• independent of abstraction levels• independent of programming languages• applicable to large software software systems
– graph transformation approaches• independent of underlying graph models
– graph visualization approaches• independent of graph layout models
© Institut für Softwaretechnik Universität Koblenz-Landau
CASCON 2000 (8)
GXL Design Goals
• simple and compact representation of directed and undirected graphs
• suitable for a broad spectrum of graph models, including support for hypergraphs and hierarchical graphs
• uniform representation of graphs and graph schemas
• support for representation of complex attribute values
• extensibility of graph elements and attribute types
© Institut für Softwaretechnik Universität Koblenz-Landau
CASCON 2000 (9)
GXL Graph Model
© Institut für Softwaretechnik Universität Koblenz-Landau
CASCON 2000 (10)
GXL Attribute Model
© Institut für Softwaretechnik Universität Koblenz-Landau
CASCON 2000 (11)
GXL Document Type Definition
automatic generation of GXL DTD follows MOF/XMI standard entity types and attributes are not distinguished blows up the number of XML elements
(GXL 0.7.2: 136/74 elements)
manual definition of GXL DTD manual work to do distinction between entity types and attributes
reflects design decisions small and simple DTD (20 elements)
© Institut für Softwaretechnik Universität Koblenz-Landau
CASCON 2000 (12)
GXL Document Type Definition
<!ENTITY % *-extension " " >
<!ENTITY % val " %value-extension; locator | bool | int | float | string | seq | set | bag | tup ">
<!ENTITY % context " in | out" >
<!ENTITY % link " inlink | outlink" ><!ELEMENT gxl (%gxl-extension; graph) >
<!ATTLIST gxl xmlns:xlink CDATA #FIXED "www.w3.org/1999/xlink">
<!ELEMENT type EMPTY>
<!ATTLIST type xlink:type (simple) #FIXED "simple" xlink:href CDATA #REQUIRED >
<!ELEMENT graph (%graph-extension; type? , attr* , ( node | edge | rel )*)>
<!ATTLIST graph id ID #REQUIRED edgeids ( true | false ) hypergraph ( true | false ) direction ( directed | undirected)>
<!ELEMENT node (%node-extension; type? , attr*, graph*, (%context;)*) >
<!ATTLIST node id ID #REQUIRED direction ( directed | undirected >
<!ELEMENT in |out (%context-extension; attr*) >
<!ATTLIST in |out ref IDREF #REQUIRED role NMTOKEN #IMPLIED ><!ELEMENT edge (%edge-extension;
type? , attr*, graph*) ><!ATTLIST edge id ID #IMPLIED
from IDREF #REQUIRED to IDREF #REQUIRED direction ( directed | undirected )>
<!ELEMENT rel (%rel-extension; type? , attr*, graph*, (%link;)* ) >
<!ATTLIST rel id ID #IMPLIED direction ( directed | undirected )>
<!ELEMENT inlink | outlink (%link-extension; attr)* > <!ATTLIST inlink | outlink
ref IDREF #REQUIRED role NMTOKEN #IMPLIED >
<!ELEMENT attr (type?, attr*, (%val;)) > <!ATTLIST attr name NMTOKEN #REQUIRED
kind NMTOKEN #IMPLIED > <!ELEMENT locator EMPTY > <!ATTLIST locator xlink:type (simple) #FIXED
xlink:href CDATA #IMPLIED >
<!ELEMENT bool | int | float | string (#PCDATA) ><!ELEMENT seq | set | bag | tup (%val;)* >
© Institut für Softwaretechnik Universität Koblenz-Landau
CASCON 2000 (13)
Nodes, Edges and Attributes
p :
v :
graph <?xml version="1.0"?> <!DOCTYPE gxl SYSTEM "gxl.dtd"> <gxl><graph><node id = "p">
</node><node id = "v">
</node><edge from = "p" to = "v">
</edge><graph></gxl>
e :
id = "e"
<type xlink:href = "schema.gxl#Proc"/>
<type xlink:href = "schema.gxl#Var"/>
<type xlink:href = "schema.gxl#refers"/>
refers
typed
Proc
Var
attributed
file = "main.c"
line = 27
<attr name = "file"> <string>main.c</string></attr>
<attr name = "line"> <int>27</int></attr>
© Institut für Softwaretechnik Universität Koblenz-Landau
CASCON 2000 (14)
Attributed Edges
<edge id = "e" from = "p" to = "v"> <type xlink:href = "schema.gxl#refers"/> <attr name = "line"> <int>42</int> </attr></edge>
p :
v :
Proc
Var
file = "main.c"
line = 27
e : refers
line = 42
© Institut für Softwaretechnik Universität Koblenz-Landau
CASCON 2000 (15)
GXL Documents (DTD)
<!ELEMENT gxl (%gxl-extension; graph) > <!ATTLIST gxl xmlns:xlink CDATA #FIXED
"www.w3.org/1999/xlink">
<!ELEMENT graph (%graph-extension; type? , attr* , ( node | edge | rel )*) >
<!ATTLIST graph id ID #REQUIRED edgeids ( true | false ) "false" hypergraph ( true | false ) "false"
direction ( directed | undirected ) "directed" >
© Institut für Softwaretechnik Universität Koblenz-Landau
CASCON 2000 (16)
Nodes and Edges (DTD)
<!ELEMENT node (%node-extension; type? , attr*, graph*, (%context;)*) >
<!ATTLIST node id ID #REQUIRED direction (directed|undirected ) #IMPLIED>
<!ELEMENT edge (%edge-extension; type? , attr*, graph*)>
<!ATTLIST edge id ID #IMPLIED from IDREF #REQUIRED to IDREF #REQUIRED direction (directed|undirected ) #IMPLIED>
© Institut für Softwaretechnik Universität Koblenz-Landau
CASCON 2000 (17)
<graph direction = "undirected" >...<edge id = "e" from = "p" to = "v"></edge>...</graph>
undirected graph
<graph direction = "directed" >...<edge id = "e" direction = "undirected" from = "p" to = "v"></edge>...</graph>
undirected edgein directed graph
Undirected Graphs
p :
v :
Proc
Var
file = "main.c"
line = 27
e :
edges are always noted as directedbut can be interpreted as undirected
© Institut für Softwaretechnik Universität Koblenz-Landau
CASCON 2000 (18)
Prog
authors = { Ric, Andy, Susan, Andreas }
p :
GXL supports•set,•sequence,•bag,•tuple
of•bool,•int,•float,•string,•complex values
Complex Attributes
<node id = "p"> <type xlink:href = "schema.gxl#prog"/> <attr name = "authors"> <set> <string>Ric</string> <string>Andy</string> <string>Susan</string> <string>Andreas</string> </set> </attr></node>
© Institut für Softwaretechnik Universität Koblenz-Landau
CASCON 2000 (19)
Attributes (DTD)
<!ENTITY % val " %value-extension; locator |
bool | int | float | string | seq | set | bag | tup ">
<!ELEMENT attr (type?, attr*, (%val;)) > <!ATTLIST attr name NMTOKEN #REQUIRED kindNMTOKEN #IMPLIED >
© Institut für Softwaretechnik Universität Koblenz-Landau
CASCON 2000 (20)
Attribute Values (DTD)<!ELEMENT locator EMPTY > <!ATTLIST locator xlink:type (simple) #FIXED "simple" xlink:href CDATA #IMPLIED >
<!ELEMENT bool (#PCDATA) > <!ELEMENT int (#PCDATA) > <!ELEMENT float (#PCDATA) > <!ELEMENT string (#PCDATA) >
<!ELEMENT seq (%val;)* > <!ELEMENT set (%val;)* > <!ELEMENT bag (%val;)* > <!ELEMENT tup (%val;)* >
pointers to external objects
simple attributes
complex attributes
© Institut für Softwaretechnik Universität Koblenz-Landau
CASCON 2000 (21)
Ordering of Incidences
p :
a : b :
c :d :
e :{1} {3}
{2}
{4}
{5} {6}
<node id = "p" >
</node>
<in ref = "a" /> <in ref = "b" /><out ref = "b" /><in ref = "e" /><out ref = "d" /><in ref = "c" />
© Institut für Softwaretechnik Universität Koblenz-Landau
CASCON 2000 (22)
{1}
{2}
v : V
w : W
u : U r :
theSecondU
theFirstU
theV
theW
directed
Hypergraphs
<rel id = "r" direction = "directed"> <outlink ref = "u" role = "theFirstU"/> <outlink ref = "u" role = "theSecondU"/> <inlink ref = "v" role = "theV" /> <outlink ref = "w" role = "theW" /> </rel>
<node id = "u">
<in ref = "u" role = "theSecondU" />
<in ref = "u" role = "thefirstU" />
</node>
v : V
w : W
u : U
theSecondU
theFirstU
theV
theW
{1}
{2}
undirected
r :
"undirected">
direction = "undirected">
© Institut für Softwaretechnik Universität Koblenz-Landau
CASCON 2000 (23)
Hypergraphs (DTD)
<!ELEMENT rel (%rel-extension; type? , attr*, graph*, (%link;)* ) >
<!ATTLIST rel id ID #IMPLIED
direction (directed | undirected) #IMPLIED>
© Institut für Softwaretechnik Universität Koblenz-Landau
CASCON 2000 (24)
Context and Link (DTD)
Node Incidences<!ENTITY % context " in | out" >
<!ELEMENT in | out (%context-extension; attr*) >
<!ATTLIST in |out ref IDREF #REQUIREDrole NMTOKEN #IMPLIED >
Edge Incidences <!ENTITY % link " inlink | outlink" >
<!ELEMENT inlink | outlink (%link-extension; attr)* >
<!ATTLIST inlink | outlinkref IDREF #REQUIREDrole NMTOKEN #IMPLIED >
© Institut für Softwaretechnik Universität Koblenz-Landau
CASCON 2000 (25)
u :
t :
f :
Support for Hierarchical Graphs
v : w :e :<graph> <node id = "v"/> <node id = "w"/> <edge id = "e" from = "v" to = "w"/></graph>
innergraph.xml
<graph> <node id = "t"> <attr name = "inner"> <locator xlink:href = "innergraph.xml"/> </attr> </node> <node id = "u"/> <edge id = "f" from = "t" to = "u"/></graph>
main.xml
by graph-valued attributes
© Institut für Softwaretechnik Universität Koblenz-Landau
CASCON 2000 (26)
Support for Hierarchical Graphs
u :
t :
f :
v : w :e :
Edges crossing hierarchies
<graph> <node id = "t"> <attr name = "inner"> <locator xlink:href = "innergraph.xml"/> </attr> </node> <node id = "u"> <attr name = "inner"> <locator xlink:href = "innergraph.xml#w"/> </attr> </node> <edge id = "f" from = "t" to = "u"/></graph>
main.xml
© Institut für Softwaretechnik Universität Koblenz-Landau
CASCON 2000 (27)
u :
t :
f :
Support for Hierarchical Graphs
v : w :e :
by nested graphs
<node id = "t">
</node><node id = "u"/> <edge id = "f" from = "t" to = "u"/>
<graph> <node id = "v"/> <node id = "w"/> <edge id = "e" from = "v" to = "w"/></graph>
© Institut für Softwaretechnik Universität Koblenz-Landau
CASCON 2000 (28)
Support for Hierarchical Graphs
u :
t :
f :
v : w :e :
Edges crossing hierarchies
g :
<node id = "t"> <graph> <node id = "v"/> <node id = "w"/> <edge id = "e" from = "v" to = "w"/> </graph></node><node id = "u"/> <edge id = "f" from = "t" to = "u"/>
<edge id = "g" from = "u" to = "w"/>
© Institut für Softwaretechnik Universität Koblenz-Landau
CASCON 2000 (29)
Support for Graph Drawing
<node id = "v" <attr name = "position"> <tup> <float>0.0</float> <float>0.0</float> </tup> </attr> <attr name = "width"> <float>2</float> </attr> <attr name = "height"> <float>1.5</float> </attr></edge>
<edge id = "e" from = "v" to = "w"> <attr name = "polyline"> <tup> <float>0.0</float> <float>0.0</float> </tup> <tup> <float>5.0</float> <float>5.0</float> </tup> </attr></edge>
layout data is represented as ordinary attribute
© Institut für Softwaretechnik Universität Koblenz-Landau
CASCON 2000 (30)
GXL Extension
• by redefining entities• by including GXL DTD (external entities)
<!ENTITY % gxl-extension "FOO ," ><!ELEMENT FOO (#PCDATA)>
<!ENTITY % basegxl SYSTEM "gxl.dtd">
%basegxl;
• GXL offers extending– GXL documents– graphs– nodes– edges– hyperedges (rel)– contexts and links – values
© Institut für Softwaretechnik Universität Koblenz-Landau
CASCON 2000 (31)
GXL Extension (DTD)
<!ENTITY % gxl-extension "" > <!ENTITY % graph-extension "" > <!ENTITY % node-extension "" > <!ENTITY % edge-extension "" > <!ENTITY % rel-extension "" > <!ENTITY % value-extension "" > <!ENTITY % context-extension "" > <!ENTITY % link-extension "" >
© Institut für Softwaretechnik Universität Koblenz-Landau
CASCON 2000 (32)
Graph Schema
UML class diagram(schema)
Var
file : string
line : int
line : int
refers
Proc
v : Var
file="main.c"
line = 27
line = 42
e : refers
UML object diagram(graph)
p : Proc
?
© Institut für Softwaretechnik Universität Koblenz-Landau
CASCON 2000 (33)
GXL Schema Representation
UML class diagram
Var
file:string
line : int
line : int
Proc
refers
:Nodetype
name="Proc"
: Attributename="file"
: Domain
name="string"
: Edgetype
name="refers"
: Nodetype
name="Var"
: Domain
name="int"
: Attributename="line"
from
to
hasAttr hasDom
hasAttr
hasAttr
hasDom
approach
schema graph
?
© Institut für Softwaretechnik Universität Koblenz-Landau
CASCON 2000 (34)
GXL Schema Representation
UML class diagram
Var
file:string
line : int
line : int
Proc
refers
Ric´s approach
schema graph
refers :
line : int
Proc :
file : string
Var :
line : int
<node id = "Proc"> <attr name = "file"> <string/> </attr></node><node id = "Var"> <attr name = "line"> <int/> </attr></node><edge id = "refers" from = "Proc" to = "Var"> <attr name = "line"> <int/> </attr></edge>
?
© Institut für Softwaretechnik Universität Koblenz-Landau
CASCON 2000 (35)
GXL Schema Representation
IST Approach clear distinction of
instance and schema level
same notation for all meta levels
conforms UML meta modeling
edges and nodes on Mi are represented by nodes on Mi+1
blows up graph size
Ric´s Approach different interpretation of
attributes depending from meta level
requires "kind"-attributes to distinguish attributes and meta attriubtes
edges/nodes on Mi are represented as edges/nodes on Mi+1
small graphs isomor-phic
to class diagram
© Institut für Softwaretechnik Universität Koblenz-Landau
CASCON 2000 (36)
GXL Tools
converters to/from GXL• progress2gxl, gxl2progress (UAachen)• g2gxl, gxl2g, gxl2sg, gxl2html (UKoblenz) • gxl2rsf (Claudio Riva, Nokia)• gxl2dot (Michal Young, UOregon)• gxl2rsf, rsf2gxl (Jeff Michaud, UVictoria) • gxl2ta, ta2gxl (UWaterloo)
© Institut für Softwaretechnik Universität Koblenz-Landau
CASCON 2000 (37)
GXL Tools: GXL2HTML
p :
v :
e : refers
Proc
Var
file = "main.c"
line = 27
<?xml version="1.0"?> <!DOCTYPE gxl SYSTEM "gxl.dtd"> <gxl><graph><node id = "p">
</node><node id = "v">
</node><edge from = "p" to = "v">
</edge><graph></gxl>
id = "e"
<type xlink:href = "schema.gxl#Proc"/>
<type xlink:href = "schema.gxl#Var"/>
<type xlink:href = "schema.gxl#refers"/>
<attr name = "file"> <string>main.c</string></attr>
<attr name = "line"> <int>27</int></attr>
© Institut für Softwaretechnik Universität Koblenz-Landau
CASCON 2000 (38)
Conclusion
GXL offers a standard exchange language for– directed and undirected– typed– attributed – graphs and hypergraphs
GXL offers a standard exchange language in – Software Reengineering– Graph Transformation– Graph Drawing
more information – http://www.gupro.de/GXL
© Institut für Softwaretechnik Universität Koblenz-Landau
CASCON 2000 (39)
Upcoming Events
• Workshop "Practical Data Interchange Issues with GXL" (after lunch)
• Workshop "Exchange Formats" (WCRE 2000)
• Dagstuhl Seminar "Interoperability of Reengineering Tools"
• APPLIGRAPH Meeting "Exchange Formats for Graph Transformation"
• WoSEF 2001 ???