RDF Graph Modeling Language (RGML)

RGML 1.0 Draft Specification

This version:
    http://www.cs.rpi.edu/~puninj/RGML/draft-rgml-20010619.html
    (provision of the RDF schema for RGML)

Newest version:
    http://www.cs.rpi.edu/~puninj/RGML/draft-rgml.html

Previous version:
    http://www.cs.rpi.edu/~puninj/RGML/draft-rgml-20010525.html

Editors:
    John Punin <puninj@cs.rpi.edu>
    Mukkai Krishnamoorthy <moorthy@cs.rpi.edu>


Abstract

RDF Graph Modeling Language (RGML 1.0) defines an RDF vocabulary to describe graphs structures. RGML is an XML application that conforms the RDF Model and Syntax Specification.

Table of Contents

1. Introduction
2. Motivation
3. RGML Datatypes
4. RGML Classes
    4.1 Graph Class
    4.2 Node Class
    4.3 Edge Class
5. RGML Properties
    5.1 label property
    5.2 directed property
    5.3 nodes property
    5.4 edges property
    5.5 graphs property
    5.6 weight property
    5.7 source property
    5.8 target property
6. RGML Examples
    6.1 Simple Graph Example
    6.2 Webgraph Example
    6.3 RDF Graph Example
    6.4 Subgraph Example
    6.5 Hypergraph Example
    6.6 Mixed Graph Example
7. Acknowledgements

Appendices

A. RDF/XML Serialization of the RGML RDF Schema
B. References


1. Introduction

We present in this specification the RDF Graph Modeling Language (RGML), a W3C RDF vocabulary [RDF]to describe graph structures. General graphs can be seen as Web resources. RGML defines graph, node, and edge as RDF classes and attributes of graphs, such as label and weight, as RDF properties. Some of these RDF properties establish relationships between graph, node, and edge instances. Hence, a graph instance "knows" which node and edge instances belong to this graph. There is no restriction on the number of graph, node, and edge instances that can be defined in a RGML file. Neither is there a restriction about nodes and edges shared between several graphs. Graphs can be included in other graphs; such graphs are called subgraphs. RGML can be easily combined with other RDF vocabularies to add new properties for example, you can add a Dublin Core [DC] dc:title property to a node instance to assign a string title to a node.

Several examples in this specification show how easy it is to describe different kind of graphs using the RGML vocabulary. Our main interest is to describe webgraphs[WWWPAL]. A webgraph describes the structure of a web site where the nodes are web pages and the edges are hyperlinks. We use the Dublin Core [DC] vocabulary to add information to nodes (web pages) such as dc:title (title of the web page), dc:format (mime of the web page), and dc:date (date of creation of the web page). Using RGML we can also define web collections (a collection of web pages that represent one document) as subgraphs of a webgraph. Site-maps can also be seen as graph instances; hence RGML is a good candidate for describing site-maps.

2. Motivation

XML [XML] and XML Schema [XMLSCHEMA] provide a syntactic description of an underlying document. The existing XML vocabularies designed to describe graph structures provide a means to describe structural information about nodes, edges, subgraphs, etc. RGML, based on the W3C RDF/XML model, describes the semantics of graphs, as well as structural information. RGML files are written with the XML syntax, and the semantics use the RDF model. By using RGML,one can describe the graph structures and add statements to describe the elements of the graph. Two graphs may have the same structure even though one may describe network topology while the other may describe a web site. The metadata related to these graphs are different. The RDF model permits the combination of different metadata using XML Namespaces [XMLNS], so it is possible to differentiate between several types of graphs. RGML describes the semantics of an abstract graph based on the appropriate vocabulary. So, for example, when we describe a webgraph, we use the vocabulary of dublin core. The most interesting aspect of RGML is that the semantics of an arbitrary graph can be specified using RDF.

3. RGML Datatypes

RDF Statements about graph elements involve subjects, predicates and objects. Subjects and predicates are RDF Resources, while objects are either RDF Resources or RDF Literals. It is not possible to distinguish the datatypes of RDF Literal values and hence RGML adopts the XML schema datatypes. RGML follows the same syntax given by DAML+OIL ontology markup language [DAML]. The core RGML datatypes are integer, boolean and string datatypes. These datatypes are the range (properties map from a domain to range.) for some RGML properties.

