Skip to content

Commit

Permalink
Merge pull request #1310 from iafork/fix_txtresult_column_order
Browse files Browse the repository at this point in the history
Don't sort variables in TXTResultSerializer
  • Loading branch information
nicholascar committed May 16, 2021
2 parents cb30688 + a14777f commit a9aaef1
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 2 deletions.
2 changes: 1 addition & 1 deletion rdflib/plugins/sparql/results/txtresults.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ def c(s, w):
return "(no results)\n"
else:

keys = sorted(self.result.vars)
keys = self.result.vars
maxlen = [0] * len(keys)
b = [
[_termString(r[k], namespace_manager) for k in keys]
Expand Down
39 changes: 38 additions & 1 deletion test/test_sparql.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
from rdflib.plugins.sparql import sparql, prepareQuery
from rdflib import Graph, URIRef, Literal, BNode, ConjunctiveGraph
from rdflib.namespace import Namespace, RDF, RDFS
from rdflib.plugins.sparql import prepareQuery
from rdflib.compare import isomorphic
from rdflib.term import Variable

from nose.tools import eq_

Expand Down Expand Up @@ -163,6 +163,43 @@ def test_named_filter_graph_query():
initNs={'ex': ex})) == [(Literal('Susan'),)]


def test_txtresult():
data = f"""\
@prefix rdfs: <{str(RDFS)}> .
rdfs:Class a rdfs:Class ;
rdfs:isDefinedBy <http://www.w3.org/2000/01/rdf-schema#> ;
rdfs:label "Class" ;
rdfs:comment "The class of classes." ;
rdfs:subClassOf rdfs:Resource .
"""
graph = Graph()
graph.parse(data=data, format="turtle")
result = graph.query(
"""\
SELECT ?class ?superClass ?label ?comment WHERE {
?class rdf:type rdfs:Class.
?class rdfs:label ?label.
?class rdfs:comment ?comment.
?class rdfs:subClassOf ?superClass.
}
"""
)
vars = [
Variable("class"),
Variable("superClass"),
Variable("label"),
Variable("comment"),
]
assert result.type == "SELECT"
assert len(result) == 1
assert result.vars == vars
txtresult = result.serialize(format="txt")
lines = txtresult.decode().splitlines()
assert len(lines) == 3
vars_check = [Variable(var.strip()) for var in lines[0].split("|")]
assert vars_check == vars


if __name__ == "__main__":
import nose

Expand Down

0 comments on commit a9aaef1

Please sign in to comment.