Add learning phase to shallow (1 level) nested structures.

This commit is contained in:
kenkeiras 2017-05-15 16:51:39 +02:00
parent 099af2a815
commit 5f6b067e17
4 changed files with 111 additions and 27 deletions

View file

@ -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,