def test_merge(self): # Load test data into named graph related = URIRef("http://vivo.school.edu/individual/sports") uri1 = URIRef("http://vivo.school.edu/individual/topic1") uri2 = URIRef("http://vivo.school.edu/individual/topic2") my_vstore = VIVOUtilsGraph() named_graph = URIRef("http://localhost/test/data") g = Graph() g.parse(data=sample3, format="turtle") my_vstore.bulk_add(named_graph, g) add, remove = my_vstore.merge_uris(uri1, uri2, named_graph) # make sure statements have been moved to new uri self.assertTrue(related in [u for u in add.subjects(predicate=SKOS.narrower, object=uri1)]) self.assertEqual(u"Hardball", add.value(subject=uri1, predicate=SKOS.altLabel).toPython()) # make sure statements are retracted self.assertTrue(related in [u for u in remove.subjects(predicate=SKOS.narrower, object=uri2)]) self.assertEqual(u"Hardball", remove.value(subject=uri2, predicate=SKOS.altLabel).toPython()) # do the update rm_stmts = my_vstore.bulk_remove(named_graph, remove) add_stmts = my_vstore.bulk_add(named_graph, add) # test merge sizes self.assertEqual(rm_stmts, 4) self.assertEqual(add_stmts, 4) self.assertEqual(rm_stmts, add_stmts) # retrieve a merged statement from store self.assertEqual(u"Hardball", my_vstore.value(subject=uri1, predicate=SKOS.altLabel).toPython()) self.assertEqual(None, my_vstore.value(subject=uri2, predicate=SKOS.altLabel))
def test_bulk_remove(self): named_graph = URIRef("http://localhost/test/data") bu = VIVOUtilsGraph() added = bu.bulk_add(named_graph, self.g, size=4) # Remove 4 triples. rg = Graph().parse(data=sample2, format="turtle") removed = bu.bulk_remove(named_graph, rg, size=2) self.assertEqual(removed, 4) # Total triples left should be 8 self.assertEqual(len(bu), 8)
def test_bulk_add(self): g = Graph().parse(data=sample, format="turtle") named_graph = URIRef("http://localhost/test/data") bu = VIVOUtilsGraph() added = bu.bulk_add(named_graph, g, size=4) self.assertEqual(added, 12)