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_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_yielder(self):
        """
        Test yielder returns proper number of triple sets.
        """
        g = Graph().parse(data=sample, format="turtle")
        bu = VIVOUtilsGraph()
        chunks = 0
        for num, nt in bu.nt_yielder(g, 4):
            chunks += 1
        self.assertEqual(chunks, 3)

        chunks = 0
        for _, _ in bu.nt_yielder(g, 20):
            chunks += 1
        self.assertEqual(chunks, 1)
 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)