Skip to content

Commit 1d6c07d

Browse files
committed
Client-side SPARQL query execution uses POST instead of GET
XPath function optimizations
1 parent 9b0022b commit 1d6c07d

File tree

5 files changed

+22
-39
lines changed

5 files changed

+22
-39
lines changed

src/main/webapp/static/com/atomgraph/linkeddatahub/xsl/bootstrap/2.3.2/client/block.xsl

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -445,8 +445,6 @@ exclude-result-prefixes="#all"
445445
<xsl:param name="ignored" as="item()?"/>
446446

447447
<xsl:variable name="container" select="$context('container')" as="element()"/>
448-
449-
<xsl:message>ldh:hide-block-progress-bar</xsl:message>
450448

451449
<!-- hide the progress bar -->
452450
<xsl:for-each select="$container/ancestor::div[contains-token(@class, 'span12')][contains-token(@class, 'progress')][contains-token(@class, 'active')]">

src/main/webapp/static/com/atomgraph/linkeddatahub/xsl/bootstrap/2.3.2/client/block/chart.xsl

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -776,18 +776,16 @@ exclude-result-prefixes="#all"
776776
<xsl:variable name="service-uri" select="xs:anyURI(key('resources', $query-uri)/ldh:service/@rdf:resource)" as="xs:anyURI?"/>
777777
<xsl:variable name="service" select="if ($service-uri) then key('resources', $service-uri, document(ac:build-uri(ac:document-uri($service-uri), map{ 'accept': 'application/rdf+xml' }))) else ()" as="element()?"/> <!-- TO-DO: refactor asynchronously -->
778778
<xsl:variable name="endpoint" select="($service/sd:endpoint/@rdf:resource/xs:anyURI(.), sd:endpoint())[1]" as="xs:anyURI"/>
779-
<xsl:variable name="results-uri" select="ac:build-uri($endpoint, map{ 'query': $query-string })" as="xs:anyURI"/>
780-
<xsl:variable name="request-uri" select="ldh:href($results-uri, map{})" as="xs:anyURI"/>
779+
<xsl:variable name="request-uri" select="ldh:href($endpoint, map{})" as="xs:anyURI"/>
781780

782781
<!-- Mark query response as complete -->
783782
<xsl:sequence select="ldh:update-progress-counter($context('cache'), $context, 'complete', ())"/>
784783

