예제 #1
0
 def test_create_child_atomspace(self):
     test = ConceptNode("test")
     b = create_child_atomspace(self.space)
     test2 = b.add_node(types.ConceptNode, 'test2')
     self.assertTrue(test in b.get_atoms_by_type(types.ConceptNode))
     self.assertTrue(test2 in b.get_atoms_by_type(types.ConceptNode))
     self.assertTrue(test2 not in self.space.get_atoms_by_type(types.ConceptNode))
예제 #2
0
 def intersect(self, query):
     """
     Extracts relevant patterns to the query and intersects their indices
     returns set of atoms ids
     """
     # put query in tmp atomspace, check if there are relevant patterns
     tmp = create_child_atomspace(self.pattern_space)
     q = tmp.add_atom(rename(tmp, self.pattern_space, query))
     # check query for exact match:
     exact_match = execute_atom(tmp, tmp.add_link(types.BindLink, [q, q]))
     for m in exact_match.out:
         return self._index[self.pattern_space.add_link(
             types.BindLink, [m, m])]
     # no exact match: search among all patterns
     # todo: search subgraphs
     res_set = None
     for pat, idx in self._index.items():
         # pattern is relevant if it matches query
         match = execute_atom(tmp, pat)
         for m in match.out:
             if hash(m) == hash(q):
                 if res_set is None:
                     res_set = idx
                 else:
                     res_set = res_set.intersection(idx)
     return res_set
예제 #3
0
 def execute_atom(self, atom, atomspace=None):
     if atomspace is None:
         atomspace = create_child_atomspace(self.atomspace)
     result = execute_atom(atomspace, atom)
     value = get_value(result)
     atomspace.clear()
     # todo: use ValueOfLink to get tensor value
     return value
예제 #4
0
 def test_create_child_atomspace(self):
     test = ConceptNode("test")
     b = create_child_atomspace(self.space)
     test2 = b.add_node(types.ConceptNode, 'test2')
     self.assertTrue(test in b.get_atoms_by_type(types.ConceptNode))
     self.assertTrue(test2 in b.get_atoms_by_type(types.ConceptNode))
     self.assertTrue(
         test2 not in self.space.get_atoms_by_type(types.ConceptNode))
예제 #5
0
 def execute_atom(self, atom, atomspace=None):
     if atomspace is None:
         atomspace = create_child_atomspace(self.atomspace)
     result = execute_atom(atomspace, atom)
     value = get_cached_value(result)
     self.clear_cache()
     atomspace.clear()
     return value
예제 #6
0
def tmp_atomspace(atomspace):
    parent_atomspace = atomspace
    atomspace = create_child_atomspace(parent_atomspace)
    initialize_opencog(atomspace)
    try:
        yield atomspace
    finally:
        atomspace.clear()
        finalize_opencog()
        initialize_opencog(parent_atomspace)
예제 #7
0
 def test_add_atom_from_grounded_schema_node(self):
     test_as = create_child_atomspace(self.atomspace)
     execute_atom(
         test_as,
         ExecutionOutputLink(GroundedSchemaNode("py:add_new_link"),
                             ListLink()))
     self.assertTrue(
         test_as.is_link_in_atomspace(types.InheritanceLink, [
             test_as.add_node(types.ConceptNode, "cat"),
             test_as.add_node(types.ConceptNode, "animal")
         ]))
예제 #8
0
    def add_data(self, data):
        idx, new = self._storage.add_atom(data)
        if not new:
            return
        assert data.is_link()
        # self.add_toplevel_pattern(data)
        self.add_semantic_pattern(data)

        tmp = create_child_atomspace(self.pattern_space)
        content = tmp.add_atom(data)
        self.update_index(tmp, content, idx)
예제 #9
0
 def evaluate_atom(self, atom, atomspace=None):
     if atomspace is None:
         atomspace = create_child_atomspace(self.atomspace)
     result = evaluate_atom(atomspace, atom)
     # todo: use ValueOfLink to get tensor value
     return result
예제 #10
0
from opencog.type_constructors import *
from opencog.utilities import initialize_opencog
from opencog.atomspace import create_child_atomspace
from opencog.bindlink import execute_atom

# Initialize AtomSpace
atomspace = AtomSpace()
initialize_opencog(atomspace)

ConceptNode("cat")
ConceptNode("dog")

for atom in atomspace:
    print('parent atom:', atom)

child_atomspace = create_child_atomspace(atomspace)

for atom in child_atomspace:
    print('child atom:', atom)
 def create_child_atomspace(self):
     self.child_atomspace = create_child_atomspace(self.atomspace)
     initialize_opencog(self.child_atomspace)
     return self.child_atomspace