public void FilterClauseCompareToIgnoreCase2()
        {
            GremlinScript script = new GremlinScript();
            script.Append("g.v(0)")
                .Filter(it => it.GetProperty("MyProp").CompareToIgnoreCase(it.GetProperty("CompareProperty").Name()));

            Assert.IsTrue(script.ToString() == "g.v(0).filter{it.getProperty('MyProp').compareToIgnoreCase(it.getProperty('CompareProperty').name)}");
        }
        public void FilterClauseChainCommands()
        {
            GremlinScript script = new GremlinScript();
            script.Append("g.v(0)")
                .Filter(it => it.GetProperty("MyProp").ToLowerCase().Contains("ContainThis"));

            Assert.IsTrue(script.ToString() == "g.v(0).filter{it.getProperty('MyProp').toLowerCase().contains('ContainThis')}");
        }
        public void FilterClause()
        {
            GremlinScript script = new GremlinScript();
            script.Append("g.v(0)")
                .Filter(it => it.GetProperty("MyProp") == "SomeValue");

            Assert.IsTrue(script.ToString() == "g.v(0).filter{it.getProperty('MyProp') == 'SomeValue'}");
        }
        public void FilterClauseEqualBool()
        {
            GremlinScript script = new GremlinScript();
            script.Append("g.v(0)")
                .Filter(it => it.GetProperty("MyProp") == true);

            Assert.IsTrue(script.ToString() == "g.v(0).filter{it.getProperty('MyProp') == true}");
        }
        public void FilterClauseCompound()
        {
            GremlinScript script = new GremlinScript();
            script.Append("g.v(0)")
                .Filter(it => it.GetProperty("MyProp") && !it.GetProperty("NotProp") || it.GetProperty("OrProp").ToLowerCase() == "lower Value");

            Assert.IsTrue(script.ToString() == "g.v(0).filter{it.getProperty('MyProp') && !it.getProperty('NotProp') || it.getProperty('OrProp').toLowerCase() == 'lower Value'}");
        }
        public void Table()
        {
            GremlinScript script = new GremlinScript();
            script.NewTable("t")
                .NodeIndexLookup(new Dictionary<string, object>() { { NodeProperty.FirstName.ToString() , "Jack" }, { NodeProperty.LastName.ToString(), "Shaw" } })
                .Filter(it => it.GetProperty(NodeProperty.UID.ToString()) == "jshaw")
                .As("UserNode")
                .OutE(RelationshipType.Likes.ToString())
                .As("LikeRel")
                .InV()
                .As("FriendNode")
                .Table("t", "UserNode", "LikeRel", "FriendNode")
                .Append("{{it}}{{it.getProperty('{0}')}}{{it.getProperty('{1}')}} >> -1; t", RelationshipProperty.Date.ToString(), NodeProperty.FirstName.ToString());

            Assert.IsTrue(script.ToString() == "t = new Table();g.V[['FirstName':'Jack','LastName':'Shaw']].filter{it.getProperty('UID') == 'jshaw'}.as('UserNode').outE('Likes').as('LikeRel').inV().as('FriendNode').table(t, ['UserNode','LikeRel','FriendNode']){it}{it.getProperty('Date')}{it.getProperty('FirstName')} >> -1; t");
        }
Beispiel #7
0
        static void Main(string[] args)
        {
            // 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.ToString());

            // 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();
        }