Mercurial > code > home > repos > homeauto
diff service/reasoning/reasoning.py @ 853:39857f82922e
refactor graph ops
Ignore-this: 60494d1602278528c51f138d6e56c32c
darcs-hash:20121231204758-312f9-4f3382463757a6f17d0409905922a42207cad987
author | drewp <drewp@bigasterisk.com> |
---|---|
date | Mon, 31 Dec 2012 12:47:58 -0800 |
parents | 6ccd930834d1 |
children | 0aeb8d6ea124 |
line wrap: on
line diff
--- a/service/reasoning/reasoning.py Mon Dec 31 00:47:12 2012 -0800 +++ b/service/reasoning/reasoning.py Mon Dec 31 12:47:58 2012 -0800 @@ -26,6 +26,7 @@ from FuXi.Rete.RuleStore import N3RuleStore import cyclone.web from inference import addTrig, infer +from graphop import graphEqual sys.path.append("../../lib") from logsetup import log @@ -34,35 +35,6 @@ ROOM = Namespace("http://projects.bigasterisk.com/room/") DEV = Namespace("http://projects.bigasterisk.com/device/") -def graphWithoutMetadata(g, ignorePredicates=[]): - """ - graph filter that removes any statements whose subjects are - contexts in the graph and also any statements with the given - predicates - """ - ctxs = map(URIRef, set(g.contexts())) # weird they turned to strings - - out = ConjunctiveGraph() - for stmt in g.quads((None, None, None)): - if stmt[0] not in ctxs and stmt[1] not in ignorePredicates: - out.addN([stmt]) - return out - -def graphEqual(a, b, ignorePredicates=[]): - """ - compare graphs, omitting any metadata statements about contexts - (especially modification times) and also any statements using the - given predicates - """ - stmtsA = graphWithoutMetadata(a, ignorePredicates) - stmtsB = graphWithoutMetadata(b, ignorePredicates) - if log.getEffectiveLevel() <= logging.DEBUG: - diff = set(stmtsA).symmetric_difference(set(stmtsB)) - if diff: - log.debug("changing statements:") - for s in diff: - log.debug(str(s)) - return set(stmtsA) == set(stmtsB) class InputGraph(object): def __init__(self, inputDirs, onChange):