B.2 GraphMLデータ形式

GraphMLファイル形式では、XMLを使用してグラフを記述します。

  • このトピックの最初の例は、プロパティ・グラフとはに示すプロパティ・グラフのGraphMLの記述を示しています。

  • このトピックの2番目の例では、Tinkerpop 3に対する同じグラフのGraphMLの説明を示しています。頂点およびエッジ・ラベルがそれぞれlabelVおよびlabelEとして追加されていることに注意してください。

例B-3 単純なプロパティ・グラフのGraphMLの記述

<?xml version="1.0" encoding="UTF-8"?>
<graphml xmlns="http://graphml.graphdrawing.org/xmlns">
    <key id="name" for="node" attr.name="name" attr.type="string"/>
    <key id="age" for="node" attr.name="age" attr.type="int"/>
    <key id="type" for="edge" attr.name="type" attr.type="string"/>
    <graph id="PG" edgedefault="directed">
        <node id="1">
            <data key="name">Alice</data>
            <data key="age">31</data>
        </node>
        <node id="2">
            <data key="name">Bob</data>
            <data key="age">27</data>
        </node>
        <edge id="3" source="1" target="2" label="knows">
            <data key="type">friends</data>
        </edge>
    </graph>
</graphml>

例B-4 単純なプロパティ・グラフのTinkerpop 3 GraphMLの記述

<?xml version="1.0" encoding="UTF-8"?>
<graphml xmlns="http://graphml.graphdrawing.org/xmlns">
   <key id="labelV" for="node" attr.name="labelV" attr.type="string" />
   <key id="name" for="node" attr.name="name" attr.type="string" />
   <key id="age" for="node" attr.name="age" attr.type="int" />
   <key id="labelE" for="edge" attr.name="labelE" attr.type="string" />
   <key id="type" for="edge" attr.name="type" attr.type="string" />
   <graph id="PG" edgedefault="directed">
      <node id="1">
         <data key="labelV">person</data>
         <data key="name">Alice</data>
         <data key="age">31</data>
      </node>
      <node id="2">
         <data key="labelV">person</data>
         <data key="name">Bob</data>
         <data key="age">27</data>
      </node>
      <edge id="3" source="1" target="2">
         <data key="labelE">knows</data>
         <data key="type">friends</data>
      </edge>
   </graph>
</graphml>

GraphML形式でグラフをインポートおよびエクスポートするメソッドが用意されています。

次のコードのフラグメントは、Tinkerpop 2およびTinkerpop 3バージョンでGraphMLデータをインポートおよびエクスポートする方法を示しています。

// Get graph instance
OraclePropertyGraph opg = OraclePropertyGraph.getInstance(oracle, graphName);

// Import graph in GraphML format
String fileName = "./mygraph.graphml";
PrintStream ps = new PrintStream("./output");
OraclePropertyGraphUtils.importGraphML(opg,fileName,ps);

// Export graph into GraphML format
String fileName = "./mygraph.graphml";
PrintStream ps = new PrintStream("./output");
OraclePropertyGraphUtils.exportGraphML(opg,fileName,ps);

// Import graph into Tinkerpop 3 GraphML format
String fileName = "./mygraphT3.graphml";
PrintStream ps = new PrintStream("./output");
OraclePropertyGraphUtils.importGraphMLTinkerpop3(opg,fileName,ps);

// Export graph into Tinkerpop 3 GraphML format
String fileName = "./mygraphT3.graphml";
PrintStream ps = new PrintStream("./output");
OraclePropertyGraphUtils.exportGraphMLTinkerpop3(opg,fileName,ps);

関連トピック