GXL Ric Holt , Andy Schürr, Susan Elliott Sim, Andreas Winter
Graph eXchange Language


    Background
    Introduction
    FAQ
    Examples
    Publications




    DTD
    XML Schema




    Graph Model
    Metaschema




    Tool Catalogue
    Downloads




    Change Requests
    Future
    GXL 1.1

Frequently Asked Questions

Here, you find a list of questions (and answers, of course) that might support your understanding of GXL. Some of the questions have been derived from the GXL mailinglist, others where added because we considered them useful, at least to approach completeness. If you have any further questions that you don't see answered here, feel free to post to the mailinglist or contact us directly.

General questions
In one sentence: what is GXL?
Where can I find a detailed introduction for GXL?
I am still not satisfied - where can I find further information?
Why should I use GXL?
Is GXL a standard?
Where can I find a list of tools that support GXL?
Where can I find examples on GXL?
Where can I find the current GXL DTD?
Is there an XML Schema definition for GXL?
Which is the current GXL version?
Are GXL 1.0 and GXL 1.1 compatible?
Is there a way to transform between GXL 1.0 and 1.1?
I found a reference to GXL DTD 1.0.1, but I cannot find this dtd.
What kinds of graphs can GXL handle?
I don't understand this schema things. Where can I find information?
Do I need to use schemas in order to use GXL?
What is the GXL metaschema?
Questions concerning the DTD
How are enumerations defined?
What exactly is a bag?
What exactly is a set?
What exactly is a seq?
What exactly is a tup?
What is the difference between role and type?
If edgeids is true, must all edges have ids?
If the hypergraph is set to false, may the graph contain a relation with exactly two relends?
Is it illegal for a graph to contain two edges of the same type that has the same endpoints (If the edges doesn't have an id)?
What does defaultdirected/defaultundirected mean?
Are fromorder/toorder/startorder/endorder application defined, or must you use numbers starting from 1 and upwards?
Are edges/incidences implicitly ordered if they don't contain the according order attribute? In that case, how?
What is the kind attribute used for?
Must edges, that are crossing hierarchical bounds, be defined in the least common ancestor graph?
May edges cross graph boundaries on the same level (since that would create one graph, not two) ?
Is it legal to have a connection between a node and an edge?
Why should you use the extension mechanism? Doesn't that go against the idea of creating a standard?
May edges and hyperedges only connect graph elements (i.e. you cannot connect attributes for example)?
May the same graph element contain two attributes with the same name?
You state in the introductory conclusion that graph element attributes are used for layout information (x, y). I think I've read somewhere else that you didn't want to mix graph and graph layout information?
Questions concerning the Metaschema
According to the Metaschema, is an EdgeClass allowed to 'inherit' from a NodeClass?
Is circular inheritance allowed in GXL?
Participating in GXL
I have implemented GXL support in my tool. What do I have to do to appear in the tool catalogue?
I have found old/faulty information about my tool in the tool catalogue.
Is usage of GXL free?
I have suggestions for improving GXL - who can I tell?
How can I tell that my GXL files are valid?
I want to implement GXL support in my tool - is there an API I can use?
Since GXL is primarily designed as an exchange format - are there reasons why I should not use it as underlying data format for my tool?
Is there a GXL mailinglist and how can I participate?
Other Questions
I have a question that is not answered here. Who can help me?

General questions
In one sentence: what is GXL?
GXL (Graph eXchange Language) is an XML based exchange format for several kinds of graph information.

Where can I find a detailed introduction for GXL?
There is a detailed online introduction on the GXL Homepage.

I am still not satisfied - where can I find further information?
The GXL Homepage provides an almost complete overview for GXL. There, you can find information on GXL's background, GXL related publications as well as some examples. Last but not least, this FAQ should help you to find information more quickly. If you still have open questions, we invite you to post them in the GXL mailinglist or to write us an email.

Why should I use GXL?
As an exchange format, GXL was designed to facilitate interoperability of reenigineering tools. Meanwhile, GXL is being used not only by reengineering tools, but by several kinds of tools that handle graph based data. Usage of GXL, that means, importing and exporting GXL from your tool, makes it easy four you to make use of other tools from the same research area. We try to list up tools that we know or that we were told to support GXL in the tool catalogue. To be honest, it is most unlikely that this list provides a complete overview, since the number of GXL participants is fast growing.

Is GXL a standard?
GXL is used by many graph-based tools in software engineering and other areas (cf. to the tool catalogue). GXL 1.0 was ratified as standard exchange format for tools in reverse engineering at the Dagstuhl Seminar on Interoperability of Reverse engineering tools (http://www.dagstuhl.de/01041/Report/).

Where can I find a list of tools that support GXL?
We are collecting information on GXL suppporting tools in our tool catalogue.

Where can I find examples on GXL?
A set of various GXL examples can be found on the examples pages. You can view the examples in your browser window or download the complete set as .zip or .tgz archive.

Where can I find the current GXL DTD?
The current GXL DTD, either as a plain .dtd file or in a commented and beautified HTML version, can be found on the DTD page.

Is there an XML Schema definition for GXL?
Yes, we also hav an XML schema definition for GXL, which can be found on the XML Schema page

Which is the current GXL version?
GXL 1.0 ist the current GXL version, but an extended and reviewed version, GXL 1.1, is already in the offing. The changes towards this version are based on change request that were brought up by the members of the GXL community (the peopole, who are working with GXL or with tools that support GXL).

Are GXL 1.0 and GXL 1.1 compatible?
They are, of course, almost compatible, but not hundret per cent, due to some structural changes which entail that GXL 1.0 files won't validate against the GXL 1.1 DTD and vice versa.

Is there a way to transform between GXL 1.0 and 1.1?
As soon as GXL 1.1 will be finally established, we will provide filters to transform from GXL 1.0 to GXL 1.1 and vice versa, as well as detailed information on the changes that took place.

I found a reference to GXL DTD 1.0.1, but I cannot find this dtd.
GXL 1.0.1 was an internal variant for some experiments. If you find a link to GX 1.0.1, please tell us and we will fix it.

What kinds of graphs can GXL handle?
GXL can store typed, attributed, directed ordered graphs (short TGraphs), hypergraphs (graphs containing n-ary relations rather than only binary relations) and hierarchical graphs (graphs that contain other graphs). An UML schema, representing that class of graphs that are supported by GXL, can be found in the Graph Model.

I don't understand this schema things. Where can I find information?
Information on exchanging schemas can be found in the online introduction in section four. Examples for schemas can be found on the examples pages.

Do I need to use schemas in order to use GXL?
No, usage of schemas is not mandatory.

What is the GXL metaschema?
The GXL metaschema is a self-defining schema graph for all schema graphs. So, if you choose to exchange your graphs with a schema, your graph accords to this schema while the schema accords to the GXL metaschema, which in turn accords to itself. The metaschema as an UML class diagram can be found on the Metaschema page as well as in it's GXL representation on the examples pages .


top
Questions concerning the DTD
How are enumerations defined?
Enumerations are strings that may contain only specified values. Those values have to be specified in the schema. If you don't use a schema, an enum may contain any string.

What exactly is a bag?
A bag is a multiset of elements.

What exactly is a set?
A set is an unordered set of elements. A set may not contain duplicates. Thus, a set is a set is a set is a set ....

What exactly is a seq?
A seq (sequence) is an ordered sequence of elements. A seq may contain duplicates.

What exactly is a tup?
A tup (tuple) is an ordered sequence with a fixed number of elements. A tup may contain duplicates.

What is the difference between role and type?
Role is an optional attribute for relend elements. Since roles are no typed elements, role could be seen as a kind of type. Graphs may also have a role. This describes the role of the graph in a hierarchy of graphs.

If edgeids is true, must all edges have ids?
No, if edgeids is true, edges may have ids, but edges without an id are allowed as well.

If the hypergraph is set to false, may the graph contain a relation with exactly two relends?
No, a graph with such a relation is still a hypergraph.

Is it illegal for a graph to contain two edges of the same type that has the same endpoints (If the edges doesn't have an id)?
No, this is not prohibited. Yet it is recommended in this case for the edges to have an id.

What does defaultdirected/defaultundirected mean?
This defines, whether the edges of the graph are directed or undirected by default. This can be overwritten by each single edge.

Are fromorder/toorder/startorder/endorder application defined, or must you use numbers starting from 1 and upwards?
The values of these attributes shall be numbers that simply have to from an ordering. E.g. 1,2,3 is fine, also 5, 10, 15, but not 1, 2, 2, 3.

Are edges/incidences implicitly ordered if they don't contain the according order attribute? In that case, how?
No, there is no implicite ordering. In GXL 1.0 this only works for incidences. Edges, nodes and rels are implicitely orderd according their occurrence in the gxl file. GXL 1.1 uses an order attribute for defining ordering of graphobjects explicitely.

What is the kind attribute used for?
Kind distinguishs between different varieties of attributes, for example, to mark attributes as derived.

Must edges, that are crossing hierarchical bounds, be defined in the least common ancestor graph?
They should be defined there.

May edges cross graph boundaries on the same level (since that would create one graph, not two) ?
Yes, they can and it's still two seperate graphs. The only contition is: they must have a common supergraph.

Is it legal to have a connection between a node and an edge?
Yes, GXL allows edges (and relations) between any two (or more) graph elements.

Why should you use the extension mechanism? Doesn't that go against the idea of creating a standard?
It was intended to define some standard extension points to embed GXL in other areas.

May edges and hyperedges only connect graph elements (i.e. you cannot connect attributes for example)?
Right.

May the same graph element contain two attributes with the same name?
No, that is not allowed.

You state in the introductory conclusion that graph element attributes are used for layout information (x, y). I think I've read somewhere else that you didn't want to mix graph and graph layout information?
GXL does not contain layout information, we only describe graph structure. But since we support attributed graphs, you can define graph attributes for layout information.

top
Questions concerning the Metaschema
According to the Metaschema, is an EdgeClass allowed to 'inherit' from a NodeClass?
In a valid GXL schema, an EgdeClass cannot inherit from a NodeClass (and vice versa, the same applies to RelationClass).

Is circular inheritance allowed in GXL?
No, this is not allowed.



top
Participating in GXL
I have implemented GXL support in my tool. What do I have to do to appear in the tool catalogue?
Congratulations and welcome to the GXL community. Please send us an email with some information about your tool. A short description, a contact address and a link to the tool homepage would be nice to have.

I have found old/faulty information about my tool in the tool catalogue.
Please send uns an email with the corrected information.

Is usage of GXL free?
Of course, it is (c.f. the copyright on the DTD page).

I have suggestions for improving GXL - who can I tell?
You could either send us your suggestions via email or discuss them with other GXL users in the GXL mailinglist.

How can I tell that my GXL files are valid?
We recommend you to download a version of the GXL validator from our Download page. This tool validates GXL graphs against the GXL DTD, theirs schema graphs (if assigned) and some additional constraints, that cannot be represented through the DTD but are explained in the commented version of the DTD. The GXL validator is available for Linux and Microsoft Windows.

I want to implement GXL support in my tool - is there an API I can use?
A GXL C++ API will be available on the GXL homepage sooner or later (in fact, it already exists, but is not yet suitable for usage in foreign projects). In the tool catalogue, there is also a link to a GXL Java API.

Since GXL is primarily designed as an exchange format - are there reasons why I should not use it as underlying data format for my tool?
The XML tags make GXL a little large, and therefore, time-consuming to read in. However, if this is no concern for you, then you can happily use GXL as a source data structure.

Is there a GXL mailinglist and how can I participate?
Yes, there is a GXL mailinglist. To post messages, post to gxl@uni-koblenz.de. Everybody, who is interested in the developement of GXL, is invited to join the mailingslist by registering on the mailinglist homepage. Old posts from the mailinglist can be found in the GXL archives.

top
Other Questions
I have a question that is not answered here. Who can help me?
We.

top
top
July 17, 2002

[change log]
[printable version of this page]