def resume_conclude(self, agent, bindings, zexpr): if (len(zexpr) != 2): raise AssertionError num = termEvalErr(agent, bindings, zexpr[0]) args = termEvalErr(agent, bindings, zexpr[1]) obj = _ID_SAVE.idGetObject(agent, num) if obj is None: raise LowError("Cannot find object with id %s"%num) obj.set_state(agent, *args)
def resume_conclude(self, agent, bindings, zexpr): if (len(zexpr) != 2): raise AssertionError num = termEvalErr(agent, bindings, zexpr[0]) args = termEvalErr(agent, bindings, zexpr[1]) obj = _ID_SAVE.idGetObject(agent, num) if obj is None: raise LowError("Cannot find object with id %s" % num) obj.set_state(agent, *args)
def resume_conclude(self, agent, bindings, zexpr): if (len(zexpr) != 2): raise AssertionError num = termEvalErr(agent, bindings, zexpr[0]) args = termEvalErr(agent, bindings, zexpr[1]) try: _ID_SAVE.constructIdObject(agent, num, *args) except: errid = NEWPM.displayError() raise LowError("Error recreating object %s %s [%s]"%(num, value_str(args), errid))
def conclude(self, agent, bindings, zexpr, kbResume=False): if (len(zexpr) != 3): raise AssertionError obj_given = termEvalErr(agent, bindings, zexpr[0]) prop_given = termEvalErr(agent, bindings, zexpr[1]) val_given = termEvalErr(agent, bindings, zexpr[2]) if prop_given == EMPTY_SPARK_LIST: setObjectProperties(agent, obj_given, val_given, kbResume) else: setObjectProperty(agent, obj_given, prop_given, val_given, kbResume)
def helper(agent, bindings, zexpr): # Get the symbol/closure symvalue = termEvalErr(agent, bindings, zexpr[0]) # get the relevant implementation imp = agent.value_imp(symvalue) # Get the bindings/zexpr pair b = termEvalErr(agent, bindings, zexpr[1]) z = termEvalErr(agent, bindings, zexpr[2]) return imp, b, z
def resume_conclude(self, agent, bindings, zexpr): if (len(zexpr) != 2): raise AssertionError num = termEvalErr(agent, bindings, zexpr[0]) args = termEvalErr(agent, bindings, zexpr[1]) try: _ID_SAVE.constructIdObject(agent, num, *args) except: errid = NEWPM.displayError() raise LowError("Error recreating object %s %s [%s]" % (num, value_str(args), errid))
def resume_conclude(self, agent, bindings, zexpr): global NEXT_OBJECT_ID_NUM newnum = termEvalErr(agent, bindings, zexpr[0]) if STANDARD_ID_SAVE.is_resuming(): print "NOTE: OBJECT ID NUMBERS WILL CHANGE ON RESUMING" #print "CHANGING NEXT_OBJECT_ID_NUM %d->%d"%(NEXT_OBJECT_ID_NUM,newnum) NEXT_OBJECT_ID_NUM = newnum
def loadFactsFromFile(agent, filename, failedConcludes, diffIo, missingPredsList): from spark.internal.parse.basicvalues import VALUE_CONSTRUCTOR, Structure, isStructure from spark.internal.parse.generic_tokenizer import FileSource #from spark.internal.parse.sparkl_parser import EOF_DELIMITER, SPARKLTokenizer, SPARKLParser, BogusValue from spark.internal.parse.sparkl_parser import parseSPARKL from spark.lang.builtin_eval import builtin_evaluate from spark.internal.repr.varbindings import valuesBZ from spark.pylang.implementation import PersistablePredImpInt from spark.internal.parse.usagefuns import termEvalErr print "RESUMING KB FROM", filename #parser = SPARKLParser(VALUE_CONSTRUCTOR, SPARKLTokenizer(FileSource(filename))) #parseVal = parser.terms_and_taggeds(True, EOF_DELIMITER, "end of input") f = open(filename, 'rb') string = f.read() f.close() parseVal = parseSPARKL(string, "File "+filename, VALUE_CONSTRUCTOR) facts = [] # keep track of all facts in file for val in parseVal: # if isinstance(val, BogusValue): # bogusValues.append(val) # continue if not (isStructure(val)): raise AssertionError functor = val.functor try: imp = agent.getImp(functor) except LowError, e: if functor not in missingPredsList: #TODO: make warning only once per prediate functor console_warning("Predicate %s is no longer part of the SPARK process models and facts for it will be purged", functor.name) missingPredsList.append(functor) continue if not (isinstance(imp, PersistablePredImpInt)): raise AssertionError #evaluate each of the args before putting into the zexpr try: fact = [builtin_evaluate(agent, arg) for arg in val] facts.append(Structure(functor, fact)) b, z = valuesBZ(fact) except: errid = NEWPM.displayError() console_error("(persist) unable to resume knowledge base fact \n\t%s\n", val) continue bindings_altzexpr = imp.resume_conclude(agent, b, z) if bindings_altzexpr is not None: (bindings, altzexpr) = bindings_altzexpr failedConcludes.append((imp, bindings, altzexpr,)) diffIo.write("-(%s %s)\n"%(val.functor.name, \ " ".join([persist_strrep(v) for v in val]))) diffIo.write("+(%s %s)\n"%(val.functor.name, \ " ".join([persist_strrep(termEvalErr(agent, bindings, z)) for z in altzexpr])))
def conclude(self, agent, bindings, zexpr, kbResume=False): if (len(zexpr) != 2): raise AssertionError obj_given = termEvalErr(agent, bindings, zexpr[0]) val_given = termEvalErr(agent, bindings, zexpr[1]) setObjectProperty(agent, obj_given, self.propertyName, val_given, kbResume)
def loadFactsFromFile(agent, filename, failedConcludes, diffIo, missingPredsList): from spark.internal.parse.basicvalues import VALUE_CONSTRUCTOR, Structure, isStructure from spark.internal.parse.generic_tokenizer import FileSource #from spark.internal.parse.sparkl_parser import EOF_DELIMITER, SPARKLTokenizer, SPARKLParser, BogusValue from spark.internal.parse.sparkl_parser import parseSPARKL from spark.lang.builtin_eval import builtin_evaluate from spark.internal.repr.varbindings import valuesBZ from spark.pylang.implementation import PersistablePredImpInt from spark.internal.parse.usagefuns import termEvalErr print "RESUMING KB FROM", filename #parser = SPARKLParser(VALUE_CONSTRUCTOR, SPARKLTokenizer(FileSource(filename))) #parseVal = parser.terms_and_taggeds(True, EOF_DELIMITER, "end of input") f = open(filename, 'rb') string = f.read() f.close() parseVal = parseSPARKL(string, "File " + filename, VALUE_CONSTRUCTOR) facts = [] # keep track of all facts in file for val in parseVal: # if isinstance(val, BogusValue): # bogusValues.append(val) # continue if not (isStructure(val)): raise AssertionError functor = val.functor try: imp = agent.getImp(functor) except LowError, e: if functor not in missingPredsList: #TODO: make warning only once per prediate functor console_warning( "Predicate %s is no longer part of the SPARK process models and facts for it will be purged", functor.name) missingPredsList.append(functor) continue if not (isinstance(imp, PersistablePredImpInt)): raise AssertionError #evaluate each of the args before putting into the zexpr try: fact = [builtin_evaluate(agent, arg) for arg in val] facts.append(Structure(functor, fact)) b, z = valuesBZ(fact) except: errid = NEWPM.displayError() console_error( "(persist) unable to resume knowledge base fact \n\t%s\n", val) continue bindings_altzexpr = imp.resume_conclude(agent, b, z) if bindings_altzexpr is not None: (bindings, altzexpr) = bindings_altzexpr failedConcludes.append(( imp, bindings, altzexpr, )) diffIo.write("-(%s %s)\n"%(val.functor.name, \ " ".join([persist_strrep(v) for v in val]))) diffIo.write("+(%s %s)\n"%(val.functor.name, \ " ".join([persist_strrep(termEvalErr(agent, bindings, z)) for z in altzexpr])))