4. RGML Classes

The RGML classes of a general graph: Graph, Node and Edge. Properties of these classes allow the establishment of relationships of these three classes. This will enable a graph instance which relates with several node and edge instances. Two node instances relate with an edge instance.

4.1 Graph Class

  <rdfs:Class rdf:ID="Graph" 
    rdfs:label="Graph"
    rdfs:comment="A Graph Description">
    <rdfs:isDefinedBy rdf:resource="http://purl.org/puninj/2001/05/rgml-schema#"/>
  </rdfs:Class>
The Graph class is an RDF class that defines a general graph. This is the Graph class that is the domain of the RDF properties: label and directed. The nodes and edges RDF properties help to relate instances of the Graph class with instances of Node and Edge classes.  Other kind of graphs such as Webgraphs, RDF graphs, Network graphs can be subclasses of this Graph Class.

4.2 Node Class

  <rdfs:Class rdf:ID="Node" 
    rdfs:label="Node"
    rdfs:comment="A Node Description">
    <rdfs:isDefinedBy rdf:resource="http://purl.org/puninj/2001/05/rgml-schema#"/>
  </rdfs:Class>
The Node class is an RDF class that defines a general node. The label and weight RDF properties have  Node class as domain. All nodes of a graph are instances of these class. Webnodes (web pages) of a Webgraph can be subclasses of the Node class.

4.3 Edge Class

  <rdfs:Class rdf:ID="Edge" 
    rdfs:label="Edge"
    rdfs:comment="An Edge Description">
    <rdfs:isDefinedBy rdf:resource="http://purl.org/puninj/2001/05/rgml-schema#"/>
  </rdfs:Class>
The Edge class is an RDF Class that defines a general edge. The label and weight RDF properties are related to the Edge class. The source and target RDF properties of the edge class allow it to relate with two node instances or, in case of a hypergraph, many node instances.  (The instances of edges that have a list of nodes are called hyperedges. A hyperedge is defined as a subset of a set of nodes. Graphs that contain hyperedges are called hypergraphs. ) Webedges (hyperlinks) of a Webgraph can be subclasses of the Edge class.

5. RGML Properties

The domain of the RGML properties are the Graph, Node and Edge RDF classes. These properties allow the relationship of  instances of the RGML classes to build the structure of a general graph.

5.1 label Property

 <rdf:Property rdf:ID="label"
    rdfs:label="label"
    rdfs:comment="Unique String identifier of the graph elements">
   <rdfs:isDefinedBy rdf:resource="http://purl.org/puninj/2001/05/rgml-schema#"/> 
   <rdfs:domain rdf:resource="http://purl.org/puninj/2001/05/rgml-schema#Graph"/>
   <rdfs:domain rdf:resource="http://purl.org/puninj/2001/05/rgml-schema#Node"/>
   <rdfs:domain rdf:resource="http://purl.org/puninj/2001/05/rgml-schema#Edge"/>
   <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
 </rdf:Property>
The label property is a global property for all instances of the RGML classes. It gives an unique string identifier to the instances of the graphs, nodes and edges.

5.2 directed Property

 <rdf:Property rdf:ID="directed"
    rdfs:label="directed"
    rdfs:comment="Boolean value to indicate whether the Graph is directed or not">
   <rdfs:isDefinedBy rdf:resource="http://purl.org/puninj/2001/05/rgml-schema#"/> 
   <rdfs:domain rdf:resource="http://purl.org/puninj/2001/05/rgml-schema#Graph"/>
   <rdfs:domain rdf:resource="http://purl.org/puninj/2001/05/rgml-schema#Edge"/>
   <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#boolean"/>
 </rdf:Property>
The directed property has a boolean range and a Graph domain. The values that can be assigned to this property are either the tokens true or false. This indicates whether the graph is directed or not. Mixed graphs allow directed and undirected edges in the same graph. The directed property also belong to a specific edge instance to indicate whether that edge is directed or not. This edge property will allow one to describe mixed graphs.

5.3 nodes Property

<rdf:Property rdf:ID="nodes"
   rdfs:label="Nodes"
   rdfs:comment="List of the nodes belong to the graph">
   <rdfs:domain rdf:resource="http://purl.org/puninj/2001/05/rgml-schema#Graph"/>
   <rdfs:domain rdf:resource="http://purl.org/puninj/2001/05/rgml-schema#Edge"/>
   <rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource"/>
