0

次の属性を持つハイパーリンク グラフである igraph オブジェクト (g_sub) があります。

> g_sub
IGRAPH D--- 1331 11088 -- 
+ attr: Image File (v/c), Ringset (v/n), Country Code TLD (v/n), Generic TLD (v/n), Number of
  Pages (v/n), Modularity cluster (v/n), Categorical 1 (v/n), Categorical 2 (v/n), Categorical
  3 (v/n), id (v/c), Width (e/n), Tie Weight (e/n)

Graphml ファイルに書き込むg_subと、すべてのノード名が「n0」、「n1」などになります。

ノード名として「id」属性を使用したいと思います(つまり、各ノードはWebサイトなので、「id」属性に保存されているURLを確認したいです)。

4

1 に答える 1

1

これは igraph では不可能であり、非常に正当な理由があります。ノード ID は GraphML ファイル内で一意である必要があり、含めることができる文字にも一定の制限があります。igraph は、ファイルが書き込まれているときに ID を独自に構築することにより、これらの条件を保証します。そのため、ノード名が何であれ、 ID は最終的n0になどになります。n1

「適切な」GraphML ID で許可されている文字に関心がある場合は、まずGraphML DTDidを確認する必要があります。これは、属性のタイプが であることを指定していますID。次に、属性が一意である必要があり、「名前の生成」と一致する必要があると述べているXML 仕様に移動する必要があります。id次に、同じドキュメント内で「名前の生成」が何を意味するかを見つける必要があります。これは基本的に、ID 内で許可される一連の文字を定義します。URL には表示される可能性があるが「名前生成」 (XML ID など) には表示されない可能性がある文字の一例はハッシュ マークであるため、ハッシュを含む URL を使用しようとすると常に問題が発生します。 IDとしてマークします。

できる唯一のことは、GraphML ファイルを後処理して、ID の代わりに URL を使用することです。そのための XML 処理をサポートする任意の言語を使用できます。idおそらく、各<node>タグの属性の値を事前定義された属性の値に置き換える別の Python スクリプトでそれを行うでしょう。ただし、タグの属性sourcetarget属性<edge>も適切に置き換えられていることを確認する必要があります。

于 2013-08-29T09:53:18.183 に答える