Longturtle improvements (#2500) · RDFLib/rdflib@5ee8bd7 (original) (raw)

`@@ -13,7 +13,7 @@

`

13

13

` on the start of the next line

`

14

14

`* uses default encoding (encode()) is used instead of "latin-1"

`

15

15

``

16

``

`-

`

``

16

`+

`

17

17

`"""

`

18

18

``

19

19

`from rdflib.exceptions import Error

`

`@@ -101,7 +101,6 @@ def serialize(self, stream, base=None, encoding=None, spacious=None, **args):

`

101

101

`self.write("\n")

`

102

102

``

103

103

`self.endDocument()

`

104

``

`-

self.write("\n")

`

105

104

``

106

105

`self.base = None

`

107

106

``

`@@ -168,21 +167,20 @@ def s_default(self, subject):

`

168

167

`self.path(subject, SUBJECT)

`

169

168

`self.write("\n" + self.indent())

`

170

169

`self.predicateList(subject)

`

171

``

`-

self.write(" ;\n.")

`

``

170

`+

self.write("\n.")

`

172

171

`return True

`

173

172

``

174

173

`def s_squared(self, subject):

`

175

174

`if (self._references[subject] > 0) or not isinstance(subject, BNode):

`

176

175

`return False

`

177

176

`self.write("\n" + self.indent() + "[]")

`

178

``

`-

self.predicateList(subject)

`

``

177

`+

self.predicateList(subject, newline=False)

`

179

178

`self.write(" ;\n.")

`

180

179

`return True

`

181

180

``

182

181

`def path(self, node, position, newline=False):

`

183

182

`if not (

`

184

``

`-

self.p_squared(node, position, newline)

`

185

``

`-

or self.p_default(node, position, newline)

`

``

183

`+

self.p_squared(node, position) or self.p_default(node, position, newline)

`

186

184

` ):

`

187

185

`raise Error("Cannot serialize node '%s'" % (node,))

`

188

186

``

`@@ -207,7 +205,11 @@ def label(self, node, position):

`

207

205

``

208

206

`return self.getQName(node, position == VERB) or node.n3()

`

209

207

``

210

``

`-

def p_squared(self, node, position, newline=False):

`

``

208

`+

def p_squared(

`

``

209

`+

self,

`

``

210

`+

node,

`

``

211

`+

position,

`

``

212

`+

):

`

211

213

`if (

`

212

214

`not isinstance(node, BNode)

`

213

215

`or node in self._serialized

`

`@@ -216,23 +218,19 @@ def p_squared(self, node, position, newline=False):

`

216

218

` ):

`

217

219

`return False

`

218

220

``

219

``

`-

if not newline:

`

220

``

`-

self.write(" ")

`

221

``

-

222

221

`if self.isValidList(node):

`

223

222

`# this is a list

`

224

223

`self.depth += 2

`

225

``

`-

self.write("(\n")

`

226

``

`-

self.depth -= 1

`

``

224

`+

self.write(" (\n")

`

``

225

`+

self.depth -= 2

`

227

226

`self.doList(node)

`

228

``

`-

self.depth -= 1

`

229

``

`-

self.write("\n" + self.indent(1) + ")")

`

``

227

`+

self.write("\n" + self.indent() + ")")

`

230

228

`else:

`

``

229

`+

this is a Blank Node

`

231

230

`self.subjectDone(node)

`

232

``

`-

self.depth += 2

`

233

``

`-

self.write("[\n")

`

234

``

`-

self.depth -= 1

`

235

``

`-

self.predicateList(node, newline=False)

`

``

231

`+

self.write("\n" + self.indent(1) + "[\n")

`

``

232

`+

self.depth += 1

`

``

233

`+

self.predicateList(node)

`

236

234

`self.depth -= 1

`

237

235

`self.write("\n" + self.indent(1) + "]")

`

238

236

``

`@@ -279,6 +277,7 @@ def predicateList(self, subject, newline=False):

`

279

277

`self.write(" ;\n" + self.indent(1))

`

280

278

`self.verb(predicate, newline=True)

`

281

279

`self.objectList(properties[predicate])

`

``

280

`+

self.write(" ;")

`

282

281

``

283

282

`def verb(self, node, newline=False):

`

284

283

`self.path(node, VERB, newline)

`

`@@ -291,11 +290,13 @@ def objectList(self, objects):

`

291

290

`self.depth += depthmod

`

292

291

`first_nl = False

`

293

292

`if count > 1:

`

294

``

`-

self.write("\n" + self.indent(1))

`

``

293

`+

if not isinstance(objects[0], BNode):

`

``

294

`+

self.write("\n" + self.indent(1))

`

295

295

`first_nl = True

`

296

296

`self.path(objects[0], OBJECT, newline=first_nl)

`

297

297

`for obj in objects[1:]:

`

298

``

`-

self.write(" ,\n")

`

299

``

`-

self.write(self.indent(1))

`

``

298

`+

self.write(" ,")

`

``

299

`+

if not isinstance(obj, BNode):

`

``

300

`+

self.write("\n" + self.indent(1))

`

300

301

`self.path(obj, OBJECT, newline=True)

`

301

302

`self.depth -= depthmod

`