# tests for the turtle2 serializer
from rdflib import Graph
def test_turtle2():
g = Graph()
g.parse(
data="""
@prefix ex: .
@prefix ex2: .
@prefix rdf: .
@prefix xsd: .
a ex:Thing , ex:OtherThing ;
ex:name "Thing", "Other Thing"@en , "もの"@ja , "rzecz"@pl ;
ex:singleValueProp "propval" ;
ex:multiValueProp "propval 1" ;
ex:multiValueProp "propval 2" ;
ex:multiValueProp "propval 3" ;
ex:multiValueProp "propval 4" ;
ex:bnObj [
ex:singleValueProp "propval" ;
ex:multiValueProp "propval 1" ;
ex:multiValueProp "propval 2" ;
ex:bnObj [
ex:singleValueProp "propval" ;
ex:multiValueProp "propval 1" ;
ex:multiValueProp "propval 2" ;
ex:bnObj [
ex:singleValueProp "propval" ;
ex:multiValueProp "propval 1" ;
ex:multiValueProp "propval 2" ;
] ,
[
ex:singleValueProp "propval" ;
ex:multiValueProp "propval 1" ;
ex:multiValueProp "propval 2" ;
] ,
[
ex:singleValueProp "propval" ;
ex:multiValueProp "propval 1" ;
ex:multiValueProp "propval 2" ;
] ;
] ;
] ;
.
ex:b
rdf:type ex:Thing ;
ex:name "B" ;
ex2:name "B" .
ex:c
rdf:type ex:Thing ;
ex:name "C" ;
ex:lst2 (
ex:one
ex:two
ex:three
) ;
ex:lst (
ex:one
ex:two
ex:three
) ,
(
ex:four
ex:fize
ex:six
) ;
ex:bnObj [
ex:lst (
ex:one
ex:two
ex:three
) ,
(
ex:four
ex:fize
ex:six
) ;
] .
""",
format="turtle",
)
s = g.serialize(format="turtle2")
lines = s.split("\n")
assert "ex:b" in lines
assert " a ex:Thing ;" in lines
assert (
""" ex2:name "B" ;
."""
in s
)
assert (
""" (
ex:one
ex:two
ex:three
) ,"""
in s
)
assert ' ex:singleValueProp "propval" ;' in lines
expected_s = """PREFIX ex:
PREFIX ex2:
PREFIX rdf:
ex:b
a ex:Thing ;
ex:name "B" ;
ex2:name "B" ;
.
ex:c
a ex:Thing ;
ex:bnObj [
ex:lst
(
ex:one
ex:two
ex:three
) ,
(
ex:four
ex:fize
ex:six
)
] ;
ex:lst
(
ex:four
ex:fize
ex:six
) ,
(
ex:one
ex:two
ex:three
) ;
ex:lst2 (
ex:one
ex:two
ex:three
) ;
ex:name "C" ;
.
a
ex:OtherThing ,
ex:Thing ;
ex:bnObj [
ex:bnObj [
ex:bnObj
[
ex:multiValueProp
"propval 1" ,
"propval 2" ;
ex:singleValueProp "propval"
] ,
[
ex:multiValueProp
"propval 1" ,
"propval 2" ;
ex:singleValueProp "propval"
] ,
[
ex:multiValueProp
"propval 1" ,
"propval 2" ;
ex:singleValueProp "propval"
] ;
ex:multiValueProp
"propval 1" ,
"propval 2" ;
ex:singleValueProp "propval"
] ;
ex:multiValueProp
"propval 1" ,
"propval 2" ;
ex:singleValueProp "propval"
] ;
ex:multiValueProp
"propval 1" ,
"propval 2" ,
"propval 3" ,
"propval 4" ;
ex:name
"Thing" ,
"Other Thing"@en ,
"もの"@ja ,
"rzecz"@pl ;
ex:singleValueProp "propval" ;
.
"""
assert s == expected_s
# re-parse test
g2 = Graph().parse(data=s) # turtle
assert len(g2) == len(g)