public IQuery Interval <T>(string key, T startValue, T endValue)
        {
            QueryContract.ValidateInterval(key, startValue, endValue);

            Query = Query.Interval(key, startValue, endValue) as IVertexQuery;
            return(this);
        }
        public IQuery Limit(long max)
        {
            QueryContract.ValidateLimit(max);

            Query = Query.Limit(max) as IVertexQuery;
            return(this);
        }
        public IQuery Has <T>(string key, Compare compare, T value)
        {
            QueryContract.ValidateHas(key, compare, value);

            Query = Query.Has(key, compare, value) as IVertexQuery;
            return(this);
        }
        public IQuery Has(string key, object value)
        {
            QueryContract.ValidateHas(key, value);

            Query = Query.Has(key, value) as IVertexQuery;
            return(this);
        }
        public WrapperVertexQuery(IVertexQuery query, Func <IVertexQuery, IEnumerable <IEdge> > edgesSelector,
                                  Func <IVertexQuery, IEnumerable <IVertex> > verticesSelector)
        {
            if (query == null)
            {
                throw new ArgumentNullException(nameof(query));
            }
            if (edgesSelector == null)
            {
                throw new ArgumentNullException(nameof(edgesSelector));
            }
            if (verticesSelector == null)
            {
                throw new ArgumentNullException(nameof(verticesSelector));
            }

            Query            = query;
            EdgesSelector    = edgesSelector;
            VerticesSelector = verticesSelector;
        }
 public IVertexQuery Labels(params string[] labels)
 {
     Query = Query.Labels(labels);
     return(this);
 }
 public IVertexQuery Direction(Direction direction)
 {
     Query = Query.Direction(direction);
     return(this);
 }