</rdf:Property>
The nodes property is an RDF Bag list of the node instances that belongs to the graph. This gives an idea of inclusion so we can determine what nodes are members of the graph. The nodes property can belong to the Edge class. The instances of edges that have a list of nodes are called hyperedges. A hyperedge is defined as a subset of a set of nodes. Graphs that contain hyperedges are called hypergraphs. If the hypergraph is directed, the nodes property of the hyperedges is an RDF Seq. The RDF Seq gives an order to the list of nodes in the hyperedge.

5.4 edges Property

 <rdf:Property rdf:ID="edges"
   rdfs:label="Edges"
   rdfs:comment="List of the edges belong to the graph">
   <rdfs:domain rdf:resource="http://purl.org/puninj/2001/05/rgml-schema#Graph"/>
   <rdfs:range rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag"/>
 </rdf:Property>
The edges property is an RDF Bag list of the edge instances that belongs to the graph. This gives an idea of inclusion so we can determine what edges are members of the graph.

5.5 graphs Property

 <rdf:Property rdf:ID="graphs"
   rdfs:label="Graphs"
   rdfs:comment="List of subgraphs belong to the graph">
   <rdfs:domain rdf:resource="http://purl.org/puninj/2001/05/rgml-schema#Graph"/>
   <rdfs:range rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag"/>
 </rdf:Property>
The graphs property is an RDF Bag list of the subgraph instances of the graph parent. By using this property, we can relate subgraphs with the graph that they are originated from.

5.6 weight Property

 <rdf:Property rdf:ID="weight"
    rdfs:label="weight"
    rdfs:comment="Value (usually numerical) to show the node or edge weight">
   <rdfs:isDefinedBy rdf:resource="http://purl.org/puninj/2001/05/rgml-schema#"/> 
   <rdfs:domain rdf:resource="http://purl.org/puninj/2001/05/rgml-schema#Node"/>
   <rdfs:domain rdf:resource="http://purl.org/puninj/2001/05/rgml-schema#Edge"/>
   <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
 </rdf:Property>
The weight property belongs to Node and Edge instances. The weight is usually a numerical value assigned to a node or edge in a weighted graph.

5.7 source Property

 <rdf:Property rdf:ID="source"
    rdfs:label="source"
    rdfs:comment="The rdf:ID the source node of the edge">
   <rdfs:isDefinedBy rdf:resource="http://purl.org/puninj/2001/05/rgml-schema#"/> 
   <rdfs:domain rdf:resource="http://purl.org/puninj/2001/05/rgml-schema#Edge"/>
   <rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource"/>
 </rdf:Property>
The source property is used to indicate the source node instance of a edge instance.

5.8 target Property

 <rdf:Property rdf:ID="target"
    rdfs:label="node"
    rdfs:comment="The rdf:ID of the target node of the edge">
   <rdfs:isDefinedBy rdf:resource="http://purl.org/puninj/2001/05/rgml-schema#"/> 
   <rdfs:domain rdf:resource="http://purl.org/puninj/2001/05/rgml-schema#Edge"/>
   <rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource"/>
 </rdf:Property>
The target property is used to indicate the target node instance of a edge instance.

6. RGML Examples

6.1 Simple Graph Example

This is a simple graph with three nodes and two edges. See Figure 1 for a graphical representation of this simple graph.
 
Figure 1: Simple Graph
<?xml version="1.0" encoding="utf-8"?> 

<rdf:RDF 
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
  xmlns="http://purl.org/puninj/2001/05/rgml-schema#"
  xmlns:rgml="http://purl.org/puninj/2001/05/rgml-schema#"
> 

<Graph rdf:ID="g1" rgml:directed="true">
   <nodes>
      <rdf:Bag>
         <rdf:li rdf:resource="#n1"/>
         <rdf:li rdf:resource="#n2"/>
         <rdf:li rdf:resource="#n3"/>
      </rdf:Bag>
   </nodes>

   <edges>
      <rdf:Bag>
         <rdf:li rdf:resource="#e1"/>
         <rdf:li rdf:resource="#e2"/>
      </rdf:Bag>
   </edges>
