Skip to content

civx/knowledge

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

KnowledgeDB

Knowledge is a polymorphic vertical database based on SQLAlchemy. It provides a dict-like interface to the database.

Knowledge is comprised of two related objects: Fact()s and Entity()s. Entities can be created and then have arbitrary facts applied to them. Before Knowledge can be used, the DB has to be set up with SQLAlchemy as follows:

from sqlalchemy import create_engine
from knowledge.model import setup_knowledge

DBSession = setup_knowledge('sqlite:///knowledge.db')

Using knowledge is easy. Entities are created with a key, then facts about the entity can be applied like values in a dictionary:

from knowledge.model import Entity

monster = Entity(u'Monster')
fairy = Entity(u'Fairy')
rjbean = Entity(u'rjbean')
monster[u'color'] = u'Green'
monster[u'name'] = u'Lotharrr'
fairy[u'flies'] = True
fairy[u'name'] = u'Bell'
rjbean[u'name'] = u'ralph'
rjbean[u'flies'] = False
rjbean[u'hacks'] = True

DBSession.add(monster)
DBSession.add(fairy)
DBSession.add(rjbean)
DBSession.commit()

Retrieving Entities and Facts from the DB works just like any other SQLAlchemy application:

from knowledge.model import Entity, DBSession

# Query all the Entities out of knowledge
knowledge_query = DBSession.query(Entity).all()
for entity in knowledge_query:
    print entity, entity.facts.values()

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages