3

グラフモデルでは、子と呼ばれる頂点timeCategoryyear-verticesありmonth-verticesますday-verticesedge-labelで年、でIS_YEARIS_MONTHなどを識別できます。

次のコードのように、特定の年の範囲のすべての頂点を返すクエリを実行したいと思います。

GremlinPipeline yearPipe = new GremlinPipeline(timeCategory).out("IS_YEAR").property("year")
            .filter(new PipeFunction<Integer, Boolean>() {
                      public Boolean compute(Integer i)
                      {
                        return i < 2013 && i >= 2011;
                      }
                    });
for(Object v : yearPipe) {
  //v is an Integer, but i need the vertex
  System.out.println(v);
}

...これは、すべてのプロパティ値(整数としての年)を出力するのに最適ですが、必要なのは、年プロパティが特定の範囲内にあるすべての頂点のリストです。

2番目の質問は、パイプの値から共通部分を作成することです。

例:年パイプ、月パイプ、日パイプの3つのパイプがあり、パイプには年、月、または日を識別する頂点が含まれています。

すべての出力頂点を1つの特別な日付にすることは可能ですか...

セミコード:allVertices2012-01-01 = yearpipe.out()AND monthpipe.out()AND daypipe.out

確かに、私はいくつかのfor-eachループでいくつかの比較を行うことができますが、(単純な)グレムリンがあるかどうかを知りたいと思いました-それをより良くする方法。

4

2 に答える 2

2

あなたの問題には2つの解決策があります。これはGremlin-Groovyにあります:

timeCategory.out('IS_YEAR').filter{year = it.getProperty('year'); year < 2013 && year >= 2011} 

-また-

timeCategory.out('IS_YEAR').property('year').filter{it < 2013 && it >= 2011}.back(1)

Gremlin-Java コードでの回答は次のとおりです (上記の 2 番目の表現について)。

GremlinPipeline yearPipe = new GremlinPipeline(timeCategory).out("IS_YEAR").property("year")
        .filter(new PipeFunction<Integer, Boolean>() {
            public Boolean compute(Integer i)
            {
                if(i<2013 && i>=2011)
                    return true;
                else
                    return false;
            }

        }).back(1);
于 2012-01-31T18:19:46.583 に答える
0

さて、いくつかの短いチュートリアルを読んだ後、.back(x) のパラメーターは 2 である必要があることがわかりました...したがって、.back(2) を使用すると、頂点を取得できます。ところで。私の意見では、 http://markorodriguez.comで提供されている例は、github-wiki で提供されている例よりも、gremlin のクイック スタートに適しています。

私の 2 番目の質問: gremling-users に関するトピックがあり、私の問題をよく説明していることがわかりました。

http://groups.google.com/group/gremlin-users/browse_thread/thread/d245b1a25ac1fac8/514931b1e3bf9e30?lnk=gst&q=intersect#514931b1e3bf9e30

于 2012-02-03T09:25:42.910 に答える