0

.Net クライアントを使用してノードとその属性を動的に作成するにはどうすればよいですか? このようなもの?

  Node node = new Node();
  node.AddProperty("Type", "Domain");

クラスでこれをハードコーディングしたくありません。

  JsonProperty***("Bar")]***
  public string Foo { get; set; }

  var myNodeReference = client.Create(new MyNode { Foo = "bar" });
4

3 に答える 3

2

Neo4j.org ダウンロード ページでダウンロードできる Neo4j サーバー v2.0 M06 ビルドでは、Cypher クエリで JSON を直接 Neo4j サーバーに使用できます。

例:

CREATE 
    (view0:event:view 
     { 
         key:'view0', 
         verb:'view', 
         past:'has viewed', 
         present:'is viewing', 
         future:'will view' 
      })-[:event]->d16

私の GitHub リポジトリから次の C# クラス ファイルを取得して、Neo4j サーバーに直接 Cypher クエリを送信できるようにします。

https://github.com/kbastani/predictive-autocomplete/blob/master/predictive-autocomplete/PredictiveAutocomplete/CypherQueryCreator.cs

GitHub から次の C# クラス ファイルにアクセスすると、その使用法を確認できます。

https://github.com/kbastani/predictive-autocomplete/blob/master/predictive-autocomplete/PredictiveAutocomplete/Processor.cs

「GetRankedNodesForQuery」に移動します。ここにコードをコピーしました。

public static List<IGraphNode> GetRankedNodesForQuery(string index, string luceneQuery, string relationshipLabel, string labelPropertyName, int skip, int limit)
{
        var sb = new StringBuilder();
        sb.AppendLine("START node=node:{0}(\"{1}\")");
        sb.AppendLine("WITH node");
        sb.AppendLine("SKIP {2}");
        sb.AppendLine("LIMIT {3}");
        sb.AppendLine("WITH node");
        sb.AppendLine("MATCH n-[{4}]->node");
        sb.AppendLine("WITH node, count(distinct n) as size");
        sb.AppendLine("RETURN node.{5}? as label, size");
        sb.AppendLine("ORDER BY id(node)");
        sb.AppendLine("LIMIT {3}");

        string commandQuery = sb.ToString();

        commandQuery = string.Format(commandQuery, index, luceneQuery, skip, limit, !string.IsNullOrEmpty(relationshipLabel) ? string.Format(":{0}", relationshipLabel) : string.Empty, labelPropertyName);

        GraphClient graphClient = GetNeo4jGraphClient();

        var cypher = new CypherFluentQueryCreator(graphClient, new CypherQueryCreator(commandQuery), new Uri(Configuration.GetDatabaseUri()));

        var resulttask = cypher.ExecuteGetCypherResults<GraphNode>();
        var graphNodeResults = resulttask.Result.ToList().Select(gn => (IGraphNode)gn).ToList();
        return graphNodeResults;
}

他のバージョンでは、ラッパーを作成する必要があります。現時点で最も簡単な方法は、2.0 バージョンにアップグレードすることです。これが実行できない場合はお知らせください。.NET C# ラッパーを作成します。

于 2013-10-28T22:01:26.490 に答える
0

neo4j 用にいくつかの利用可能な .NET クライアントを試してみたところ、私のユース ケースにはすべて欠けていることがわかりました。これらのクライアントはREST APIの単なるラッパーであるため、RESTを介して直接サーバーと通信する方がはるかに簡単でした。HTTP と JSON のサポートは、.NET の現在の状態では優れています。

そうすれば、ノードを動的に構築し、好きなように作成できます ( REST によるノード作成)。

于 2013-04-19T13:58:16.227 に答える