Declaratives
A declarative, or statement, enables the user to teach the system new information.
The predicate store is available to store a record of information into a table.
{
"syn": "s() -> a() common_noun_name(E1) 'is' a() common_noun_name(E2)",
"sem": lambda common_noun_name1, a2, common_noun_name2: [('store', [('isa', common_noun_name1, common_noun_name2)])],
},
Being critical
The system can be critical in what it accepts as new knowledge. It can check if the new information is not inconsistent with existing information.
An implementation is available in the SIR demo.
Notice that the sem of the sentence doesn’t just store the preposition, it says that the user “claims” the information.
{
"syn": "s(E3) -> proper_noun(E1) 'is' preposition(E1, E2) proper_noun(E2)",
"sem": lambda proper_noun1, preposition, proper_noun2: proper_noun1 + proper_noun2 + [('intent_claim', preposition, E3)],
}
Only after checking the validity of the information is it actually stored.
intent_claim(Atom, "impossible") :- not(check_claim(Atom)).
intent_claim(Atom, "ok") :- check_claim(Atom), store(Atom).