Beispiel #1
0
        static void Main(string[] args)
        {
            //var dnode = Node.GetNode(81);

            //var node = Node.CreateNode("MyType");
            //node.Properties.SetProperty("myDate", new DateTime(2011, 12, 15));

            //node.SaveProperties();

            //Neo4jRestNet.CleanDbPlugin.CleanDbPlugin.CleanDb();

            // Get Root Node from graphDB
            var rootNode = Node.GetRootNode();

            // Create a User Node with no Properties
            var nodeUser = Node.CreateNode(NodeType.User.ToString());

            // Create a User Node with Properties
            var prop = new Properties();
            prop.SetProperty(NodeProperty.FirstName.ToString(), "Joe");
            prop.SetProperty(NodeProperty.LastName.ToString(), "Smith");

            var nodeUserWithName = Node.CreateNode(NodeType.User.ToString(), prop);

            // Create Relationships to Nodes
            rootNode.CreateRelationshipTo(nodeUser, RelationshipType.Likes.ToString());
            rootNode.CreateRelationshipTo(nodeUserWithName, RelationshipType.Likes.ToString());

            // Create Relationship with Properties
            var relProp = new Properties();
            relProp.SetProperty(RelationshipProperty.Name.ToString(), "MyRelationship");
            relProp.SetProperty("CustomRelProp", "CustomPropValue");

            nodeUserWithName.CreateRelationshipTo(nodeUser, RelationshipType.Knows.ToString(), relProp);

            // Get Id From Node
            var id = rootNode.Id;
            var geid = rootNode.EncryptedId;

            // Gremlin

            // Same as above
            var sameLikeNodes = Gremlin.Post<Node>(new GremlinScript(rootNode).Out(RelationshipType.Likes.ToString()));

            // More Gremlin example
            var script = new GremlinScript(rootNode);
            script.OutE()
                .InV()
                .OutE()
                .Filter("it.getProperty('{0}') == '{1}'", RelationshipProperty.Name, "MyRelationship");

            var myRelationship = Gremlin.Post<Relationship>(script);

            // More Gremlin example
            var script1 = new GremlinScript(rootNode);
            script1.OutE()
                .InV()
                .OutE()
                .Filter(it => it.GetProperty(RelationshipProperty.Name.ToString()) == "MyRelationship");

            IEnumerable<Relationship> myRelationship1 = Gremlin.Post<Relationship>(script1);

            // Gremlin returning a datatable
            var tblScript = new GremlinScript();
            tblScript.NewTable("t")
                .gV(rootNode)
                .Out(RelationshipType.Likes.ToString())
                .As("Like")
                .Table("t", "Like")
                .Append(" >> -1; t;");

            DataTable dt = Gremlin.GetTable(tblScript);

            // Basic Cypher query
            var c1 = new Cypher();
            c1.Start(s => s.Node("A", 0));
            c1.Return( r => r.Node("A"));

            DataTable tbl = c1.Post();

            // Cypher with Match clause
            var c2 = new Cypher();
            c2.Start(s => s.Node("A", 0));
            c2.Match(m => m.Node("A").To("r", "Likes").Node("B"));
            c2.Return(r => r.Node("A").Relationship("r").Node("B"));

            tbl = c2.Post();

            // Cypher with multi start and return optional property
            var c3 = new Cypher();
            c3.Start(s => s.Node("A", 0, 1));
            c3.Match(m => m.Node("A").Any("r", "Likes").Node("C"));
            //	c3.Return(r => r.Node("C").Node("C").Property("Name?"));

            tbl = c3.Post();

            // Multi Start
            var c4 = new Cypher();
            c4.Start(s => s.Node("A", 0).Node("B",1));
            c4.Return(r => r.Node("A").Node("B"));

            tbl = c4.Post();

            // Cypher with Where clause
            var c5 = new Cypher();
            c5.Start(s => s.Node("A", 0, 1));
            c5.Where(w => w.Node("A").Property("Age?") < 30 && w.Node("A").Property("Name?") == "Tobias" || !(w.Node("A").Property("Name?") == "Tobias"));
            c5.Return(r => r.Node("A"));

            tbl = c5.Post();

            // Alt Syntax
            var c6 = new Cypher();
            c6.Start(s =>	{
                                s.Node("A", 0);
                                s.Node("B", 1);
                                return s;
                            });

            c6.Return(r =>	{
                                r.Node("A");
                                r.Node("B");
                                return r;
                            });

            tbl = c6.Post();

            // Alt Syntax
            var c7 = new Cypher();
            c7.Start(s => s.Node("MyNode", "Index-Name", "QueryString"));
            c7.Start(s => s.Node("A", 0));
            c7.Start(s => s.Node("B", 1));

            c7.Return(r => r.Node("A"));
            c7.Return(r => r.Node("B"));

            tbl = c7.Post();

            // Test Cypher Dates
            var date = new DateTime(2011, 12, 15);

            //// Basic Cypher query
            //var c1 = new Cypher();
            //c1.Start(s => s.Node("A", 81));
            //c1.Where(w => w.Node("A").Property("myDate") < date.AddDays(2)
            //    && w.Node("A").Property("myDate") == new DateTime(2011, 12, 15));

            //c1.Return(r => r.Node("A"));

            //tbl = c1.Post();
        }