Skip to content

A Python API to access a KB-API conformant knowledge base

Notifications You must be signed in to change notification settings

chili-epfl/pykb

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

61 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pykb: A Python API to access a KB-API conformant knowledge base

Documentation Status

pykb provides a 'pythonic' interface to KB-API conformant knowledge bases like minimalkb or ORO.

Installation

$ pip install pykb

(or, of course, from the source: clone & python setup.py install)

Documentation

Head to readthedocs. Sparse for now.

Examples

import kb
import time

REASONING_DELAY = 0.2

def onevent(evt):
    print("Something happened! %s" % evt)

with kb.KB() as kb:

    kb += ["alfred rdf:type Human", "alfred likes icecream"]
    
    if 'alfred' in kb:
        print("Hello Alfred!")

    if 'alfred likes icecream' in kb:
        print("Oh, you like icrecreams?")

    kb -= ["alfred likes icecream"]

    if 'alfred likes *' not in kb:
        print("You don't like anything? what a pity...")

    kb += ["Human rdfs:subClassOf Animal"]
    time.sleep(REASONING_DELAY) # give some time to the reasoner
    
    if 'alfred rdf:type Animal' in kb:
        print("I knew it!")

    for facts in kb.about("Human"):
        print(facts)

    for known_human in kb["?human rdt:type Human"]:
        print(known_human)


    kb += ["alfred desires jump", "alfred desires oil"]
    kb += ["jump rdf:type Action"]

    for action_lover in kb["?agent desires ?obj", "?obj rdf:type Action"]:
        print(action_lover)

    kb.subscribe(["?agent isIn ?loc", "?loc rdf:type Room"], onevent)
    kb += ["alfred isIn sleepingroom", "sleepingroom rdf:type Room"]

    time.sleep(1) # event should have been triggered!

About

A Python API to access a KB-API conformant knowledge base

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages