Please Make a Donation:
Support This Project

Hosted by:
Get Python Knowledge Engine (PyKE) at SourceForge.net. Fast, secure and Free Open Source software downloads

Asserting New Facts

some_engine.add_universal_fact(kb_name, fact_name, arguments)

The add_universal_fact function is called once per fact. These facts are never deleted and apply to all cases.

Alternatively, you can place universal facts in a .kfb file so that they are loaded automatically.

>>> my_engine.add_universal_fact('family', 'son_of', ('bruce', 'thomas'))

Multiple facts with the same name are allowed.

>>> my_engine.add_universal_fact('family', 'son_of', ('david', 'bruce'))

But duplicate facts (with the same arguments) are silently ignored.

>>> my_engine.add_universal_fact('family', 'son_of', ('david', 'bruce'))
>>> my_engine.get_kb('family').dump_universal_facts()
son_of('bruce', 'thomas')
son_of('david', 'bruce')

These facts are accessed as kb_name.fact_name(arguments) within the .krb files.

some_engine.assert_(kb_name, fact_name, arguments)

Call assert_ for each starting fact for this case. Like universal facts, you may have multiple facts with the same name so long as they have different arguments.

>>> my_engine.assert_('family', 'son_of', ('michael', 'bruce'))
>>> my_engine.assert_('family', 'son_of', ('fred', 'thomas'))
>>> my_engine.assert_('family', 'son_of', ('fred', 'thomas'))

Duplicates with universal facts are also ignored.

>>> my_engine.assert_('family', 'son_of', ('bruce', 'thomas'))
>>> my_engine.get_kb('family').dump_specific_facts()
son_of('michael', 'bruce')
son_of('fred', 'thomas')
>>> my_engine.get_kb('family').dump_universal_facts()
son_of('bruce', 'thomas')
son_of('david', 'bruce')

There is no difference within the .krb files of how universal facts verses case specific facts are used. The only difference between the two types of facts is that the case specific facts are deleted when a reset is done.

>>> my_engine.reset()
>>> my_engine.get_kb('family').dump_specific_facts()
>>> my_engine.get_kb('family').dump_universal_facts()
son_of('bruce', 'thomas')
son_of('david', 'bruce')

More:

Creating an Inference Engine Object

How to create a Pyke inference engine object.

Asserting New Facts

How to dynamically assert new facts from your Python program.

Proving Goals

Using Pyke's API to prove goals from your Python program.

Other Functions

Other miscellaneous functions available that you might be interested in, such as tracing rules and smart error tracebacks that show lines from your .krb files.

Page last modified Mon, Mar 08 2010.