图形描述语言GraphML(2):扩展属性

可以为图形元素定义简单的属性来扩展Graph。属性只能使用xml中的简单类型,如string, numerical等。首先看一个例子:

<? xml version="1.0" encoding="UTF-8" ?>
< graphml  xmlns ="http://graphml.graphdrawing.org/xmlns"   
      xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation
="http://graphml.graphdrawing.org/xmlns 
        http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsd"
>
  
< key  id ="d0"  for ="node"  attr.name ="color"  attr.type ="string" >
    
< default > yellow </ default >
  
</ key >
  
< key  id ="d1"  for ="edge"  attr.name ="weight"  attr.type ="double" />
  
< graph  id ="G"  edgedefault ="undirected" >
    
< node  id ="n0" >
      
< data  key ="d0" > green </ data >
    
</ node >
    
< node  id ="n1" />
    
< node  id ="n2" >
      
< data  key ="d0" > blue </ data >
    
</ node >
    
< node  id ="n3" >
      
< data  key ="d0" > red </ data >
    
</ node >
    
< node  id ="n4" />
    
< node  id ="n5" >
      
< data  key ="d0" > turquoise </ data >
    
</ node >
    
< edge  id ="e0"  source ="n0"  target ="n2" >
      
< data  key ="d1" > 1.0 </ data >
    
</ edge >
    
< edge  id ="e1"  source ="n0"  target ="n1" >
      
< data  key ="d1" > 1.0 </ data >
    
</ edge >
    
< edge  id ="e2"  source ="n1"  target ="n3" >
      
< data  key ="d1" > 2.0 </ data >
    
</ edge >
    
< edge  id ="e3"  source ="n3"  target ="n2" />
    
< edge  id ="e4"  source ="n2"  target ="n4" />
    
< edge  id ="e5"  source ="n3"  target ="n5" />
    
< edge  id ="e6"  source ="n5"  target ="n4" >
      
< data  key ="d1" > 1.1 </ data >
    
</ edge >
  
</ graph >
</ graphml >

 上面的代码可以表示如下的图形:
图形描述语言GraphML(2):扩展属性


可以看出,要增加扩展属性,需要在GraphML中增加属性定义和属性值。

属性定义部分声明了属性的标识(id),适用范围,名称,类型和默认值(可选)。如:

< key  id ="d1"  for ="edge"  attr.name ="weight"  attr.type ="double" />
< key  id ="d0"  for ="node"  attr.name ="color"  attr.type ="string" >
    
< default > yellow </ default >
</ key >

属性值直接作为图形元素(node edge)的子节点,如:

  < node  id ="n0" >
      
< data  key ="d0" > green </ data >
 
</ node >


这样,GraphML的概念包括了:
图形描述语言GraphML(2):扩展属性

你可能感兴趣的:(Graph)