class KBTestCase(unittest.TestCase): def setUp(self): self.a = Agent("kbagent@" + host, "secret") self.a.start() def tearDown(self): self.a.stop() @unittest.skip("") def testSPARQLopenlink(self): try: from spade import SPARQLKB except: self.skipTest( "Could not import SPARQLKB. Try installing SPARQLWrapper (sudo easy_install SPARQLWrapper)" ) url = 'http://lod.openlinksw.com/sparql' try: request = urllib2.urlopen(url, timeout=5) except: self.skipTest("URL " + url + " is not currently available.") if request.code != 200: self.skipTest("URL " + url + " is not currently available.") self.a.configureKB("SPARQL", sentence=None, path=url) for result in self.a.askBelieve(sparql1): assert result["p"] in [ "0.5", "0.55", "0.65", "0.69", "0.75", "0.85", "1.79" ] assert result["c"] == "GBP" @unittest.skip("") def testSPARQLdbpedia(self): try: from spade import SPARQLKB except: self.skipTest( "Could not import SPARQLKB. Try installing SPARQLWrapper (sudo easy_install SPARQLWrapper)" ) url = 'http://dbpedia.org/sparql' try: request = urllib2.urlopen(url, timeout=5) except: self.skipTest("URL " + url + " is not currently available.") if request.code != 200: self.skipTest("URL " + url + " is not currently available.") self.a.configureKB("SPARQL", sentence=None, path=url) for result in self.a.askBelieve(sparql2): assert result["name"] in [ "Croatia", "Republic of Croatia", "Republika Hrvatska" ] def testEclipse(self): try: from spade import ECLiPSeKB except: self.skipTest("Could not import ECLiPSeKB") try: self.a.configureKB("ECLiPSe", None, "eclipse") except ECLiPSeExecutableNotFound: self.skipTest( 'ECLiPSe Prolog executable not found on the specified path.') if not issubclass(self.a.kb.kb.__class__, ECLiPSeKB.ECLiPSeKB): self.fail("ECLiPSe was not properly configured.") self.a.addBelieve('a(b,c)') self.a.addBelieve('a(c,d)') self.a.addBelieve('( p(_X,_Y) :- a(_X,_Y) )') self.a.addBelieve('( p(_X,_Y) :- a(_X,_Z), p(_Z,_Y) )') for result in self.a.askBelieve('p(X,Y)'): assert result in [{ 'Y': 'c', 'X': 'b' }, { 'Y': 'd', 'X': 'c' }, { 'Y': 'd', 'X': 'b' }] def testEclipseNotFound(self): try: from spade import ECLiPSeKB except: self.skipTest("Could not import ECLiPSeKB") self.assertRaises(ECLiPSeExecutableNotFound, self.a.configureKB, "ECLiPSe", None, "dummyeclipse") def testFlora2(self): try: from spade import Flora2KB except: self.skipTest("Could not import Flora2KB") try: self.a.configureKB("Flora2", None, "runflora") except Flora2ExecutableNotFound: self.skipTest( 'Flora-2 executable not found on the specified path. Try installing flora2' ) if not issubclass(self.a.kb.kb.__class__, Flora2KB.Flora2KB): self.fail("Flora2 was not properly configured.") self.a.addBelieve('a[ b->c ]') self.a.addBelieve('( ?x[ c->?y ] :- ?x[ b->?y ] )', 'insertrule') for result in self.a.askBelieve('?x[ ?y->?z ]'): assert result in [{ 'y': 'b', 'x': 'a', 'z': 'c' }, { 'y': 'c', 'x': 'a', 'z': 'c' }] self.a.removeBelieve('a[ b->c ]') result = self.a.askBelieve('?x[ ?y->?z ]') assert len(result) == 0 def testFlora2NotFound(self): try: from spade import Flora2KB except: self.skipTest("Could not import Flora2KB") self.assertRaises(Flora2ExecutableNotFound, self.a.configureKB, "Flora2", None, "dummyrunflora") def testSWI(self): try: from spade import SWIKB except: self.skipTest("Could not import SWIKB") try: self.a.configureKB("SWI", None, "swipl") except SWIExecutableNotFound: self.skipTest( 'SWI-Prolog executable not found on the specified path. Try installing swi-prolog.' ) if not issubclass(self.a.kb.kb.__class__, SWIKB.SWIKB): self.fail("SWI was not properly configured.") self.a.addBelieve('a(b,c)') self.a.addBelieve('a(c,d)') self.a.addBelieve('( p(_X,_Y) :- a(_X,_Y) )') self.a.addBelieve('( p(_X,_Y) :- a(_X,_Z), p(_Z,_Y) )') for result in self.a.askBelieve('p(X,Y)'): assert result in [{ 'Y': 'c', 'X': 'b' }, { 'Y': 'd', 'X': 'c' }, { 'Y': 'd', 'X': 'b' }] self.a.removeBelieve('a(b,c)') for result in self.a.askBelieve('p(X,Y)'): assert result in [{'Y': 'd', 'X': 'c'}] self.a.removeBelieve('a(c,d)') self.assertFalse(self.a.askBelieve('p(X,Y)')) def testSWINotFound(self): try: from spade import SWIKB except: self.skipTest("Could not import SWIKB") self.assertRaises(SWIExecutableNotFound, self.a.configureKB, "SWI", None, "dummyswipl") def testXSB(self): try: from spade import XSBKB except: self.skipTest("Could not import XSBKB") try: self.a.configureKB("XSB", None, "xsb") except XSBExecutableNotFound: self.skipTest( 'XSB executable not found on the specified path. Try installing xsb' ) if not issubclass(self.a.kb.kb.__class__, XSBKB.XSBKB): self.fail("XSB was not properly configured.") self.a.addBelieve('a(b,c)') self.a.addBelieve('a(c,d)') self.a.addBelieve('( p(_X,_Y) :- a(_X,_Y) )') self.a.addBelieve('( p(_X,_Y) :- a(_X,_Z), p(_Z,_Y) )') for result in self.a.askBelieve('p(X,Y)'): assert result in [{ 'Y': 'c', 'X': 'b' }, { 'Y': 'd', 'X': 'c' }, { 'Y': 'd', 'X': 'b' }] self.a.removeBelieve('a(b,c)') for result in self.a.askBelieve('p(X,Y)'): self.assertEqual(result, {'Y': 'd', 'X': 'c'}) self.a.removeBelieve('a(c,d)') result = self.a.askBelieve('p(X,Y)') self.assertFalse(result) def testXSBNotFound(self): try: from spade import XSBKB except: self.skipTest("Could not import XSBKB") self.assertRaises(XSBExecutableNotFound, self.a.configureKB, "XSB", None, "dummyxsb")
class KBTestCase(unittest.TestCase): def setUp(self): self.a = Agent("kbagent@" + host, "secret") self.a.start() def tearDown(self): self.a.stop() @unittest.skip("") def testSPARQLopenlink(self): try: from spade import SPARQLKB except: self.skipTest("Could not import SPARQLKB. Try installing SPARQLWrapper (sudo easy_install SPARQLWrapper)") url = 'http://lod.openlinksw.com/sparql' try: request = urllib2.urlopen(url, timeout=5) except: self.skipTest("URL " + url + " is not currently available.") if request.code != 200: self.skipTest("URL " + url + " is not currently available.") self.a.configureKB("SPARQL", sentence=None, path=url) for result in self.a.askBelieve(sparql1): assert result["p"] in ["0.5", "0.55", "0.65", "0.69", "0.75", "0.85", "1.79"] assert result["c"] == "GBP" @unittest.skip("") def testSPARQLdbpedia(self): try: from spade import SPARQLKB except: self.skipTest("Could not import SPARQLKB. Try installing SPARQLWrapper (sudo easy_install SPARQLWrapper)") url = 'http://dbpedia.org/sparql' try: request = urllib2.urlopen(url, timeout=5) except: self.skipTest("URL " + url + " is not currently available.") if request.code != 200: self.skipTest("URL " + url + " is not currently available.") self.a.configureKB("SPARQL", sentence=None, path=url) for result in self.a.askBelieve(sparql2): assert result["name"] in ["Croatia", "Republic of Croatia", "Republika Hrvatska"] def testEclipse(self): try: from spade import ECLiPSeKB except: self.skipTest("Could not import ECLiPSeKB") try: self.a.configureKB("ECLiPSe", None, "eclipse") except ECLiPSeExecutableNotFound: self.skipTest('ECLiPSe Prolog executable not found on the specified path.') if not issubclass(self.a.kb.kb.__class__, ECLiPSeKB.ECLiPSeKB): self.fail("ECLiPSe was not properly configured.") self.a.addBelieve('a(b,c)') self.a.addBelieve('a(c,d)') self.a.addBelieve('( p(_X,_Y) :- a(_X,_Y) )') self.a.addBelieve('( p(_X,_Y) :- a(_X,_Z), p(_Z,_Y) )') for result in self.a.askBelieve('p(X,Y)'): assert result in [{'Y': 'c', 'X': 'b'}, {'Y': 'd', 'X': 'c'}, {'Y': 'd', 'X': 'b'}] def testEclipseNotFound(self): try: from spade import ECLiPSeKB except: self.skipTest("Could not import ECLiPSeKB") self.assertRaises(ECLiPSeExecutableNotFound, self.a.configureKB, "ECLiPSe", None, "dummyeclipse") def testFlora2(self): try: from spade import Flora2KB except: self.skipTest("Could not import Flora2KB") try: self.a.configureKB("Flora2", None, "runflora") except Flora2ExecutableNotFound: self.skipTest('Flora-2 executable not found on the specified path. Try installing flora2') if not issubclass(self.a.kb.kb.__class__, Flora2KB.Flora2KB): self.fail("Flora2 was not properly configured.") self.a.addBelieve('a[ b->c ]') self.a.addBelieve('( ?x[ c->?y ] :- ?x[ b->?y ] )', 'insertrule') for result in self.a.askBelieve('?x[ ?y->?z ]'): assert result in [{'y': 'b', 'x': 'a', 'z': 'c'}, {'y': 'c', 'x': 'a', 'z': 'c'}] self.a.removeBelieve('a[ b->c ]') result = self.a.askBelieve('?x[ ?y->?z ]') assert len(result) == 0 def testFlora2NotFound(self): try: from spade import Flora2KB except: self.skipTest("Could not import Flora2KB") self.assertRaises(Flora2ExecutableNotFound, self.a.configureKB, "Flora2", None, "dummyrunflora") def testSWI(self): try: from spade import SWIKB except: self.skipTest("Could not import SWIKB") try: self.a.configureKB("SWI", None, "swipl") except SWIExecutableNotFound: self.skipTest('SWI-Prolog executable not found on the specified path. Try installing swi-prolog.') if not issubclass(self.a.kb.kb.__class__, SWIKB.SWIKB): self.fail("SWI was not properly configured.") self.a.addBelieve('a(b,c)') self.a.addBelieve('a(c,d)') self.a.addBelieve('( p(_X,_Y) :- a(_X,_Y) )') self.a.addBelieve('( p(_X,_Y) :- a(_X,_Z), p(_Z,_Y) )') for result in self.a.askBelieve('p(X,Y)'): assert result in [{'Y': 'c', 'X': 'b'}, {'Y': 'd', 'X': 'c'}, {'Y': 'd', 'X': 'b'}] self.a.removeBelieve('a(b,c)') for result in self.a.askBelieve('p(X,Y)'): assert result in [{'Y': 'd', 'X': 'c'}] self.a.removeBelieve('a(c,d)') self.assertFalse(self.a.askBelieve('p(X,Y)')) def testSWINotFound(self): try: from spade import SWIKB except: self.skipTest("Could not import SWIKB") self.assertRaises(SWIExecutableNotFound, self.a.configureKB, "SWI", None, "dummyswipl") def testXSB(self): try: from spade import XSBKB except: self.skipTest("Could not import XSBKB") try: self.a.configureKB("XSB", None, "xsb") except XSBExecutableNotFound: self.skipTest('XSB executable not found on the specified path. Try installing xsb') if not issubclass(self.a.kb.kb.__class__, XSBKB.XSBKB): self.fail("XSB was not properly configured.") self.a.addBelieve('a(b,c)') self.a.addBelieve('a(c,d)') self.a.addBelieve('( p(_X,_Y) :- a(_X,_Y) )') self.a.addBelieve('( p(_X,_Y) :- a(_X,_Z), p(_Z,_Y) )') for result in self.a.askBelieve('p(X,Y)'): assert result in [{'Y': 'c', 'X': 'b'}, {'Y': 'd', 'X': 'c'}, {'Y': 'd', 'X': 'b'}] self.a.removeBelieve('a(b,c)') for result in self.a.askBelieve('p(X,Y)'): self.assertEqual(result, {'Y': 'd', 'X': 'c'}) self.a.removeBelieve('a(c,d)') result = self.a.askBelieve('p(X,Y)') self.assertFalse(result) def testXSBNotFound(self): try: from spade import XSBKB except: self.skipTest("Could not import XSBKB") self.assertRaises(XSBExecutableNotFound, self.a.configureKB, "XSB", None, "dummyxsb")