Skip to main content

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

Project description

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

    (Herbivore:PersistableType {id: <s>"Herbivore"</s>}),
    (Carnivore:PersistableType {id: <s>"Carnivore"</s>}),
    Carnivore <-[:ISA*]-()<-[:INSTANCEOF]-(carnivore),
    Herbivore <-[:ISA*]-()<-[:INSTANCEOF]-(herbivore),


    <s>"The herbivore"</s>,,
    <s>"knows the carnivore"</s>,;
==> +---------------------------------------------------------------------+
==> | "The herbivore" | "Fred"      | "knows the carnivore" | "Tom"       |
==> +---------------------------------------------------------------------+

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kaiso-0.40.0.tar.gz (32.0 kB view hashes)

Uploaded source

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page