Mercurial > code > home > repos > homeauto
view service/reasoning/inference.py @ 919:6ee2a90fc816
bugs in async http client. move trig helpers to rdflibtrig, which can work with rdflib 4
Ignore-this: 81dc30256f5d2658e53fce60abea66db
darcs-hash:20130910073852-312f9-f863b729e4c75f160d0740ae9038b5fab084b86b
author | drewp <drewp@bigasterisk.com> |
---|---|
date | Tue, 10 Sep 2013 00:38:52 -0700 |
parents | 887d47682d94 |
children | 0f2ac014d9ea |
line wrap: on
line source
""" see ./reasoning for usage """ import sys, re import restkit from rdflib import URIRef try: from rdflib import StringInputSource from rdflib.Graph import Graph except ImportError: from rdflib.parser import StringInputSource from rdflib import Graph sys.path.append("/my/proj/room/fuxi/build/lib.linux-x86_64-2.6") from FuXi.Rete.Util import generateTokenSet from FuXi.Rete import ReteNetwork from rdflib import plugin from rdflib.store import Store from rdflibtrig import parseTrig, addTrig def infer(graph, rules): """ returns new graph of inferred statements """ # based on fuxi/tools/rdfpipe.py store = plugin.get('IOMemory',Store)() store.open('') target = Graph() tokenSet = generateTokenSet(graph) network = ReteNetwork(rules, inferredTarget=target) network.feedFactsToAdd(tokenSet) store.rollback() return target import time, logging log = logging.getLogger() def logTime(func): def inner(*args, **kw): t1 = time.time() try: ret = func(*args, **kw) finally: log.info("Call to %s took %.1f ms" % ( func.__name__, 1000 * (time.time() - t1))) return ret return inner