To pull these threads together:

I have a new Redis-based Graph implementation I can share once I get
approval from my company. It took about 1600 lines of code and quite a bit
of time debugging to get it to pass (most) of the structure and process
standard test suite.

The wrapper I described earlier is only 600 lines of code, but it's less
full-featured, and the underlying store is already a kind of graph database.

Graph-on-Graph wrappers should be simplest of all, but again there's the
question of whether that's the best approach. To see how a simple strategy
is applied, try:

graph = TinkerFactory.createModern()

g = graph.traversal()

g =
g.withStrategies(SubgraphStrategy.build().edges(__.hasLabel("knows")).create())

g.E()

A minimal graph wrapper would just override Graph.traversal() to add the
strategy.

Josh



On Sat, Oct 7, 2017 at 9:28 PM, Jeffrey Freeman <
[email protected]> wrote:

> Thanks, may be useful for others who come along. Though I could still use
> some help. With that said im also trying to understand adding custom
> strategies to existing providers and having some trouble understanding that
> as well. I seem to have ventured into undocumented territory to some
> degree.
>
> On Sun, Oct 8, 2017 at 12:24 AM, Joshua Shinavier <[email protected]>
> wrote:
>
> > I'm going to paste here what I wrote in a side thread:
> >
> >
> > Well, one reason you don't see a lot of pass-through Graph wrappers in
> TP3
> > is that a lot of the things we used to do with wrappers is now
> accomplished
> > with traversal strategies. Take IdGraph, for example. This allows you to
> > add the user-defined ID feature to a graph that doesn't natively support
> > it. I wrote this in TP2 as a "wrapper", but in TP3 it became
> > ElementIdStrategy. Another example is SubgraphStrategy, which takes the
> > place of a number of Blueprints wrappers for providing a "slice" of the
> > graph.
> >
> > That being said, I think there is still a place for Graph-on-Graph
> > wrappers, and your template would make it easy to experiment with them.
> You
> > should probably make sure you understand traversal strategies, as well;
> > what you are describing could probably be implemented that way, and might
> > be simpler as a result.
> >
> > Btw. combining graph event processing via Apache Storm with an on-demand
> > graph database (Neo4j, JanusGraph) sounds very interesting.
> >
> > Josh
> >
> > On Sat, Oct 7, 2017 at 9:08 PM, Jeffrey Freeman <
> > [email protected]> wrote:
> >
> > > The past 24 hours ive been trying to write a simple pass-through graph
> > > provider. Basically a Graph type that takes any other Graph type as an
> > > argument in a constructor and passes all calls through to the graph. I
> > want
> > > to make the framework so someone can then simply override one or two
> > > methods to do simple extensions to existing providers. A HelloWorld
> test
> > i
> > > am trying to write would be one where all the interactions with the
> base
> > > graph would be normal except when setting or getting a property on a
> edge
> > > or a vertex in which case if it is a string it appends a "!" to the end
> > > when setting a property. If i can get that minimal functionality
> working
> > i
> > > can reuse and extend those classes to create all sorts of more complex
> > > wrapped graphs. I'd like to make that a library on its own that people
> > can
> > > use to create easy wrapped graphs which can be used to extend graph
> > > provider functionality.
> > >
> > > After that id use that library to create a more useful real world
> > utility.
> > > What i want to do is create a graph that is backed by a traditional
> graph
> > > DB (say neo4j or titan) which stores all the nodes and edges, but any
> > > vertex that has a special property on it would b e treated as a message
> > > queue (like redis in publish and subscribe mode). I want to make it so
> > > messages could be stored in the messaging queue system (redis) but its
> > > content could still be queried from gremlin calls (perhaps treating the
> > > messages a bit like a property that stores an array or something). So I
> > > could essentially create a Titan-redis hybrid or similar that looks
> like
> > a
> > > unified graph. This in turn could be used as a backend to Apache Storm
> in
> > > order to encode stream topologies in a Tinkerpop / gremlin format. It
> > would
> > > also then allow you to perform gremlin queries on the graph to see
> where
> > > bottlenecks in the streams happen to be.
> > >
> > > Sadly I cant even get a basic passthrough to a tinkergraph to work or
> > even
> > > scratch the surface on what im trying to do.
> > >
> > > All I really need to see is a simple example of a graph provider
> wrapper
> > > but all i keep hearing/seeing are complicated complete solutions. I'm
> > > starting to doubt its even possible in any feasible way, but i keep
> > hoping.
> > >
> > > If anyone can help me please advise. I used to build stuff like this
> > easily
> > > in Tinkerpop2 and I'm trying to resist the urge to go back to
> Tinkerpop2
> > > but its becoming more and more likely if i can't get a TP3 solution to
> > > work.
> > >
> >
>

Reply via email to