- From: Chimezie <chimezie@gmail.com>
- Date: Sun, 1 Mar 2009 19:02:36 -0800 (PST)
- To: fuxi-discussion <fuxi-discussion@googlegroups.com>
- Cc: public-cwm-talk@w3.org
Various changes towards 1.0 feature freeze of FuXi: Significant changes to the normal form reduction methods for horn logic employed for managing syntax. As a result, there is significantly better, deterministic handling of disjunctions (unionOf). The reset method on networks now completely clears its various in- memory caches Various fixes to the magic set algorithms while improving test coverage (test coverage of DLP algorithms is now 90%). A new FuXi.DLP.Negation module is added [1] which implements stratified negation semantics for RDF via SPARQL MINUS patterns [3] . FuXi now (optionally) uses telescope's [2] programmatic, generative SPARQL query builder to create MINUS renderings into colloquial SPARQL. In this way, OWL-DL documents that use complementOf can use interpretations that assume stratified negation semantics for all negated formulas and FuXi can perform finite model checking of "general" Horn clause logic described in an OWL document. The included tests show examples of how InfixOwl is used to construct OWL/RDF documents that have their stable models calculated via fixpoint evaluation of a RETE-UL network: # Some Class # ## Primitive Type ## # SubClassOf: Class: ex:NoExclusion . # DisjointWith ( ex:contains some ex:IsolatedCABGConcomitantExclusion ) CABG - Coronary Artery Bypass Graft from FuXi.DLP.DLNormalization import NormalFormReduction from FuXi.DLP.Negationimport CalculateStratifiedModel from FuXi.Rete.RuleStore import N3RuleStore,SetupRuleStore contains=Property(EX_NS.contains) #A negated existential restriction testClass = ~(contains|some|EX.Exclusion) testClass2 = EX.NoExclusion testClass2 += testClass #A GCI axiom with a general left hand side (testClass is the left operand of the GCI) #standard LP normal form algorithms are used to reduce guarded fragment first-order theories #into logic programs NormalFormReduction(self.ontGraph) individual1 = BNode() individual2 = BNode() contains.extent = [(individual1,individual2)] #the new makeNetwork argument is used to create a RETE network ruleStore,ruleGraph,network=SetupRuleStore(makeNetwork=True) #posRules and NegRules are the stratified positive and negative logic programs used #to calculate a stable model or answer set for queries. posRules,negRules=CalculateStratifiedModel (network,self.ontGraph,[EX_NS.NoExclusion]) [1] http://code.google.com/p/python-dlp/source/detail?format=side&path=/trunk/fuxi/lib/DLP/Negation.py&r=270&spec=svn270 [2] http://bitbucket.org/exogen/telescope/wiki/Home [2] http://www.dcc.uchile.cl/TR/2006/TR_DCC-2006-009.pdf
Received on Monday, 2 March 2009 03:03:13 UTC