def HornFromN3(n3Source,additionalBuiltins=None): from FuXi.Rete.RuleStore import SetupRuleStore, N3RuleStore if isinstance(n3Source,ConjunctiveGraph): store=N3RuleStore(additionalBuiltins=additionalBuiltins) for ctx in n3Source.contexts(): for s,p,o in ctx: store.add((s,p,o),ctx) else: store,graph=SetupRuleStore(n3Source,additionalBuiltins=additionalBuiltins) store._finalize() return Ruleset(n3Rules=store.rules,nsMapping=store.nsMgr)
def HornFromN3(n3Source,additionalBuiltins=None): """ Takes the path or URL of a N3 document, and a mapping from predicates to functions that implement any builtins found in the N3 document """ from FuXi.Rete.RuleStore import SetupRuleStore, N3RuleStore if isinstance(n3Source,ConjunctiveGraph): store=N3RuleStore(additionalBuiltins=additionalBuiltins) for ctx in n3Source.contexts(): for s,p,o in ctx: store.add((s,p,o),ctx) else: store,graph=SetupRuleStore(n3Source,additionalBuiltins=additionalBuiltins) store._finalize() return Ruleset(n3Rules=store.rules,nsMapping=store.nsMgr)
def NetworkFromN3(n3Source,additionalBuiltins=None): """ Takes an N3 / RDF conjunctive graph and returns a ReteNetwork """ from FuXi.Rete.RuleStore import SetupRuleStore rule_store, rule_graph, network = SetupRuleStore( makeNetwork=True, additionalBuiltins=additionalBuiltins) for ctx in n3Source.contexts(): for s,p,o in ctx: rule_store.add((s,p,o),ctx) rule_store._finalize() for rule in Ruleset(n3Rules=rule_store.rules,nsMapping=rule_store.nsMgr): network.buildNetworkFromClause(rule) return network
def HornFromN3(n3Source, additionalBuiltins=None): """Extract Horn rules from an N3 document. Takes the path or URL of a N3 document, and a mapping from predicates to functions that implement any builtins found in the N3 document """ from FuXi.Rete.RuleStore import SetupRuleStore, N3RuleStore if isinstance(n3Source, ConjunctiveGraph): store = N3RuleStore(additionalBuiltins=additionalBuiltins) for ctx in n3Source.contexts(): for s, p, o in ctx: store.add((s, p, o), ctx) else: store, graph = SetupRuleStore(n3Source, additionalBuiltins=additionalBuiltins) store._finalize() return Ruleset(n3Rules=store.rules, nsMapping=store.nsMgr)
def NetworkFromN3(n3Source, additionalBuiltins=None): """Take an N3 / RDF conjunctive graph and return a ReteNetwork. Network is built from the rules in the N3 graph """ from FuXi.Rete.RuleStore import SetupRuleStore rule_store, rule_graph, network = SetupRuleStore( makeNetwork=True, additionalBuiltins=additionalBuiltins) if isinstance(n3Source, ConjunctiveGraph): for ctx in n3Source.contexts(): for s, p, o in ctx: rule_store.add((s, p, o), ctx) else: for s, p, o in n3Source: rule_store.add((s, p, o), n3Source) rule_store._finalize() for rule in Ruleset(n3Rules=rule_store.rules, nsMapping=rule_store.nsMgr): network.buildNetworkFromClause(rule) return network
class AdornProgramTest(unittest.TestCase): def setUp(self): self.ruleStore,self.ruleGraph=SetupRuleStore(StringIO(PROGRAM2)) self.ruleStore._finalize() self.ruleStrings=[ 'Forall ?Y ?X ( :sg_bf(?X ?Y) :- And( :sg_magic(?X) ex:flat(?X ?Y) ) )', 'Forall ( :sg_magic(?Z1) :- And( :sg_magic(?X) ex:up(?X ?Z1) ) )', 'Forall ?Z4 ?Y ?X ?Z1 ?Z2 ?Z3 ( :sg_bf(?X ?Y) :- And( :sg_magic(?X) ex:up(?X ?Z1) :sg_magic(?Z1) :sg_bf(?Z1 ?Z2) ex:flat(?Z2 ?Z3) :sg_magic(?Z3) :sg_bf(?Z3 ?Z4) ex:down(?Z4 ?Y) ) )', 'Forall ( :sg_magic(?Z3) :- And( :sg_magic(?X) ex:up(?X ?Z1) :sg_bf(?Z1 ?Z2) ex:flat(?Z2 ?Z3) ) )', ] def testAdorn(self): fg=Graph().parse(StringIO(PROGRAM2),format='n3') rules=Ruleset(n3Rules=self.ruleGraph.store.rules, nsMapping=self.ruleStore.nsMgr) from pprint import pprint;pprint(self.ruleStrings) for rule in MagicSetTransformation(fg, rules, NON_LINEAR_MS_QUERY, [MAGIC.sg]): self.failUnless(repr(rule) in self.ruleStrings, repr(rule))