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


    Background
    Graph Model
    Examples




    DTD




    Metaschema




    Tools
    Publications
    Links




    Change Requests
    Future

GXL 1.1 
Attribute Module

(alpha release, December 6, 2002)

[gxl-1.1]  [graph-module]

uncommented document type definition: gxl-1.1.dtdgxl-1.1_attribute.dtdgxl-1.1_graph.dtd

copyright by

  Andy Schuerr
    Real-Time Systems Lab
    Darmstadt University of Technology
    Merckstr. 25, D-64283 Darmstadt, Germany
    andy.schuerr@es.tu-darmstadt.de

  Susan Elliott Sim
    School of Information and Computer Science
    444 Computer Science Bldg.
    University of California, Irvine
    ses@ics.uci.edu

  Ric Holt
    Department of Computer Science
    University of Waterloo
    Waterloo N2L 3G1, Canada
    holt@plg.uwaterloo.ca

  Andreas Winter
    Institute for Software Technology
    University of Koblenz-Landau
    Universitaetsstrasse 1, D-56070 Koblenz, Germany
    winter@uni-koblenz.de

GXL has been developed to be an open standard.  No licensing or other legal arrangements are required  for its use, whether commercial and non-commercial.  The specification of GXL is copyright by its authors, to allow control of its evolution. The specification can be reproduced and used without charge, but with explicit acknowledgement of its authors.
-->

<!ENTITY % value-extension   "" >

<!-- Value attributes -->

<!ENTITY % defined "defined (true | false) 'true' " >

<
The defined-attribute is used to handle special value cases, according to CR #17 (zero or nothing / infinity). The descriptions of the atomic values and the composite values show, how the attribute should be used.
-->

<!-- Attribute values -->

<!ENTITY % val "
           locator |
           bool    |
           int     |
           float   |
           string  |
           enum    |
           seq     |
           set     |
           bag     |
           tup     |
           struct  |
           graph
           %value-extension;">

<!--
According to CR #5 (Structs), attributes can be attributes-structs that contain other attributes.
According to CR #3 (Hierarchical Graphs), GXL 1.1 allows graph-valued attributes.
-->

<!--
The val entity groups together attribute types available in GXL, which are the OCL standard data types bool, int, float, string, seq, set, and bag. The composite data types tuples (tup) and enumeration values (enum) are also available. The locator data type is used to to link to arbitrary hyper documents and identifiable XML elements. With GXL 1.1, the types struct and graph have been added to the val-entity.

Additional data types can be adding by redefining %value-extension;.
-->
 

<!-- attr -->

<!ELEMENT attr (%val;) >

<!--
According to CR #12 (attributes of attributes), attributes may not have attributes in GXL 1.1.
-->


<!ATTLIST attr
    id         ID       #IMPLIED
    type       CDATA    #IMPLIED
    name       NMTOKEN  #REQUIRED
    kind       NMTOKEN  #IMPLIED
    validity   (valid | unknown)  "valid"

<!--
The validity attribute is used to specify whether the attribute is valid (that is the case when it is normal) or it's validity is unknown (that is the case when it is derived). This attribute overwrites the default validity defined in the defaultAttrValidity attribute of the graph element.
-->

<!--
An attribute has a name and a value part. GXL provides values from the OCL standard types (bool, int, float, string, seq, set, and bag), as well as tuple and enum, and values which define references to other documents or elements (locator).

The kind attribute is provided to distinguish between different varieties of attributes, for example,  to mark attributes as derived. GXL also optionally supports direct access to attributes by unique attribute identifiers.
-->

<!-- struct -->

<!ELEMENT struct (attr)* >
<!ATTLIST struct
    %defined;
>

<!--
According to CR #5 (Structs), there is now the possibility to store attribute-structs. A struct is an attribute itself and can contain an unlimited amount of other attributes.
-->

<!-- locator -->

<!ELEMENT locator  EMPTY >
<!ATTLIST locator
    xlink:type  (simple)    #FIXED  "simple"
    xlink:href  CDATA       #REQUIRED
        %defined;
>

<!--
Locators provide XLinks (the URI attribute defined in the conceptual model as implemented by XLink) to additional documents or document elements. Those values are used for referencing arbitrary web documents.
-->

<!-- atomic values -->

<!ELEMENT bool    (#PCDATA) >
<!ATTLIST bool
    %defined;
>

<!ELEMENT int     (#PCDATA) >
<!ATTLIST int
    %defined;
>

<!ELEMENT float   (#PCDATA) >
<!ATTLIST float
    %defined;
>

<!ELEMENT string  (#PCDATA) >
<!ATTLIST string
    %defined;
>

<!ELEMENT enum    (#PCDATA) >
<!ATTLIST enum
   
%defined;
>

<!--
All atomic values now have the defined-attribute (defined in %defined;). This indicates wether or not the value is actually defined. Thus, there are now the following possibilities:

string, enum, bool:

empty value:      <string\>
undefined value: <string defined="false" \>
normal value:     <string>abc</string>

int, float, freeType:

empty value:            <int\>
undefined value:       <int defined="false" \>
normal value:            <int>42</int>
infinity:                     <int>infinity</int> or <int>+infinity</int> or <int>-infinity</int>
not a number (float): <float>nan</float>
The default value for defined is 'true'. An undefined value must be empty.
-->
<!ELEMENT freeType  (#PCDATA) >
<!ATTLIST freeType
    %defined;
>

<!--
According to CR #4 (Free Type attribute), GXL 1.1 contains a new attribute called 'freeType'. This attribute contains values of types that are undefined at store-time.
-->

<!--
Atomic values describe boolean, integer, real, string and enumeration values.  GXL uses the grammar rules from Java for the basic types.
 

  • Legal values for bool are true and false (lower case).
  • Legal ints (INT) and floats (FLOAT) are decimal numbers and are represented using the following regular expression.
          DIGIT ::= "0" | ... | "9"
          NONZERODIGIT ::= "1" | ... | "9"
          DIGITS ::= DIGIT+
          INT ::= ["+"|"-"]("infinity" | "0" | NONZERODIGIT DIGIT*)
          FLOATNUMBER ::= ["+"|"-"] (( DIGITS [ "." DIGITS ] ) | ("." DIGITS) [("E" | "e") ["+"|"-"] DIGITS]
          FLOAT ::= FLOATNUMBER | ["+"|"-"]"infinity" | "nan"
  • Strings are encoded using Unicode and inherit further restrictions are from XML.
-->

<!-- composite values -->

<!ELEMENT seq     (%val;)* >
<!ATTLIST seq
    %defined;
>

<!ELEMENT set     (%val;)* >
<!ATTLIST set
    %defined;
>

<!ELEMENT bag     (%val;)* >
<!ATTLIST bag
    %defined;
>

<!ELEMENT tup     (%val;)* >
<!ATTLIST tup
    %defined;
>

<!--
All composite values have the attribute defined, which is used similar to the atomic values. Please note that in this soultion, the type of empty or undefined composite types is unclear. It has to be defined in the according graph-schema.
-->

<!--
GXL supports sequence, set, bag, and tuple container values. Sequences, sets and bags contain further values. All components within a container must have the same type (values).
-->

<!-- (O. Heinen -  December 6, 2002) -->. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

top
July 17, 2002

[change log]
[printable version of this page]