如何解决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可能更适合您要尝试执行的操作-您是否尝试过?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。