</Graph>

<Node rdf:ID="n1"/>
<Node rdf:ID="n2"/>
<Node rdf:ID="n3"/>

<Edge rdf:ID="e1">
    <source rdf:resource="#n1"/>
    <target rdf:resource="#n2"/>
</Edge>
<Edge rdf:ID="e2">
    <source rdf:resource="#n1"/>
    <target rdf:resource="#n3"/>
</Edge>

</rdf:RDF>

6.2 Webgraph Example

This graph is a webgraph where the two nodes represent two web pages and the edges represent the hyperlinks between those web pages. We used the Dublin Core vocabulary to add properties to the nodes such as dc:title, dc:format and dc:date. The dc:title indicates the title of the web page, the dc:format indicates the mime type of the web page, and the dc:date indicates the date of creation of the web page. The rgml:weight property indicates the size in bytes of the web page. The rgml:label of the node is used to hold the URL of the web page and the rgml:label of the edge is used to hold the anchor text of the hyperlink. See Figure 2 for a graphical representation of this webgraph.
 
Figure 2: Webgraph Example
<?xml version="1.0" encoding="utf-8"?> 

<rdf:RDF 
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
  xmlns="http://purl.org/puninj/2001/05/rgml-schema#"
  xmlns:rgml="http://purl.org/puninj/2001/05/rgml-schema#"
  xmlns:dc="http://purl.org/dc/elements/1.1/"> 

<Graph rdf:ID="g1" rgml:directed="true">
   <nodes>
      <rdf:Bag>
         <rdf:li rdf:resource="#n1"/>
         <rdf:li rdf:resource="#n2"/>
         <rdf:li rdf:resource="#n3"/>
      </rdf:Bag>
   </nodes>

   <edges>
      <rdf:Bag>
         <rdf:li rdf:resource="#e1"/>
         <rdf:li rdf:resource="#e2"/>
      </rdf:Bag>
   </edges>
</Graph>

<Node rdf:ID="n1" rgml:label="http://www.cs.rpi.edu/" 
      rgml:weight="3678">
  <dc:title>Rensselaer Computer Science Department</dc:title>
  <dc:date>2001-03-01</dc:date>
  <dc:format>text/html</dc:format>
</Node>
<Node rdf:ID="n2" rgml:label="http://www.cs.rpi.edu/people/" 
      rgml:weight="10611">
  <dc:title>People at Rensselaer Computer Science Department</dc:title>
  <dc:date>2001-02-26</dc:date>
  <dc:format>text/html</dc:format>
</Node>
<Node rdf:ID="n3" rgml:label="http://www.cs.rpi.edu/courses/"
      rgml:weight="6968">
  <dc:title>Courses at Rensselaer Computer Science Department</dc:title>
  <dc:date>2001-01-25</dc:date>
  <dc:format>text/html</dc:format>
</Node>

<Edge rdf:ID="e1" rgml:label="Courses">
    <source rdf:resource="#n1"/>
    <target rdf:resource="#n2"/>
</Edge>
<Edge rdf:ID="e2" rgml:label="People">
    <source rdf:resource="#n1"/>
    <target rdf:resource="#n3"/>
</Edge>

</rdf:RDF>

6.3 RDF Graph Example

This is the RGML description of the famous RDF Graph [RDF] that represents the statement: "Ora Lassila is the creator of the resource http://www.w3.org/Home/Lassila". See Figure 3 for a graphical representation of this RDF graph.
 
Figure 3: RDF graph Example
<?xml version="1.0" encoding="utf-8"?> 

<rdf:RDF 
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
  xmlns="http://purl.org/puninj/2001/05/rgml-schema#"
  xmlns:rgml="http://purl.org/puninj/2001/05/rgml-schema#">

<Graph rdf:ID="g1" rgml:directed="true">
   <nodes>
      <rdf:Bag>
         <rdf:li rdf:resource="#n1"/>
         <rdf:li rdf:resource="#n2"/>
      </rdf:Bag>
   </nodes>

   <edges>
      <rdf:Bag>
         <rdf:li rdf:resource="#e1"/>
      </rdf:Bag>
   </edges>
</Graph>

