Skip to content

Commit 1a81c33

Browse files
authored
Merge pull request #225 from AKSW/feature/json-ld
Add JSON-LD seriallization
2 parents 79293ca + 6098c0a commit 1a81c33

File tree

4 files changed

+53
-21
lines changed

4 files changed

+53
-21
lines changed

quit/application.py

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,10 +93,54 @@ def sequencePathCompareGt(self, other):
9393
'sparql', UpdateProcessor,
9494
'quit.tools.processor', 'SPARQLUpdateProcessor')
9595

96+
register(
97+
'application/x-turtle', Serializer,
98+
'rdflib.plugins.serializers.turtle', 'TurtleSerializer')
99+
100+
register(
101+
'application/xml', Serializer,
102+
'rdflib.plugins.serializers.rdfxml', 'XMLSerializer')
103+
104+
register(
105+
'application/json', Serializer,
106+
'rdflib_jsonld.serializer', 'JsonLDSerializer')
107+
108+
register(
109+
'application/trig', Serializer,
110+
'rdflib.plugins.serializers.trig', 'TrigSerializer')
111+
112+
register(
113+
'application/xml', ResultSerializer,
114+
'rdflib.plugins.sparql.results.xmlresults', 'XMLResultSerializer')
115+
116+
register(
117+
'application/json', ResultSerializer,
118+
'rdflib.plugins.sparql.results.jsonresults', 'JSONResultSerializer')
119+
96120
register(
97121
'html', ResultSerializer,
98122
'quit.plugins.serializers.results.htmlresults', 'HTMLResultSerializer')
99123

124+
register(
125+
'text/html', ResultSerializer,
126+
'quit.plugins.serializers.results.htmlresults', 'HTMLResultSerializer')
127+
128+
register(
129+
'application/xhtml+xml', ResultSerializer,
130+
'quit.plugins.serializers.results.htmlresults', 'HTMLResultSerializer')
131+
132+
register(
133+
'text/csv', ResultSerializer,
134+
'rdflib.plugins.sparql.results.csvresults', 'CSVResultSerializer')
135+
136+
register(
137+
'application/sparql-results+xml', ResultSerializer,
138+
'rdflib.plugins.sparql.results.xmlresults', 'XMLResultSerializer')
139+
140+
register(
141+
'application/sparql-results+json', ResultSerializer,
142+
'rdflib.plugins.sparql.results.jsonresults', 'JSONResultSerializer')
143+
100144
try:
101145
config = QuitStoreConfiguration(
102146
configfile=args.configfile,

quit/web/modules/endpoint.py

Lines changed: 6 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
__all__ = ('endpoint')
1919

2020
endpoint = Blueprint('endpoint', __name__)
21-
2221
resultSetMimetypesDefault = 'application/sparql-results+xml'
2322
askMimetypesDefault = 'application/sparql-results+xml'
2423
rdfMimetypesDefault = 'text/turtle'
@@ -30,22 +29,8 @@
3029
'application/sparql-results+json', 'application/json', 'text/html',
3130
'application/xhtml+xml']
3231
rdfMimetypes = ['text/turtle', 'application/x-turtle', 'application/rdf+xml', 'application/xml',
33-
'application/n-triples', 'application/trig']
34-
35-
serializations = {
36-
'text/turtle': 'turtle',
37-
'application/x-turtle': 'turtle',
38-
'text/csv': 'csv',
39-
'text/html': 'html',
40-
'application/xhtml+xml': 'html',
41-
'application/sparql-results+xml': 'xml',
42-
'application/xml': 'xml',
43-
'application/rdf+xml': 'xml',
44-
'application/sparql-results+json': 'json',
45-
'application/json': 'json',
46-
'application/n-triples': 'nt',
47-
'application/trig': 'trig'
48-
}
32+
'application/n-triples', 'application/trig', 'application/ld+json',
33+
'application/json']
4934

5035

5136
@endpoint.route("/sparql", defaults={'branch_or_ref': None}, methods=['POST', 'GET'])
@@ -183,7 +168,7 @@ def sparql(branch_or_ref):
183168
if not mimetype:
184169
return make_response("Mimetype: {} not acceptable".format(mimetype), 406)
185170

186-
response = create_result_response(res, mimetype, serializations[mimetype])
171+
response = create_result_response(res, mimetype)
187172
if branch_or_ref:
188173
response.headers["X-CurrentBranch"] = branch_or_ref
189174
if commitid:
@@ -234,7 +219,7 @@ def provenance():
234219
if not mimetype:
235220
return make_response("Mimetype: {} not acceptable".format(mimetype), 406)
236221

237-
return create_result_response(res, mimetype, serializations[mimetype])
222+
return create_result_response(res, mimetype)
238223
else:
239224
if request.accept_mimetypes.best_match(['text/html']) == 'text/html':
240225
return render_template('sparql.html', mode='provenance')
@@ -260,9 +245,9 @@ def _getBestMatchingMimeType(request, queryType):
260245
return mimetype
261246

262247

263-
def create_result_response(res, mimetype, serialization):
248+
def create_result_response(res, mimetype):
264249
"""Create a response with the requested serialization."""
265-
response = make_response(res.serialize(format=serialization), 200)
250+
response = make_response(res.serialize(format=mimetype), 200)
266251
response.headers['Content-Type'] = mimetype
267252
return response
268253

requirements.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ Flask-Cors
44
pygit2==0.28.0
55
sortedcontainers
66
uritools
7+
git+https://github.com/RDFLib/rdflib-jsonld@master
78

89
uwsgi
910
pyinstaller>=3.4

tests/test_app.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1015,6 +1015,8 @@ def testContentNegotiation(self):
10151015
'application/xml': 'application/xml',
10161016
'application/n-triples': 'application/n-triples',
10171017
'application/trig': 'application/trig',
1018+
'application/json': 'application/json',
1019+
'application/ld+json': 'application/ld+json',
10181020
'foo/bar,text/turtle;q=0.5': 'text/turtle'}]}
10191021

10201022
for ep_path in ['/sparql', '/provenance']:

0 commit comments

Comments
 (0)