skip to navigation
skip to content

kaiso 0.16.0

A queryable object persistence and relationship framework based on the Neo4j graph database.

Latest Version: 0.40.0

A graph based queryable object persistance framework built on top of Neo4j.

Build status


In addition to objects, Kaiso also stores the class information in the graph. This allows us to use cypher to query instance information, but also to answer questions about our types.

Let’s define some basic classes

from kaiso.attributes import Integer, Outgoing, String, Uuid
from kaiso.types import Entity, Relationship

# define a simple type hierarchy

class Knows(Relationship):

class Animal(Entity):
    id = Uuid(unique=True)
    name = String()
    knows = Outgoing(Knows)

class Carnivore(Animal):

class Herbivore(Animal):

class Penguin(Herbivore):
    favourite_ice_cream = String()

class Lion(Carnivore):
    n_siblings = Integer()

As with any orm, we can make some instances and persist them in our graph

from kaiso.persistence import Manager

manager = Manager("http://localhost:7474/db/data/")

# create some instances

fred = Penguin(name="Fred")
tom = Lion(name="Tom")

relation = Knows(fred, tom)

Using the Neo4j web interface to explore our graph, we find Tom and Fred:

However, in addition, we can also see the type information in the graph:

We can make use of the type information in our queries, e.g. to find all herbivores who know a carnivore


    Carnivore <-[:ISA*]-()<-[:INSTANCEOF]-(carnivore),
    Herbivore <-[:ISA*]-()<-[:INSTANCEOF]-(herbivore),


    "The herbivore",,
    "knows the carnivore",;
==> +---------------------------------------------------------------------+
==> | "The herbivore" | "Fred"      | "knows the carnivore" | "Tom"       |
==> +---------------------------------------------------------------------+
File Type Py Version Uploaded on Size
kaiso-0.16.0.tar.gz (md5) Source 2014-03-18 32KB