def objectPropertySolutions(agent, bindings, zexpr, propname_given): "Generator that returns a tuple (obj, propname, val) for each solution" d1 = agent.getInfo(P_ObjectProperty) obj_iter = makeSequence(termEvalOpt(agent, bindings, zexpr[0])) propname_iter = makeSequence(propname_given) for obj in obj_iter or d1: d2 = d1.get(obj, NULLDICT) if d2 and (obj_iter or termMatch(agent, bindings, zexpr[0], obj)): for propname in propname_iter or d2: val = d2.get(propname) if val is not None \ and termMatch(agent, bindings, zexpr[2], val) \ and (propname_iter or termMatch(agent, bindings, zexpr[1], propname)): yield (obj, propname, val)
def retractall(self, agent, bindings, zexpr): if (len(zexpr) != 3): raise AssertionError removefacts = list(objectPropertySolutions(agent, bindings, zexpr, termEvalOpt(agent, bindings, zexpr[1]))) for fact in removefacts: setObjectProperty(agent, fact[0], fact[1], None, False)
def solutions(self, agent, bindings, zexpr): if (len(zexpr) != 3): raise AssertionError for tup in objectPropertySolutions(agent, bindings, zexpr, termEvalOpt(agent, bindings, zexpr[1])): yield SOLVED
def solution(self, agent, bindings, zexpr): if (len(zexpr) != 3): raise AssertionError for x in objectPropertySolutions(agent, bindings, zexpr, termEvalOpt(agent, bindings, zexpr[1])): return SOLVED return NOT_SOLVED