785-
<xsl:variable name="request" select="map{ 'method': 'GET', 'href': $request-uri, 'headers': map{ 'Accept': 'application/sparql-results+xml,application/rdf+xml;q=0.9' } }" as="map(*)"/>
784+
<xsl:variable name="request" select="map{ 'method': 'POST', 'href': $request-uri, 'media-type': 'application/sparql-query', 'body': $query-string, 'headers': map{ 'Accept': 'application/sparql-results+xml,application/rdf+xml;q=0.9' } }" as="map(*)"/>
786785
<xsl:sequence select="
787786
map{
788787
'request': $request,
789788
'endpoint': $endpoint,
790-
'results-uri': $results-uri,
791789
'block': $block,
792790
'container': $container,
793791
'chart-canvas-id': $canvas-id,
@@ -833,7 +831,6 @@ exclude-result-prefixes="#all"
833831
<xsl:variable name="response" select="$context('response')" as="map(*)"/>
834832
<xsl:variable name="block" select="$context('block')" as="element()"/>
835833
<xsl:variable name="container" select="$context('container')" as="element()"/>
836-
<xsl:variable name="results-uri" select="$context('results-uri')" as="xs:anyURI"/>
837834
<xsl:variable name="chart-canvas-id" select="$context('chart-canvas-id')" as="xs:string"/>
838835
<xsl:variable name="chart-type" select="$context('chart-type')" as="xs:anyURI"/>
839836
<xsl:variable name="category" select="$context('category')" as="xs:string?"/>

src/main/webapp/static/com/atomgraph/linkeddatahub/xsl/bootstrap/2.3.2/client/block/query.xsl

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -273,9 +273,8 @@ exclude-result-prefixes="#all"
273273
<xsl:variable name="container" select="$block" as="element()"/> <!-- since we're not in content mode -->
274274
<xsl:variable name="block-id" select="$block/@id" as="xs:string"/>
275275
<xsl:variable name="block-uri" select="if ($block/@about) then $block/@about else xs:anyURI(ac:absolute-path(ldh:base-uri(.)) || '#' || $block-id)" as="xs:anyURI"/>
276-
<xsl:variable name="results-uri" select="ac:build-uri($endpoint, map{ 'query': $query-string })" as="xs:anyURI"/>
277-
<xsl:variable name="request-uri" select="ldh:href($results-uri, map{})" as="xs:anyURI"/>
278-
<xsl:variable name="request" select="map{ 'method': 'GET', 'href': $request-uri, 'headers': map{ 'Accept': 'application/sparql-results+xml,application/rdf+xml;q=0.9' } }" as="map(xs:string, item())"/>
276+
<xsl:variable name="request-uri" select="ldh:href($endpoint, map{})" as="xs:anyURI"/>
277+
<xsl:variable name="request" select="map{ 'method': 'POST', 'href': $request-uri, 'media-type': 'application/sparql-query', 'body': $query-string, 'headers': map{ 'Accept': 'application/sparql-results+xml,application/rdf+xml;q=0.9' } }" as="map(xs:string, item())"/>
279278
<xsl:variable name="results-container-id" select="$block-id || '-query-results'" as="xs:string"/>
280279
<xsl:variable name="results-container-class" select="'sparql-query-results'" as="xs:string"/>
281280
<xsl:variable name="results-container-about" select="xs:anyURI(ac:absolute-path(ldh:base-uri(.)) || '#' || $results-container-id)" as="xs:anyURI"/>
@@ -330,7 +329,6 @@ exclude-result-prefixes="#all"
330329
<ixsl:schedule-action http-request="$request">
331330
<xsl:call-template name="onSPARQLResultsLoad">
332331
<xsl:with-param name="endpoint" select="$endpoint"/>
333-
<xsl:with-param name="results-uri" select="$results-uri"/>
334332
<xsl:with-param name="cache" select="$cache"/>
335333
<xsl:with-param name="container" select="$container"/>
336334
<xsl:with-param name="chart-canvas-id" select="$block-id || '-chart-canvas'"/>
@@ -507,19 +505,18 @@ exclude-result-prefixes="#all"
507505
<xsl:message>Can only open DESCRIBE or CONSTRUCT query results</xsl:message>
508506
</xsl:when>
509507
<xsl:otherwise>
510-
<xsl:variable name="results-uri" select="ac:build-uri($endpoint, map{ 'query': $query-string })" as="xs:anyURI"/>
511-
<xsl:variable name="href" select="ldh:href($results-uri, map{})" as="xs:anyURI"/>
508+
<xsl:variable name="href" select="ldh:href($endpoint, map{})" as="xs:anyURI"/>
512509

513510
<ixsl:set-style name="cursor" select="'progress'" object="ixsl:page()//body"/>
514-
511+
515512
<xsl:if test="ixsl:contains(ixsl:get(ixsl:window(), 'LinkedDataHub'), 'saxonController')">
516513
<xsl:message>Aborting HTTP request that has already been sent</xsl:message>
517514
<xsl:sequence select="ixsl:call(ixsl:get(ixsl:window(), 'LinkedDataHub.saxonController'), 'abort', [])"/>
518515
</xsl:if>
519516
<xsl:variable name="controller" select="ixsl:abort-controller()"/>
520517
<ixsl:set-property name="saxonController" select="$controller" object="ixsl:get(ixsl:window(), 'LinkedDataHub')"/>
521518

522-
<xsl:variable name="request" select="map{ 'method': 'GET', 'href': $href, 'headers': map{ 'Accept': 'application/xhtml+xml' } }" as="map(*)"/>
519+
<xsl:variable name="request" select="map{ 'method': 'POST', 'href': $href, 'media-type': 'application/sparql-query', 'body': $query-string, 'headers': map{ 'Accept': 'application/xhtml+xml' } }" as="map(*)"/>
523520
<xsl:variable name="context" select="
524521
map{
525522
'request': $request,
@@ -541,7 +538,6 @@ exclude-result-prefixes="#all"
541538
<xsl:template name="onSPARQLResultsLoad">
542539
<xsl:context-item as="map(*)" use="required"/>
543540
<xsl:param name="container" as="element()"/>
544-
<xsl:param name="results-uri" as="xs:anyURI"/>
545541
<xsl:param name="cache" as="item()"/>
546542
<xsl:param name="chart-canvas-id" as="xs:string"/>
547543
<xsl:param name="chart-type" select="xs:anyURI('&ac;Table')" as="xs:anyURI"/>

src/main/webapp/static/com/atomgraph/linkeddatahub/xsl/bootstrap/2.3.2/client/block/view.xsl

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -380,9 +380,8 @@ exclude-result-prefixes="#all"
380380
<xsl:variable name="select-json-string" select="xml-to-json($select-xml)" as="xs:string"/>
381381
<xsl:variable name="select-json" select="ixsl:call(ixsl:get(ixsl:window(), 'JSON'), 'parse', [ $select-json-string ])"/>
382382
<xsl:variable name="query-string" select="ixsl:call(ixsl:call(ixsl:get(ixsl:get(ixsl:window(), 'SPARQLBuilder'), 'SelectBuilder'), 'fromQuery', [ $select-json ]), 'toString', [])" as="xs:string"/>
383-
<xsl:variable name="results-uri" select="ac:build-uri($endpoint, map{ 'query': $query-string })" as="xs:anyURI"/>
384-
<xsl:variable name="request-uri" select="ldh:href($results-uri, map{})" as="xs:anyURI"/>
385-
<xsl:variable name="request" select="map{ 'method': 'GET', 'href': $request-uri, 'headers': map { 'Accept': 'application/sparql-results+xml' } }" as="map(*)"/>
383+
<xsl:variable name="request-uri" select="ldh:href($endpoint, map{})" as="xs:anyURI"/>
384+
<xsl:variable name="request" select="map{ 'method': 'POST', 'href': $request-uri, 'media-type': 'application/sparql-query', 'body': $query-string, 'headers': map{ 'Accept': 'application/sparql-results+xml' } }" as="map(*)"/>
386385
<xsl:variable name="context" as="map(*)" select="
387386
map {
388387
'request': $request,
@@ -530,18 +529,17 @@ exclude-result-prefixes="#all"
530529
<xsl:variable name="query-json-string" select="xml-to-json($query-xml)" as="xs:string"/>
531530
<xsl:variable name="query-json" select="ixsl:call(ixsl:get(ixsl:window(), 'JSON'), 'parse', [ $query-json-string ])"/>
532531
<xsl:variable name="query-string" select="ixsl:call(ixsl:call(ixsl:get(ixsl:get(ixsl:window(), 'SPARQLBuilder'), 'SelectBuilder'), 'fromQuery', [ $query-json ]), 'toString', [])" as="xs:string"/>
533-
<xsl:variable name="results-uri" select="ac:build-uri($endpoint, map{ 'query': $query-string })" as="xs:anyURI"/>
534-
<xsl:variable name="request-uri" select="ldh:href($results-uri, map{})" as="xs:anyURI"/>
532+
<xsl:variable name="request-uri" select="ldh:href($endpoint, map{})" as="xs:anyURI"/>
535533
<xsl:variable name="headers" as="map(xs:string, xs:string)">
536534
<xsl:map>
537535
<xsl:map-entry key="'Accept'" select="'application/rdf+xml'"/>
538-
536+
539537
<xsl:if test="$refresh-content">
540538
<xsl:map-entry key="'Cache-Control'" select="'no-cache, no-store, must-revalidate'"/>
541539
</xsl:if>
542540
</xsl:map>
543541
</xsl:variable>
544-
<xsl:variable name="request" select="map{ 'method': 'GET', 'href': $request-uri, 'headers': $headers }" as="map(*)"/>
542+
<xsl:variable name="request" select="map{ 'method': 'POST', 'href': $request-uri, 'media-type': 'application/sparql-query', 'body': $query-string, 'headers': $headers }" as="map(*)"/>
545543
<xsl:sequence select="
546544
map{
547545
'request': $request,
@@ -1141,9 +1139,8 @@ exclude-result-prefixes="#all"
11411139
<xsl:variable name="query-json-string" select="xml-to-json($select-xml)" as="xs:string"/>
11421140
<xsl:variable name="query-json" select="ixsl:call(ixsl:get(ixsl:window(), 'JSON'), 'parse', [ $query-json-string ])"/>
11431141
<xsl:variable name="query-string" select="ixsl:call(ixsl:call(ixsl:get(ixsl:get(ixsl:window(), 'SPARQLBuilder'), 'SelectBuilder'), 'fromQuery', [ $query-json ]), 'toString', [])" as="xs:string"/>
1144-
<xsl:variable name="results-uri" select="ac:build-uri($endpoint, map{ 'query': $query-string })" as="xs:anyURI"/>
1145-
<xsl:variable name="request-uri" select="ldh:href($results-uri, map{})" as="xs:anyURI"/>
1146-
<xsl:variable name="request" select="map{ 'method': 'GET', 'href': $request-uri, 'headers': map{ 'Accept': 'application/sparql-results+xml' } }" as="map(*)"/>
1142+
<xsl:variable name="request-uri" select="ldh:href($endpoint, map{})" as="xs:anyURI"/>
1143+
<xsl:variable name="request" select="map{ 'method': 'POST', 'href': $request-uri, 'media-type': 'application/sparql-query', 'body': $query-string, 'headers': map{ 'Accept': 'application/sparql-results+xml' } }" as="map(*)"/>
11471144
<xsl:variable name="context" as="map(*)" select="
11481145
map{
11491146
'request': $request,
@@ -1540,9 +1537,8 @@ exclude-result-prefixes="#all"
15401537
<xsl:variable name="select-json-string" select="xml-to-json($select-xml)" as="xs:string"/>
15411538
<xsl:variable name="select-json" select="ixsl:call(ixsl:get(ixsl:window(), 'JSON'), 'parse', [ $select-json-string ])"/>
15421539
<xsl:variable name="query-string" select="ixsl:call(ixsl:call(ixsl:get(ixsl:get(ixsl:window(), 'SPARQLBuilder'), 'SelectBuilder'), 'fromQuery', [ $select-json ]), 'toString', [])" as="xs:string"/>
1543-
<xsl:variable name="results-uri" select="ac:build-uri($endpoint, map{ 'query': $query-string })" as="xs:anyURI"/>
1544-
<xsl:variable name="request-uri" select="ldh:href($results-uri, map{})" as="xs:anyURI"/>
1545-
<xsl:variable name="request" select="map{ 'method': 'GET', 'href': $request-uri, 'headers': map{ 'Accept': 'application/sparql-results+xml' } }" as="map(*)"/>
1540+
<xsl:variable name="request-uri" select="ldh:href($endpoint, map{})" as="xs:anyURI"/>
1541+
<xsl:variable name="request" select="map{ 'method': 'POST', 'href': $request-uri, 'media-type': 'application/sparql-query', 'body': $query-string, 'headers': map{ 'Accept': 'application/sparql-results+xml' } }" as="map(*)"/>
15461542
<xsl:variable name="context" as="map(*)" select="
15471543
map{
15481544
'request': $request,

src/main/webapp/static/com/atomgraph/linkeddatahub/xsl/bootstrap/2.3.2/client/functions.xsl

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -153,12 +153,10 @@ exclude-result-prefixes="#all"
153153
</xsl:value-of>
154154
</xsl:variable>
155155

156-
<xsl:variable name="js-statement" as="element()">
157-
<root statement="new google.visualization.DataTable(JSON.parse(String.raw`{$json}`))"/>
158-
</xsl:variable>
159-
<xsl:sequence select="ixsl:eval(string($js-statement/@statement))"/>
156+
<xsl:variable name="json-obj" select="ixsl:call(ixsl:get(ixsl:window(), 'JSON'), 'parse', [ $json ])"/>
157+
<xsl:sequence select="ixsl:new('google.visualization.DataTable', [ $json-obj ])"/>
160158
</xsl:function>
161-
159+
162160
<xsl:function name="ac:sparql-results-data-table">
163161
<xsl:param name="results" as="document-node()"/>
164162
<xsl:param name="category" as="xs:string?"/>
@@ -172,12 +170,10 @@ exclude-result-prefixes="#all"
172170
</xsl:value-of>
173171
</xsl:variable>
174172

175-
<xsl:variable name="js-statement" as="element()">
176-
<root statement="new google.visualization.DataTable(JSON.parse(String.raw`{$json}`))"/>
177-
</xsl:variable>
178-
<xsl:sequence select="ixsl:eval(string($js-statement/@statement))"/>
173+
<xsl:variable name="json-obj" select="ixsl:call(ixsl:get(ixsl:window(), 'JSON'), 'parse', [ $json ])"/>
174+
<xsl:sequence select="ixsl:new('google.visualization.DataTable', [ $json-obj ])"/>
179175
</xsl:function>
180-
176+
181177
<xsl:function name="ldh:parse-html" as="document-node()">
182178
<xsl:param name="string" as="xs:string"/>
183179
<xsl:param name="mime-type" as="xs:string"/>

0 commit comments

Comments
 (0)