/pydavid

A Python interface of Open-David, an abductive reasoner

Primary LanguagePythonMIT LicenseMIT

pydavid: A simple Python Interface of Open-David

pydavid is a simple Python interface of Open-David (version 1.73), an abductive reasoner written in C++.

sample.png

Installation

pydavid is a frontend of Open-David and does not include Open-David. Please install Open-David , and then install pydavid by the following command.

$ pip install pydavid

Usage

The following is a sample code. Before run, please set approapriate path to an executable file of Open-David in your computer, download toy.dav in this repository, and place it in your current working directly.

from pydavid    import OpenDavid
from dhgraph    import DirectedHypergraph

# PLEASE MODIFY PATH ACCORDING TO YOUR ENVIRONMENT.
OpenDavid.set_david_path("/usr/local/bin/david")
with open("toy.dav", mode="r") as f:
    data = f.read()
    OpenDavid.set_knowledge_base(data)

observation_list = ["police(John)", "die(E1)", "subj(E1, Mary)",\
    "arrest(E2)", "subj(E2, x)", "obj(E2, Bob)"]
required_atom_list = ["(x = John)"]
OpenDavid.set_problem(observation_list, required_atom_list)
json_str = OpenDavid.run() # Wait until it terminates if interpreter is used.

# json is converted to a directed hypergraph.
g = OpenDavid.build_proofgraph(json_str)
# "sample.png" will be generated in your cwd.
g.render(filename="sample", format="png")

NOTE: toy.dav distributed in this repository was obtained from Open-David , but a problem field was deleted, because pydavid separately sets knowledge base data and a problem data.

Please see dhgraph for usage of dhgraph.

Bugs/Requests/Discussions

Please report bugs and requests from GitHub Issues , and ask questions from GitHub Discussions .

License

Please see LICENSE .