2016-08-14 3 views
1

を働いていないクエリ:TinkerpopのNeo4jのサイファーは、私は(グレムリンを使用して作成)のNeo4jグラフを持っている、と私もグレムリンを使用して、それを使用したいのですが、しかし、グラフ上のCYPHERクエリが動作するようには思えません

import org.apache.tinkerpop.gremlin 
import gremlin.neo4j.structure.Neo4jGraph 
import gremlin.tinkergraph.structure.TinkerGraph 
import gremlin.hadoop.structure.HadoopGraph 
import org.apache.commons.configuration.Configuration 

trait Graph[G] { 
    def create(location: String, args: Configuration = null): G 
} 

object Grapher { 

    implicit val createNeo4j = new Graph[Neo4jGraph] { 
    def create(location: String, args: Configuration = null) = 
     if (args != null) Neo4jGraph.open(args) else Neo4jGraph.open(location) 
    } 

    implicit val createTinkerGraph = new Graph[TinkerGraph] { 
    def create(location: String, args: Configuration = null) = 
     if (args != null) TinkerGraph.open(args) else TinkerGraph.open() 
    } 

    implicit val createHadoopGraph = new Graph[HadoopGraph] { 
    def create(location: String, args: Configuration = null) = 
     if (args != null) HadoopGraph.open(args) else HadoopGraph.open(location) 
    } 
} 

object GraphSyntax { 
    def createGraph[G](location: String, args: Configuration = null)(implicit graph: Graph[G]) = graph.create(location, args) 
} 

これは、私は、クエリを実行しようとする方法である:

import Grapher._ 
import GraphSyntax._ 

val graph = createGraph[Neo4jGraph](fileName) 
// org.apache.tinkerpop.gremlin.neo4j.structure.Neo4jGraph = neo4jgraph[community single [/media/ixaxaar/Source/src/telperion/core/neo4j.db]] 

graph.cypher("match (n) return n limit 10").toList 
// java.util.List[Nothing] = [] 

私はのNeo4jサーバにグラフをロードすると、同じクエリがのNeo4j Webコンソール上で動作します。

match (n) return n limit 10 

neo4j output

私は、次のLIBSを使用しています。このため

final val Gremlin     = "3.2.1" 
final val Neo4jTinkerpop   = "0.4-3.0.3" 
val gremlinCore  = "org.apache.tinkerpop" % "gremlin-core"    % Version.Gremlin 
val gremlinGiraph  = "org.apache.tinkerpop" % "giraph-gremlin"   % Version.Gremlin 
val gremlinNeo4j  = "org.apache.tinkerpop" % "neo4j-gremlin"   % Version.Gremlin 
val hadoopGremlin  = "org.apache.tinkerpop" % "hadoop-gremlin"   % Version.Gremlin 
val tinkergraphGremlin = "org.apache.tinkerpop" % "tinkergraph-gremlin"  % Version.Gremlin 
val neo4jTinkerpop  = "org.neo4j"    % "neo4j-tinkerpop-api-impl" % Version.Neo4jTinkerpop 
+0

グレムリンでネオに質問するにはどうすればよいですか?あなたが推薦できるどんなツイートや図書館? – swelet

+0

既にネオグラフがある場合、たとえば〜/ bin/neo4j-community-3.0.4/data/databases/graph.db "'で、 'Neo4jGraph.open(location)'を使ってgremlinに直接ロードし、トラバーサル 'val gremlin traversal queries - > http://tinkerpop.apache.org/を参照してください。gremlin traversal queries - > http://tinkerpop.apache.org/ doc/current/reference /#traversal – ixaxaar

+0

また、gypreをgremlinで使用するには、 'graph.cypher(あなたのcypher-queryにマッチする) 'を使用します。 定型文が必要な場合は、上記のコードを参照してください。 上記のsbtの依存関係も上記のとおりです – ixaxaar

答えて

0

大変申し訳ありませんが、私は新しいグラフ(fileNameが間違っていた)を開くたが判明しました。

scala> graph.cypher("match (n) return n limit 10").toList 
res3: java.util.List[Nothing] = [{n=v[0]}, {n=v[1]}, {n=v[2]}, {n=v[3]}, {n=v[4]}, {n=v[5]}, {n=v[6]}, {n=v[7]}, {n=v[8]}, {n=v[9]}] 
関連する問題