<Node rdf:ID="n1" rgml:label="http://www.w3.org/Home/Lassila"/>
<Node rdf:ID="n2" rgml:label="Ora Lassila"/>

<Edge rdf:ID="e1" rgml:label="Creator">
    <source rdf:resource="#n1"/>
    <target rdf:resource="#n2"/>
</Edge>

</rdf:RDF>

6.4 Subgraph Example

This example shows how RGML represents one graph with  two subgraphs. See Figure 4 for a graphical representation of this subgraph example.
 
 
 
Figure 4: Subgraph Example
<?xml version="1.0" encoding="utf-8"?> 

<rdf:RDF 
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
  xmlns="http://purl.org/puninj/2001/05/rgml-schema#"
  xmlns:rgml="http://purl.org/puninj/2001/05/rgml-schema#">

<Graph rdf:ID="g1" rgml:directed="true">
   <graphs>
      <rdf:Bag>
         <rdf:li rdf:resource="#g2"/>
         <rdf:li rdf:resource="#g3"/>
      </rdf:Bag>
   </graphs>
</Graph>

<Graph rdf:ID="g2" rgml:directed="true">
   <nodes>
      <rdf:Bag>
         <rdf:li rdf:resource="#n1"/>
         <rdf:li rdf:resource="#n2"/>
      </rdf:Bag>
   </nodes>

   <edges>
      <rdf:Bag>
         <rdf:li rdf:resource="#e1"/>
      </rdf:Bag>
   </edges>
</Graph>

<Graph rdf:ID="g3" rgml:directed="true">
   <nodes>
      <rdf:Bag>
         <rdf:li rdf:resource="#n3"/>
         <rdf:li rdf:resource="#n4"/>
      </rdf:Bag>
   </nodes>

   <edges>
      <rdf:Bag>
         <rdf:li rdf:resource="#e2"/>
      </rdf:Bag>
   </edges>
</Graph>

<Node rdf:ID="n1"/>
<Node rdf:ID="n2"/> 
<Node rdf:ID="n3"/>
<Node rdf:ID="n4"/>

<Edge rdf:ID="e1">
    <source rdf:resource="#n1"/>
    <target rdf:resource="#n2"/>
</Edge>
<Edge rdf:ID="e2">
    <source rdf:resource="#n3"/>
    <target rdf:resource="#n4"/>
</Edge>

</rdf:RDF>

6.5 Hypergraph Example

A Hypergraph is defined as a set of vertices and a set of edges called hyperedges. A hyperedge is a subset of the set of vertices. If the hypergraph is directed the hyperedge is an ordered set of vertices; and if the hypergraph is undirected, the hyperedge is an unordered set of vertices. The following RGML example describes a directed hypergraph.
<?xml version="1.0" encoding="utf-8"?> 

<rdf:RDF 
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
  xmlns="http://purl.org/puninj/2001/05/rgml-schema#"
  xmlns:rgml="http://purl.org/puninj/2001/05/rgml-schema#"
> 

<Graph rdf:ID="g1" rgml:directed="true">
   <nodes>
      <rdf:Bag>
         <rdf:li rdf:resource="#n1"/>
         <rdf:li rdf:resource="#n2"/>
         <rdf:li rdf:resource="#n3"/>
         <rdf:li rdf:resource="#n4"/>
      </rdf:Bag>
   </nodes>

   <edges>
      <rdf:Bag>
         <rdf:li rdf:resource="#e1"/>
         <rdf:li rdf:resource="#e2"/>
      </rdf:Bag>
   </edges>
</Graph>

<Node rdf:ID="n1"/>
<Node rdf:ID="n2"/>
<Node rdf:ID="n3"/>
<Node rdf:ID="n4"/>


<Edge rdf:ID="e1">
    <source rdf:resource="#n1"/>
    <target rdf:resource="#n2"/>
</Edge>

<Edge rdf:ID="e2">
   <nodes>
      <rdf:Seq>
         <rdf:li rdf:resource="#n2"/>
         <rdf:li rdf:resource="#n3"/>
         <rdf:li rdf:resource="#n4"/>
      </rdf:Seq>
   </nodes>
</Edge>

</rdf:RDF>

6.6 Mixed Graph Example

