使用 nw:load-graphml 在 netlogo 中导入 link breed

Importing link breed in netlogo using nw:load-graphml

如何让 NetLogo 在导入 graphml 文件时识别 link 品种?

我在graphml文件中指定了品种属性,并在NetLogo中命名了品种。当使用 nw:load-graphml 导入 NetLogo 时,我相信 NetLogo 应该通过读取 graphml 文件中的 breed 属性将 breed 分配给 links。如 NetLogo documentation 中所述:

...nw:load-graphml will try to assign the attribute values defined in the GraphML file to NetLogo agent variables of the same names (this is not case sensitive). The first one it tries to set is breed if it is there, so the turtle or link will get the right breed and, hence, the right breed variables.

然而,尽管在 NetLogo 和 graphml 文件中指定了 link 品种,links 在导入时被分配了通用的 "links" 品种。

示例 graphml 文件:

<?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="v_name" for="node" attr.name="name" attr.type="string"/>
  <key id="e_breed" for="edge" attr.name="breed" attr.type="string"/>
  <graph id="G" edgedefault="undirected">
    <node id="n0">
      <data key="v_name">1</data>
    </node>
    <node id="n1">
      <data key="v_name">2</data>
    </node>
    <node id="n2">
      <data key="v_name">3</data>
    </node>
    <node id="n3">
      <data key="v_name">4</data>
    </node>
    <node id="n4">
      <data key="v_name">5</data>
    </node>
    <edge source="n1" target="n2">
      <data key="e_breed">ftf-tie</data>
    </edge>
    <edge source="n0" target="n3">
      <data key="e_breed">ftf-tie</data>
    </edge>
    <edge source="n0" target="n4">
      <data key="e_breed">ftf-tie</data>
    </edge>
    <edge source="n1" target="n4">
      <data key="e_breed">ftf-tie</data>
    </edge>
    <edge source="n1" target="n4">
      <data key="e_breed">sns-tie</data>
    </edge>
  </graph>
</graphml>

NetLogo 导入代码:

extensions [ nw ]

undirected-link-breed [ ftf-ties ftf-tie ]
undirected-link-breed [ sns-ties sns-tie ]

to setup
  clear-all
  nw:load-graphml "test.graphml"
  repeat 30 [ layout-spring turtles links 0.2 5 1 ]
end

谢谢!

在 graphml 文件中将单数品种更改为复数品种(例如,从 ftf-tieftf-ties)完全解决了这个问题。

参见:https://github.com/NetLogo/NW-Extension/issues/189