Ejemplo n.º 1
0
 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)
Ejemplo n.º 2
0
 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)
Ejemplo n.º 3
0
 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))
Ejemplo n.º 4
0
 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)
Ejemplo n.º 5
0
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
Ejemplo n.º 6
0
Archivo: bz.py Proyecto: jbalint/spark
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
Ejemplo n.º 7
0
 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))
Ejemplo n.º 8
0
 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
Ejemplo n.º 9
0
 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
Ejemplo n.º 10
0
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])))
Ejemplo n.º 11
0
 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)
Ejemplo n.º 12
0
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])))