A mixed graph is a graph that contains directed and undirected edges. The directed property is a property of the Graph and Edge class. When this property has a value of "true" and it is a Graph property,  the graph is directed. We can force an edge to be undirected by setting the directed property for this edge a false value. The following RGML example describes a simple mixed graph. See Figure 5 for a graphical representation of this mixed graph example.
 
 
Figure 5: Mixed graph Example
<?xml version="1.0" encoding="utf-8"?> 

<rdf:RDF 
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
  xmlns="http://purl.org/puninj/2001/05/rgml-schema#"
  xmlns:rgml="http://purl.org/puninj/2001/05/rgml-schema#"
> 

<Graph rdf:ID="g1" rgml:directed="true">
   <nodes>
      <rdf:Bag>
         <rdf:li rdf:resource="#n1"/>
         <rdf:li rdf:resource="#n2"/>
         <rdf:li rdf:resource="#n3"/>
      </rdf:Bag>
   </nodes>

   <edges>
      <rdf:Bag>
         <rdf:li rdf:resource="#e1"/>
         <rdf:li rdf:resource="#e2"/>
      </rdf:Bag>
   </edges>
</Graph>

<Node rdf:ID="n1"/>
<Node rdf:ID="n2"/>
<Node rdf:ID="n3"/>


<Edge rdf:ID="e1">
    <source rdf:resource="#n1"/>
    <target rdf:resource="#n2"/>
</Edge>

<Edge rdf:ID="e2" rgml:directed="false">
    <source rdf:resource="#n2"/>
    <target rdf:resource="#n3"/>
</Edge>

</rdf:RDF>

Acknowledgements

We would like to thank Dan Brickley for asking to describe graph structures using the RDF Model. Thanks to Sean Palmer for his valuable input in RGML design. Thanks to Lee Jonas, Brian McBride and Art Barstow for their comments about RGML. Thanks to Gerard Uffelman for reviewing several drafts of this manuscript.

Appendices

A. RDF/XML Serialization of the RGML RDF Schema

<?xml version="1.0" ?> 
<!-- 
     RDF Schema declaration for RDF Graph Modeling Language (RGML) 1.0 
     &lt;http://purl.org/puninj/2001/05/rgml-schema#&gt;
     
     John Punin (puninj@cs.rpi.edu)
     05-26-2001
-->
<rdf:RDF 
     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
     xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
     xmlns:rgml="http://purl.org/puninj/2001/05/rgml-schema#">

<!-- Class Declarations -->

<!-- Graph Class declaration -->

  <rdfs:Class rdf:ID="Graph" 
    rdfs:label="Graph"
    rdfs:comment="A Graph Description">
    <rdfs:isDefinedBy rdf:resource="http://purl.org/puninj/2001/05/rgml-schema#"/>
  </rdfs:Class>

<!-- Node Class declaration -->

  <rdfs:Class rdf:ID="Node" 
    rdfs:label="Node"
    rdfs:comment="A Node Description">
    <rdfs:isDefinedBy rdf:resource="http://purl.org/puninj/2001/05/rgml-schema#"/>
  </rdfs:Class>

<!-- Edge Class declaration -->

  <rdfs:Class rdf:ID="Edge" 
    rdfs:label="Edge"
    rdfs:comment="An Edge Description">
    <rdfs:isDefinedBy rdf:resource="http://purl.org/puninj/2001/05/rgml-schema#"/>
  </rdfs:Class>

<!-- Property declarations -->

<!-- Global Properties -->

 <rdf:Property rdf:ID="label"
    rdfs:label="label"
    rdfs:comment="Text representation of the graph elements">
   <rdfs:isDefinedBy rdf:resource="http://purl.org/puninj/2001/05/rgml-schema#"/> 
   <rdfs:domain rdf:resource="http://purl.org/puninj/2001/05/rgml-schema#Graph"/>
   <rdfs:domain rdf:resource="http://purl.org/puninj/2001/05/rgml-schema#Node"/>
   <rdfs:domain rdf:resource="http://purl.org/puninj/2001/05/rgml-schema#Edge"/>
   <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
 </rdf:Property>

