Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Java和Tinkerpop中的Neo4j算法_Java_Neo4j_Tinkerpop - Fatal编程技术网

使用Java和Tinkerpop中的Neo4j算法

使用Java和Tinkerpop中的Neo4j算法,java,neo4j,tinkerpop,Java,Neo4j,Tinkerpop,我使用Neo4J作为我的底层GraphDB,Tinkerpop 3.3.1位于Java应用程序的顶部。我使用Neo4JGraph.open(“/tmp/filename”)在Java中创建图形,然后从那里我只使用Tinkerpop Java API创建节点、边和运行遍历 我想在Tinkerpop图上执行Dijkstra最短路径。Neo4J是我的底层GraphDB,它内置了这个算法,所以我想使用它。我使用makethis调用来获取Neo4J图,并从中获取一些Neo4JNode类型 Neo4jGra

我使用Neo4J作为我的底层GraphDB,Tinkerpop 3.3.1位于Java应用程序的顶部。我使用Neo4JGraph.open(“/tmp/filename”)在Java中创建图形,然后从那里我只使用Tinkerpop Java API创建节点、边和运行遍历

我想在Tinkerpop图上执行Dijkstra最短路径。Neo4J是我的底层GraphDB,它内置了这个算法,所以我想使用它。我使用makethis调用来获取Neo4J图,并从中获取一些Neo4JNode类型

Neo4jGraphAPI neo4J = this.graphPV.getBaseGraph();
Neo4jNode start = neo4J.getNodeById(1);
Neo4jNode end = neo4J.getNodeById(2);
这是可行的,但现在我不知道下一步该怎么办。我想我会将这些节点传递给Neo4J pathfinder,但findSinglePath方法采用的是节点类型,而不是基于Tinkerpop的Neo4JNode。我试过选角,但出现了一个例外。我可以将Tinkerpop Neo4JNode转换为基础Neo4J API将接受的Neo4J节点类型吗

dijkstraPathFinder = GraphAlgoFactory.dijkstra(expander, costEvaluator );
WeightedPath path = dijkstraPathFinder.findSinglePath((Node)start, (Node)end );
结果:

警告:服务异常java.lang.ClassCastException: org.neo4j.tinkerpop.api.impl.Neo4jNodeImpl不能强制转换为 org.neo4j.graphdb.Node


Neo4jNodeImpl
Neo4jRelationshipImpl
都扩展了
Neo4jEntityImpl
,它有一个公共
getEntity()
方法,返回本机neo4j
节点
/
关系

不幸的是,
getEntity()
不在
neo4jntity
接口中(因此不在
Neo4jNode
Neo4jRelationship
接口中)。因此,要使用
getEntity()
,您的项目必须添加对的依赖项并使用类强制转换。例如:

Neo4jGraphAPI neo4J = this.graphPV.getBaseGraph();
Neo4jNode start = neo4J.getNodeById(1);
Node nativeStart = ((Neo4jNodeImpl)start).getEntity();
或者,如果您不想依赖impl模块,则有一个性能较差的选项。您可以使用
Neo4jEntity.getId()
方法获取底层neo4j节点/关系的本机ID,然后执行neo4j查询以获取该节点/关系