Ejemplo n.º 1
0
class TestPackratDoesNotCauseProblems(unittest.TestCase):
    '''
    Packrat speeds up parsing, by memoisation, so check
    that this does not cause any side-effects
    '''
    
    def setUp(self):
        self.store1 = IndexedTripleStore()
        self.store2 = IndexedTripleStore()
        
        self.store1.add_triples(('a1', 'http://xmlns.com/foaf/0.1/name', 'name-a1'))
        self.store2.add_triples(('a2', 'foaf:name', 'name-a2'))
    
    def test_prefixes_not_cached(self):
        p1 = self.store1.parse_query("""PREFIX foaf: <http://xmlns.com/foaf/0.1/>
        SELECT ?x ?name
        WHERE  { ?x foaf:name ?name }""")
        
        name, variables, pattern = p1.query
        
        self.assertTrue(isinstance(pattern, Pattern))
        triple = pattern.pattern
        self.assertTrue(isinstance(triple[0], VariableExpression))
        self.assertEquals('x', triple[0].name)
        self.assertEqual('http://xmlns.com/foaf/0.1/name', triple[1].value)
        self.assertTrue(isinstance(triple[2], VariableExpression))
        self.assertEqual('name', triple[2].name)
        
        p2 = self.store2.parse_query("""
                SELECT ?x ?name
                WHERE  { ?x foaf:name ?name }""")
        
        name, variables, pattern = p2.query
        
        self.assertTrue(isinstance(pattern, Pattern))
        triple = pattern.pattern
        self.assertTrue(isinstance(triple[0], VariableExpression))
        self.assertEquals('x', triple[0].name)
        self.assertEqual('foaf:name', triple[1].value)
        self.assertTrue(isinstance(triple[2], VariableExpression))
        self.assertEqual('name', triple[2].name)
    
    def test_store_not_cached(self):
        q1 = self.store1.query("""
            SELECT ?x ?property ?name
            WHERE  { ?x ?property ?name }""")
        self.assertEqual([('a1', 'http://xmlns.com/foaf/0.1/name', 'name-a1')],
                         list(q1))

        q2 = self.store2.query("""
             SELECT ?x ?property ?name
             WHERE  { ?x ?property ?name }""")
        self.assertEqual([('a2', 'foaf:name', 'name-a2')],
                          list(q2))
Ejemplo n.º 2
0
 def setUp(self):
     self.store1 = IndexedTripleStore()
     self.store2 = IndexedTripleStore()
     
     self.store1.add_triples(('a1', 'http://xmlns.com/foaf/0.1/name', 'name-a1'))
     self.store2.add_triples(('a2', 'foaf:name', 'name-a2'))