hypergraphdb:如何遍历2个原子之间的所有链接?

问题描述

| 我目前正在Java SE 1.6下使用HpergraphDB 1.1。 我在图中存储了3个原子,并在它们之间创建了多个链接。 当我使用DefaultALGenerator遍历图时,超图对于链接到我的起始原子的每个原子仅返回1个链接。我认为这来自DefaultALGenerator的实现,因为它标记了已访问的原子,因此不会使用其他链接再次访问它们。 有没有办法检索2个原子之间的所有链接,或者让我在不同的句柄下多次存储原子(或可能是指向同一原子的另一个链接)? 编辑:
public class MyAtom { ... }
public class MyLink extends HGPlainLink { ... }

// initialisation somewhere else
Hypergraph hg = ...

// Create some atoms
MyAtom a = new MyAtom();
MyAtom b = new MyAtom();
MyAtom c = new MyAtom();

// Store the atoms
HGHandle handleA = hg.add(a);
HGHandle handleB = hg.add(b);
HGHandle handleC = hg.add(c);

// Create some links with additional information
hg.add(new MyLink(handleA,handleB,\"First directed link from A to B\"));
hg.add(new MyLink(handleA,\"Second directed link from A to B\"));

hg.add(new MyLink(handleB,handleC,\"First directed link from B to C\"));
hg.add(new MyLink(handleB,\"Second directed link from B to C\"));

// Traverse the graph
// I want to get all paths starting at A and ending in C
DefaultALGenerator alGen = new DefaultALGenerator(
                         hg,/* The graph */
                         null,/* No link predicate */
                         null,/* No atom predicate */
                         true,/* Traverse preceeding */
                         false,/* Don\'t traverse succeeding */
                         false); /* Use normal order */

HGDepthFirstTraversal traversal = new HGDepthFirstTraversal(
                                    handleC,alGen);

while (traversal.hasNext()) {
    Pair current = traversal.next();

    HGLink l = (HGLink) hg.get((HGHandle) current.getFirst());
    Object atom = hg.get((HGHandle) current.getSecond());
    System.out.println(l + \" -> \" + atom);
}
考虑链接的方向,我想获取所有路径,这些路径从A开始,以C结尾。 我对链接中的原子进行了排序,以便最后一个原子是链接所指向的原子。因此,我使用DefaultALGenerator来考虑链接的方向。 最好的祝福     

解决方法

        您可能应该发布一些代码,并对要执行的操作进行更清晰的描述,因为您似乎正在描述的内容似乎与DefaultALGenerator的工作方式并不完全一致。但是无论如何,SimpleALGenerator可能更适合您要尝试执行的操作-您是否尝试过?