From 5ba9888d267d663fb0ab0dfbfd9346dc20f4c0c1 Mon Sep 17 00:00:00 2001 From: Benjamin Cogrel Date: Sun, 27 Apr 2014 13:26:12 +0200 Subject: [PATCH 1/2] Test boolean list serialization in Turtle --- test/test_turtle_serialize.py | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/test/test_turtle_serialize.py b/test/test_turtle_serialize.py index 9fb672348..13cdee66f 100644 --- a/test/test_turtle_serialize.py +++ b/test/test_turtle_serialize.py @@ -1,19 +1,45 @@ -import rdflib +from rdflib import Graph, URIRef, BNode, RDF, Literal +from rdflib.collection import Collection from rdflib.py3compat import b + def testTurtleFinalDot(): """ https://github.com/RDFLib/rdflib/issues/282 """ - g = rdflib.Graph() - u = rdflib.URIRef("http://ex.org/bob.") + g = Graph() + u = URIRef("http://ex.org/bob.") g.bind("ns", "http://ex.org/") g.add( (u, u, u) ) s=g.serialize(format='turtle') assert b("ns:bob.") not in s +def testTurtleBoolList(): + subject = URIRef("http://localhost/user") + predicate = URIRef("http://localhost/vocab#hasList") + g1 = Graph() + list_item1 = BNode() + list_item2 = BNode() + list_item3 = BNode() + g1.add((subject, predicate, list_item1)) + g1.add((list_item1, RDF.first, Literal(True))) + g1.add((list_item1, RDF.rest, list_item2)) + g1.add((list_item2, RDF.first, Literal(False))) + g1.add((list_item2, RDF.rest, list_item3)) + g1.add((list_item3, RDF.first, Literal(True))) + g1.add((list_item3, RDF.rest, RDF.nil)) + + ttl_dump = g1.serialize(format="turtle") + g2 = Graph() + g2.parse(data=ttl_dump, format="turtle") + + list_id = g2.value(subject, predicate) + bool_list = [i.toPython() for i in Collection(g2, list_id)] + assert bool_list == [True, False, True] + + if __name__ == "__main__": import nose, sys nose.main(defaultTest=sys.argv[0]) From f8cf5e322f9640c8781920a5fa6fd18b6bedf123 Mon Sep 17 00:00:00 2001 From: Benjamin Cogrel Date: Sun, 27 Apr 2014 13:27:30 +0200 Subject: [PATCH 2/2] Fix boolean list serialization in Turtle --- rdflib/plugins/serializers/turtle.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rdflib/plugins/serializers/turtle.py b/rdflib/plugins/serializers/turtle.py index 6525c69c1..cd24d28fd 100644 --- a/rdflib/plugins/serializers/turtle.py +++ b/rdflib/plugins/serializers/turtle.py @@ -359,7 +359,7 @@ def isValidList(self, l): def doList(self, l): while l: item = self.store.value(l, RDF.first) - if item: + if item is not None: self.path(item, OBJECT) self.subjectDone(l) l = self.store.value(l, RDF.rest)