Printemps is my attempt at creating a GraphDB stack for Python. It's inspired from Tinkerpop stack and make a heavy use of it.
Here is a description of all the component:
printemps.core
: core API, based on jnius bindings of Blueprints. You can use the API depending of the underlying backend for embedded or remote graphdb work.printemps.server
: It's similar in purpose to Tinkerpop's Rexster but doesn't make use of it. You can use it for your remote graphdb work.printemps.client
: It's a Python ORM for graphdb, it's similar in purpose to bulbflow an can be used with a Printemps server. Flask and Django client integration are planned.printemps.query.gql
: It's similar in purpose and spirit to Tinkerpop's Gremlin but doesn't make use of it. You can use it with embedded databases built with the core API or with the client library.printemps.pql
: It allows to query a remote graphdb using pure python functions and methods defined in a custom graph database class or vanillaprintemps.core.Graph
The reason of the existence of this project are multiple:
- There is no way to access graph databases from Python as an embedded database, except for neo4j, Printemps fixes that.
- Sometime you need more than what Gremlin has to offer, Printemps offers
through
printemps.query
all is needed to experiment new languages construct against a graph database in a similar architecture as the one used in Gremlin which can be later ported to Gremlin if you really need it. - Gremlin/Groovy is a nice language but doesn't have the same expresiveness and
smooth learning curve Python can have, expectially Java doesn't have
generators which even if not a beginner language construct can be quiet
useful to do
complex and efficiant lookups.
printemps.pygq
fixes one of the reasons why graphdb are not popular, their query langugages;pygq
queries are plain old Python functions, which can be run against a remoteprintemps
database.