<!-- Graph Properties -->

 <rdf:Property rdf:ID="directed"
    rdfs:label="directed"
    rdfs:comment="Boolean value to indicate whether the Graph is directed or not">
   <rdfs:isDefinedBy rdf:resource="http://purl.org/puninj/2001/05/rgml-schema#"/> 
   <rdfs:domain rdf:resource="http://purl.org/puninj/2001/05/rgml-schema#Graph"/>
   <rdfs:domain rdf:resource="http://purl.org/puninj/2001/05/rgml-schema#Edge"/>
   <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#boolean"/>
 </rdf:Property>

 <rdf:Property rdf:ID="nodes"
   rdfs:label="Nodes"
   rdfs:comment="List of the nodes belong to the graph">
   <rdfs:domain rdf:resource="http://purl.org/puninj/2001/05/rgml-schema#Graph"/>
   <rdfs:domain rdf:resource="http://purl.org/puninj/2001/05/rgml-schema#Edge"/>
   <rdfs:range rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Resource"/>
 </rdf:Property>

 <rdf:Property rdf:ID="edges"
   rdfs:label="Edges"
   rdfs:comment="List of the edges belong to the graph">
   <rdfs:domain rdf:resource="http://purl.org/puninj/2001/05/rgml-schema#Graph"/>
   <rdfs:range rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag"/>
 </rdf:Property>

 <rdf:Property rdf:ID="graphs"
   rdfs:label="Subgraphs"
   rdfs:comment="List of subgraphs belong to the graph">
   <rdfs:domain rdf:resource="http://purl.org/puninj/2001/05/rgml-schema#Graph"/>
   <rdfs:range rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag"/>
 </rdf:Property>

<!-- Node Properties -->

 <rdf:Property rdf:ID="weight"
    rdfs:label="weight"
    rdfs:comment="Value (usually numerical) to show the node or edge weight">
   <rdfs:isDefinedBy rdf:resource="http://purl.org/puninj/2001/05/rgml-schema#"/> 
   <rdfs:domain rdf:resource="http://purl.org/puninj/2001/05/rgml-schema#Node"/>
   <rdfs:domain rdf:resource="http://purl.org/puninj/2001/05/rgml-schema#Edge"/>
   <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
 </rdf:Property>

<!-- Edge Properties -->

 <rdf:Property rdf:ID="source"
    rdfs:label="source"
    rdfs:comment="The source node of the edge">
   <rdfs:isDefinedBy rdf:resource="http://purl.org/puninj/2001/05/rgml-schema#"/> 
   <rdfs:domain rdf:resource="http://purl.org/puninj/2001/05/rgml-schema#Edge"/>
   <rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource"/>
 </rdf:Property>

 <rdf:Property rdf:ID="target"
    rdfs:label="target"
    rdfs:comment="The target node of the edge">
   <rdfs:isDefinedBy rdf:resource="http://purl.org/puninj/2001/05/rgml-schema#"/> 
   <rdfs:domain rdf:resource="http://purl.org/puninj/2001/05/rgml-schema#Edge"/>
   <rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource"/>
 </rdf:Property>

</rdf:RDF>

B. References

[DAML] DARPA Agent Markup Language (DAML). http://www.daml.org/ [DC] S. Weibel, J.Kunze, C. Lagoze, and M. Wolf. Dublin Core Metadata for Resource Discovery, Internet RFC 2413. http://purl.oclc.org/dc/, 1998

[RDF] O. Lassila and R. Swick. W3C, Resource Description Framework (RDF) Model and Syntax Specification http://www.w3.org/TR/REC-rdf-syntax, 1999

[RDFS] D. Brickley and R.V. Guha. W3C, Resource Description Framework (RDF) Schema Specification 1.0. http://www.w3.org/TR/rdf-schema/, 2000

[WWWPAL] J. Punin, M. Krishnamoorthy. WWWPal System - A System for Analysis and Synthesis of Web Pages. In Proceedings of the WebNet 98 Conference, Orlando, November, 1998.

[XML] T. Bray, J. Paoli and C. M. Sperberg-McQueen, Extensible Markup Language (XML 1.0) - http://www.w3.org/TR/REC-xml, 2000

[XMLNS] T. Bray, D. Hollander and A. Layman. Namespaces in XML, http://www.w3.org/TR/REC-xml-names, 1999

[XMLSCHEMA] H. Thompson et al. XML Schema Part 1: Structures. http://www.w3.org/TR/xmlschema-1, 2001.