If you want to learn to do graphdb, you don't need to use any software. Pencil, paper and brain will do. The things you need to have in mind to come up with a design are:
- What is a graph: vertex & edges
- What is specific about the graphdb datastructure: vertex & edges are associated with a python-like dict.
- What informations needs to be in the graphdb to solve the problem I have at hand. List all the queries you want to be able to do against the graph.
In the diagram below, you will see a graph that can be the basis of your design.

You have to imagine that every node has a name, date of birth, etc... and a unique identifier.
It represents two disconnected families, at left one with two children, at right one with three children.
With the above graph you could compute:
- Who is the parent of X?
- What is name of the father part of the biggest family?
And others, since there is only two family with only parent & child, no grand parents or grand childs represented you might not be able to understand that actually you could also compute the following query:
- Who are the people that have X as ancestor that are still alive?
Now if you want to go and experiment with Python you have several choices starting with the easier setup:
Pure python:
- Create a Vertex class and Edge class that inherits dict.
- Build an genealogy graph with Python code from real data or else.
- Experiment with queries.
Python and BerkleyDB
- disclaimer: this is a project of mine
- Same as the pure Python version, except the graph is saved in a database. The API is similar the neo4j python bindings.
They are other solutions, but without more context about the target application (e.g. web or desktop) I can not list them all. They are some informations on neo4j website which can be helpful.
That said, the best solution might involve neo4j, but Rexster for a networked application or Blueprints for others are required if you want to easly switch between several database to find the best database in terms of performance for your usecase. The only reason to use directly a neo4j server is to be able to use cypher query language.
If I had to create a genealogy webapp and build a business out of it I would use softwares that I've built, namely:
Those are not ready for production as-is. But that's what I would do.