Add learning phase to shallow (1 level) nested structures.
This commit is contained in:
parent
099af2a815
commit
5f6b067e17
4 changed files with 111 additions and 27 deletions
|
@ -12,9 +12,33 @@ def resolve(knowledge_base, elements, value):
|
|||
return value
|
||||
|
||||
|
||||
# TODO: improve typing
|
||||
def infer_type(result):
|
||||
if isinstance(result, bool):
|
||||
return "bool"
|
||||
elif isinstance(result, int):
|
||||
return "int"
|
||||
|
||||
else:
|
||||
raise Exception("Unknown type for value: {}".format(result))
|
||||
|
||||
|
||||
def get_subquery_type(knowledge_base, atom):
|
||||
subquery_result = integrate_information(knowledge_base,
|
||||
{
|
||||
"parsed": atom,
|
||||
"elements": [],
|
||||
})
|
||||
assert (subquery_result is not None)
|
||||
result = subquery_result.getter()
|
||||
|
||||
result_type = infer_type(result)
|
||||
return result_type
|
||||
|
||||
|
||||
def property_for_value(knowledge_base, value):
|
||||
print(value)
|
||||
print(knowledge_base[value])
|
||||
# print(value)
|
||||
# print(knowledge_base[value])
|
||||
return knowledge_base[value]['as_property']
|
||||
|
||||
|
||||
|
@ -27,6 +51,11 @@ def modifiable_property_from_property(prop, path, value):
|
|||
nonlocal prop, path, value
|
||||
prop[path] = value
|
||||
|
||||
return ModifiableProperty(
|
||||
getter=getter,
|
||||
setter=setter,
|
||||
)
|
||||
|
||||
|
||||
def exists_property_with_value(knowledge_base, elements, subj, value):
|
||||
subj = resolve(knowledge_base, elements, subj)
|
||||
|
@ -50,6 +79,7 @@ def modifiable_element_for_existance_in_set(container, set_name, element):
|
|||
def setter():
|
||||
nonlocal container, set_name, element
|
||||
return container[set_name].add(element)
|
||||
|
||||
return ModifiableProperty(
|
||||
getter=getter,
|
||||
setter=setter,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue