From 71b2611a83b989e49a865cdce235f6a01071bace Mon Sep 17 00:00:00 2001 From: Zach Zundel Date: Wed, 27 May 2020 12:33:13 -0600 Subject: [PATCH 1/2] Loop over sparql results --- lib/sparql/sparql.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/lib/sparql/sparql.js b/lib/sparql/sparql.js index db4355430..e0da54cd8 100644 --- a/lib/sparql/sparql.js +++ b/lib/sparql/sparql.js @@ -127,7 +127,11 @@ function query (sparql, graphUri, accept, explorer = false) { function queryJson (sparql, graphUri, explorer = false) { // const timer = Timer('sparql query') - return query(sparql, graphUri, 'application/sparql-results+json', explorer).then(parseResult, handleError) + if (sparql.includes('LIMIT')) { + return query(sparql, graphUri, 'application/sparql-results+json', explorer).then(parseResult, handleError) + } else { + return queryJsonStaggered(sparql, graphUri, explorer) + } function parseResult (res) { // timer() @@ -154,7 +158,7 @@ function queryJson (sparql, graphUri, explorer = false) { } } -function queryJsonStaggered (sparql, graphUri) { +function queryJsonStaggered (sparql, graphUri, explorer = false) { var offset = 0 var limit = config.get('staggeredQueryLimit') @@ -165,7 +169,7 @@ function queryJsonStaggered (sparql, graphUri) { function performQuery () { console.log('queryJsonStaggered: offset ' + offset + ', limit ' + limit + ', ' + resultsUnion.length + ' results so far') - return queryJson(sparql + ' OFFSET ' + offset + ' LIMIT ' + limit, graphUri).then((results) => { + return queryJson(sparql + ' OFFSET ' + offset + ' LIMIT ' + limit, graphUri, explorer).then((results) => { // console.log('qj results') // console.log(JSON.stringify(results)) From b07cfe6f5ad0397d0a1f8ab2657ac982d3dac760 Mon Sep 17 00:00:00 2001 From: Zach Zundel Date: Fri, 29 May 2020 13:42:53 -0600 Subject: [PATCH 2/2] Add sorting --- lib/sparql/sparql.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/sparql/sparql.js b/lib/sparql/sparql.js index e0da54cd8..a3a96dda2 100644 --- a/lib/sparql/sparql.js +++ b/lib/sparql/sparql.js @@ -163,6 +163,13 @@ function queryJsonStaggered (sparql, graphUri, explorer = false) { var limit = config.get('staggeredQueryLimit') var resultsUnion = [] + if (!sparql.includes('ORDER BY')) { + let bound = sparql.match(/\?[A-Za-z0-9_]+/) + if (bound !== null) { + let term = bound[0] + sparql = sparql + ' ORDER BY ' + term + } + } return performQuery()