如何加载带有 Netlogo NW 扩展名的 graphml 文件

How to load a graphml file with Netlogo NW extension

我认为 nw:load-graphml 的工作方式存在错误。

使用此 graphml 文件,其中包含 3 个节点和 3 个无向类型的链接 "parentals" 和 2 个有向类型的链接 "diffusions" :

<?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">
<!-- Created by igraph -->
<key id="e_breed" for="edge" attr.name="breed" attr.type="string"/>
<graph id="G" edgedefault="undirected">
    <node id="n0">
    </node>
    <node id="n1">
    </node>
    <node id="n2">
    </node>
    <edge source="n0" target="n1">
       <data key="e_breed">parentals</data>
    </edge>
    <edge source="n0" target="n2">
       <data key="e_breed">parentals</data>
    </edge>
    <edge source="n1" target="n2">
       <data key="e_breed">diffusions</data>
    </edge>
    <edge source="n0" target="n1">
       <data key="e_breed">diffusions</data>
    </edge>
  </graph>
</graphml>

当您使用 nw:load-graphml 加载文件时,会创建所有 "parentals" 个链接,而 "diffusions" 仅部分创建:仅 "diffusions" 个链接涉及尚未通过父母链接链接的节点被创建,而其他节点被跳过...这是 load-graphml 原语中的错误或预期行为吗?

这是一个简短的网络标志代码来演示:

extensions [nw]

undirected-link-breed [parentals parental]
directed-link-breed [diffusions diffusion]

to setup
   ca
   nw:load-graphml "prova.graphml"
   layout-circle turtles 10
end

在您的 NetLogo 代码中,"diffusion" 链接是定向的。将 directed = "true" 属性添加到 prova.graphml 文件中的扩散链接:

<edge source="n0" target="n1">
   <data key="e_breed">parentals</data>
</edge>
<edge source="n0" target="n2">
   <data key="e_breed">parentals</data>
</edge>
<edge directed="true" source="n1" target="n2">
   <data key="e_breed">diffusions</data>
</edge>
<edge directed="true" source="n0" target="n1">
   <data key="e_breed">diffusions</data>
</edge>

我尝试了更正后的文件,我认为链接现在可以了:

ask links [show self]

结果:

(diffusion 2 1): (diffusion 2 1)
(diffusion 0 2): (diffusion 0 2)
(parental 0 1): (parental 0 1)
(parental 0 2): (parental 0 2)

编辑:

在当前版本的 NW 扩展中,load-graphml 功能中有一些 open issues。我认为在导入文件后添加一些验证以检查链接的一致性是个好主意。也许 is-directed-link? 记者为每个 "directed" 链接面包,还计算链接并比较预期的链接数。